using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
public static string generateToken(string secret_key){;
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret_key));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
expires: DateTime.Now.AddMinutes(5),
signingCredentials: creds
var t = new JwtSecurityTokenHandler().WriteToken(token);
public static bool validateToken(string token,string secret_key){
var tokenValidationParameters = new TokenValidationParameters
ValidateAudience = false,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret_key))
var tokenHandler = new JwtSecurityTokenHandler();
ClaimsPrincipal claimsPrincipal = tokenHandler.ValidateToken(token, tokenValidationParameters, out SecurityToken validatedToken);
long d = long.Parse(claimsPrincipal.FindFirst("exp").Value);
DateTime expiryDate = DateTimeOffset.FromUnixTimeSeconds(d).DateTime;
if(expiryDate < DateTime.Now){
throw new SecurityTokenException("Token has expired");
foreach (Claim claim in claimsPrincipal.Claims)
Console.WriteLine($"{claim.Type}: {claim.Value}");
catch (SecurityTokenException ex)
Console.WriteLine($"Token validation failed: {ex.Message}");
public static void Main()
var secretKey = "2cd3d0b0-284a-403f-8654-1ddae2f775fb";
string token = generateToken(secretKey);
Console.WriteLine("Token Is :"+token);
Console.WriteLine("Is Token Valid :" + validateToken(token,secretKey));