| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using BlackRock.Reporting.API.Core.Models;
- using Microsoft.AspNetCore.Identity;
- using Microsoft.IdentityModel.Tokens;
- using System.IdentityModel.Tokens.Jwt;
- using System.Security.Claims;
-
- namespace BlackRock.Reporting.API.Authentication
- {
- public class JwtManager : IJwtManager
- {
- //private string Secret = "db3OIsj+BXE9NZDy0t8W3TcNekrF+2d/1sFnWG4HnV8TZY30iTOdtVWJG8abWvB1GlOgJuQZdcF2Luqm/hccMw==";
- private readonly IConfiguration configuration;
-
- private readonly string Secret;
- public JwtManager(IConfiguration configuration)
- {
- this.configuration = configuration;
- Secret = configuration["SecurityKey"];
- }
- public string GenerateToken(string username, int expireMinutes = 20)
- {
- var symmetricKey = Convert.FromBase64String(Secret);
- var tokenHandler = new JwtSecurityTokenHandler();
- var now = DateTime.UtcNow;
- var tokenDescriptor = new SecurityTokenDescriptor
- {
- Subject = new ClaimsIdentity(new[]
- {
- new Claim(ClaimTypes.Name, username)
- }),
- Expires = now.AddMinutes(Convert.ToInt32(expireMinutes)),
- SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(symmetricKey), SecurityAlgorithms.HmacSha256Signature)
- };
- SecurityToken securityToken = tokenHandler.CreateToken(tokenDescriptor);
- var token = tokenHandler.WriteToken(securityToken);
-
- return token;
- }
- public string GetUserName(string token)
- {
- try
- {
- var tokenHandler = new JwtSecurityTokenHandler();
- var jwtToken = tokenHandler.ReadToken(token) as JwtSecurityToken;
-
- if (jwtToken == null)
- return null;
-
- var symmetricKey = Convert.FromBase64String(Secret);
-
- var validationParameters = new TokenValidationParameters()
- {
- ValidateIssuer = false,
- ValidateAudience = false,
- ValidateLifetime = false,
- RequireExpirationTime = false,
- IssuerSigningKey = new SymmetricSecurityKey(symmetricKey)
- };
-
- SecurityToken validatedToken = new JwtSecurityToken();
- var principal = tokenHandler.ValidateToken(token, validationParameters, out validatedToken);
-
- return principal.Identity.Name;
- }
- catch (Exception)
- {
- return null;
- }
- }
- public ClaimsPrincipal GetPrincipal(string token)
- {
- try
- {
- var tokenHandler = new JwtSecurityTokenHandler();
- var jwtToken = tokenHandler.ReadToken(token) as JwtSecurityToken;
-
- if (jwtToken == null)
- return null;
-
- var symmetricKey = Convert.FromBase64String(Secret);
-
- var validationParameters = new TokenValidationParameters()
- {
- RequireExpirationTime = true,
- ValidateIssuer = false,
- ValidateLifetime = true,
- ValidateAudience = false,
- IssuerSigningKey = new SymmetricSecurityKey(symmetricKey)
- };
-
- SecurityToken validatedToken = new JwtSecurityToken();
- var principal = tokenHandler.ValidateToken(token, validationParameters, out validatedToken);
-
- return principal;
- }
- catch (Exception)
- {
- return null;
- }
- }
-
-
- }
- }
|