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 }); }
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 }); }