Example #1
0
        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
            });
        }
Example #2
0
        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)
            });
        }