JwtService.cs 1.2 KB

123456789101112131415161718192021
  1. using DopInterfacePlatform.Interface;
  2. using Microsoft.IdentityModel.Tokens;
  3. using System.IdentityModel.Tokens.Jwt;
  4. using System.Security.Claims;
  5. using System.Text;
  6. namespace DopInterfacePlatform.Service
  7. {
  8. public class JwtService : IJwtService
  9. {
  10. public string BuildToken(IEnumerable<Claim> claims, JwtOptions options)
  11. {
  12. //过期时间
  13. TimeSpan timeSpan = TimeSpan.FromSeconds(options.ExpireSeconds);//token过期时间
  14. var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(options.Key));//加密的token密钥
  15. var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);//签名证书,其值为securityKey和HmacSha256Signature算法
  16. var tokenDescriptor = new JwtSecurityToken(options.Issuer, options.Audience, claims, expires: DateTime.Now.Add(timeSpan), signingCredentials: credentials);//表示jwt token的描述信息,其值包括Issuer签发方,Audience接收方,Claims载荷,过期时间和签名证书
  17. return new JwtSecurityTokenHandler().WriteToken(tokenDescriptor);//使用该方法转换为字符串形式的jwt token返回
  18. }
  19. }
  20. }