Rename JWT

This commit is contained in:
2025-07-26 08:58:24 -07:00
parent 8261abccc9
commit b5435a6b48
+60
View File
@@ -0,0 +1,60 @@
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Auth.Entities;
using Microsoft.IdentityModel.Tokens;
namespace Auth.Services {
public class AuthJWT {
public static string TokenAudience = "mistox-llc-auth-token";
public static string TokenIssuer = "https://auth.mistox.com";
public static string TokenSecretKey = "";
public static string TokenName = "mistox_session";
public static TokenValidationParameters TokenParameters = new TokenValidationParameters {
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = TokenIssuer,
ValidAudience = TokenAudience,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(TokenSecretKey)),
ClockSkew = TimeSpan.FromMinutes(1)
};
public static string GenereateJWTToken(Account account, bool StayLoggedIn) {
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.UTF8.GetBytes(TokenSecretKey);
var tokenDiscriptor = new SecurityTokenDescriptor {
Subject = new ClaimsIdentity([
new Claim(ClaimTypes.NameIdentifier, account.ID.ToString()),
new Claim(ClaimTypes.Name, account.UserName),
new Claim(ClaimTypes.Email, account.Email),
new Claim(ClaimTypes.Role, account.Role),
new Claim(ClaimTypes.UserData, account.DataServer),
new Claim(ClaimTypes.IsPersistent, StayLoggedIn.ToString()),
]),
Expires = DateTime.UtcNow.AddDays(7),
IssuedAt = DateTime.UtcNow,
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256),
Audience = TokenAudience,
Issuer = TokenIssuer
};
var token = tokenHandler.CreateToken(tokenDiscriptor);
return tokenHandler.WriteToken(token);
}
public static string RenewJWTToken( ClaimsPrincipal principal ) {
return GenereateJWTToken(new Account {
ID = Convert.ToInt32(principal.FindFirst(ClaimTypes.NameIdentifier)!.Value),
UserName = principal.FindFirst(ClaimTypes.Name)!.Value,
Email = principal.FindFirst(ClaimTypes.Email)!.Value,
Role = principal.FindFirst(ClaimTypes.Role)!.Value,
DataServer = principal.FindFirst(ClaimTypes.UserData)!.Value
}, Convert.ToBoolean(principal.FindFirst(ClaimTypes.IsPersistent)!.Value));
}
}
}