public async Task <AccessToken> Create(Domain.Authentication.User user, CancellationToken cancellationToken) { var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), }; var claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType); var now = DateTime.UtcNow; var expires = now.AddMinutes(_authOptions.LifeTimeMinutes); var jwt = new JwtSecurityToken( issuer: _authOptions.Issuer, audience: _authOptions.Audience, notBefore: now, claims: claimsIdentity.Claims, expires: expires, signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_authOptions.SecretKey)), SecurityAlgorithms.HmacSha256)); String token = new JwtSecurityTokenHandler().WriteToken(jwt); return(new AccessToken( value: token, expiresIn: TimeSpan.FromMinutes(_authOptions.LifeTimeMinutes))); }
public async Task <AccessToken> Create(Domain.Authentication.User user, CancellationToken cancellationToken) { var jwtSecurityToken = new JwtSecurityToken( _jwtOptions.Issuer, _jwtOptions.Audience, new ClaimsIdentity(new List <Claim> { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim(ClaimTypes.Name, user.Name), new Claim(ClaimTypes.Email, user.Email), new Claim(ClaimTypes.Role, user.Role.ToString()) }, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType).Claims, DateTime.UtcNow, DateTime.UtcNow.AddMinutes(_jwtOptions.ExpiresInMinutes), new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtOptions.SecretKey)), SecurityAlgorithms.HmacSha256)); var token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken); return(new AccessToken(token, TimeSpan.FromMinutes(_jwtOptions.ExpiresInMinutes))); }