Beispiel #1
0
        public virtual async Task <JwtTokenBO> GenerateToken(List <Claim> claims)
        {
            var authClaims = claims;

            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtOptions.Secret));

            var token = new JwtSecurityToken(
                issuer: _jwtOptions.ValidIssuer,
                audience: _jwtOptions.ValidAudience,
                expires: DateTime.Now.AddMinutes(DateTime.Parse(_jwtOptions.AccessTokenLifespan).Minute),
                claims: authClaims,
                signingCredentials: new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha512)
                );

            var refreshToken = new RefreshTokenBO
            {
                //Cuid = cuid,
                Token    = GenerateRefreshToken(),
                ExpireAt = DateTime.UtcNow.AddMinutes(DateTime.Parse(_jwtOptions.RefreshTokenLifespan).Minute)
            };

            return(new()
            {
                AccessToken = new JwtSecurityTokenHandler().WriteToken(token),
                RefreshToken = refreshToken.Token
            });
        }
Beispiel #2
0
        public virtual async Task <JwtTokenBO> GenerateToken(string username, Guid cuid, List <RoleEntity> roleEntity)
        {
            var authClaims = new List <Claim>
            {
                new (ClaimTypes.GivenName, username),
                new (ClaimTypes.Role, JsonSerializer.Serialize(roleEntity)),
                new (ClaimTypes.Name, cuid.ToString()),
                new (JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new (JwtRegisteredClaimNames.AuthTime, DateTime.UtcNow.ToString())
            };

            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtOptions.Secret));

            var token = new JwtSecurityToken(
                issuer: _jwtOptions.ValidIssuer,
                audience: _jwtOptions.ValidAudience,
                expires: DateTime.Now.AddMinutes(DateTime.Parse(_jwtOptions.AccessTokenLifespan).Minute),
                claims: authClaims,
                signingCredentials: new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha512)
                );

            var refreshToken = new RefreshTokenBO
            {
                Cuid     = cuid,
                Token    = GenerateRefreshToken(),
                ExpireAt = DateTime.UtcNow.AddMinutes(DateTime.Parse(_jwtOptions.RefreshTokenLifespan).Minute)
            };

            return(new()
            {
                AccessToken = new JwtSecurityTokenHandler().WriteToken(token),
                RefreshToken = refreshToken.Token
            });
        }