C# JWT token has empty claims

Viewed 271

So, on signign in I create a JWT token:

var identity = AuthOptions.GetIdentity(user);
var now = DateTime.Now;

var jwt = new JwtSecurityToken(
                issuer: AuthOptions.Issuer,
                audience: AuthOptions.Audience,
                notBefore: now,
                claims: identity.Claims,
                expires: null,
                signingCredentials: new SigningCredentials(AuthOptions.GetSymmetricSecurityKey(),
                    SecurityAlgorithms.HmacSha256));
var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

Where AuthOptions.GetIdentity is:

public static ClaimsIdentity GetIdentity(User user)
{
     if (user == null) return null;
            
     var claims = new List<Claim>
     {
        new Claim(ClaimsIdentity.DefaultNameClaimType, user.Uid.ToString())
     };
     ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType,
                ClaimsIdentity.DefaultRoleClaimType);
     return claimsIdentity;
}

I have Claims in identity variable (I saw this in the debugger), but when I try to get these claims from Token:

[AuthorizationNeeded]
[HttpPut]
[Route("/xxx/yyy")]
public IActionResult OnXxxYyy([FromQuery(Name = "xxx_uid")] Guid xxxUid)
{
    Guid userUid = Guid.Empty;
    Guid.TryParse(User.Claims.ToList()[0].Value, out userUid);

    if (userUid == Guid.Empty)
       return new BadRequestObjectResult(new
                {
                    status = false,
                    response = "Invalid token"
                });
    // ...
}

I get empty User.Claims.ToList().
User.Identity also has empty meta.

I can't understand where are my Claims.

0 Answers
Related