private async Task <TokenAndClaimsPrincipal> CreateShortTokenAsync( User user, string lat2r, string lat2, long sessionId) { List <Claim> claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim(TokenClaimNames.LongToken2Ran, lat2r), new Claim(JwtRegisteredClaimNames.Jti, CryptoRandomizer.GetRandomString(DbColumnSizes.BlackListShortToken_TokenId)) }; var roleNames = await userManager.GetRolesAsync(user); foreach (var role in roleNames) { claims.Add(new Claim(ClaimTypes.Role, role)); } var expiration = DateTime.UtcNow.AddMinutes(jwtOptions.ShortTokenLiveTimeMinutes); var token = new JwtSecurityToken( claims: claims.ToArray(), expires: expiration); var claimsIdentity = new ClaimsIdentity(claims, "JwtShortToken"); var claimsPrincipal = new ClaimsPrincipal(claimsIdentity); return(new TokenAndClaimsPrincipal { ClaimsPrincipal = new SunClaimsPrincipal(claimsPrincipal, rolesCache, sessionId, lat2), Token = cryptService.Crypt(CipherSecrets.ShortJwt, token.Payload.SerializeToJson()), Expiration = expiration }); }
private async Task <TokenAndClaimsPrincipal> GenerateShortAuthTokenAsync(User user, string lat2r, string lat2, long sessionId) { // Generate and issue a JWT token var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtOptions.ShortJwtSecurityKey)); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature); List <Claim> claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim(ClaimTypes.Name, user.UserName), new Claim(TokenClaimNames.LongToken2Ran, lat2r), new Claim(JwtRegisteredClaimNames.Jti, CryptoRandomizer.GetRandomString(DbColumnSizes.BlackListShortToken_TokenId)) }; var roleNames = await userManager.GetRolesAsync(user); foreach (var role in roleNames) { claims.Add(new Claim(ClaimTypes.Role, role)); } var token = new JwtSecurityToken( issuer: jwtOptions.Issuer, audience: jwtOptions.Issuer, claims: claims.ToArray(), expires: DateTime.UtcNow.AddMinutes(jwtOptions.ShortTokenLiveTimeMinutes), signingCredentials: credentials); var claimsIdentity = new ClaimsIdentity(claims, "JwtShortToken"); var claimsPrincipal = new ClaimsPrincipal(claimsIdentity); return(new TokenAndClaimsPrincipal { ClaimsPrincipal = new SunClaimsPrincipal(claimsPrincipal, rolesCache, sessionId, lat2), Token = new JwtSecurityTokenHandler().WriteToken(token) }); }