using System.Collections.Generic;
using System.Security.Cryptography;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;
public static void Main()
string jwt2 = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXN0Y2xhaW0iOiJ2YWx1ZSIsIm5iZiI6MTU3MTIzNzk4OSwiZXhwIjoxNTcxMzI0Mzg5LCJpYXQiOjE1NzEyMzc5ODl9.Ly89tGhQ5Zgc2RumzvYU3YyPGLtNFrORCQUf5leI04s";
string jwt = "eyJhbGciOiJIUzI1NiJ9.eyJkZXBsb3ltZW50IjoieW91ci1kZXBsb3ltZW50Iiwib3JpZ2luSG9zdCI6InlvdXJzaXRlLmNvbSIsInB1YmxpY0lkIjoiVUJ0Q0gxcXYiLCJ1c2VyIjp7ImVtYWlsIjoidXNlckB5b3Vyc2l0ZS5jb20iLCJpZCI6IjEyMzQ1In19.mcA1maGgS0jAr0OX3FYl1nIUmKLVgYt6ELYS5m0Ixa8";
var token = new System.IdentityModel.Tokens.Jwt.JwtSecurityToken(jwt);
var claims = token.Claims;
foreach (Claim c in token.Claims)
Console.WriteLine("RAB: " + c.GetType().ToString() + " -> " + c.ToString());
var token2 = GenerateToken(claims);
Console.WriteLine("RAB: token2 = " + token2);
private static byte[] StringToByteArray(string hex)
return Enumerable.Range(0, hex.Length).Where(x => x % 2 == 0).Select(x => Convert.ToByte(hex.Substring(x, 2), 16)).ToArray();
private static string GenerateToken(IEnumerable<Claim> claims)
string key = new string("your secret");
byte[] bytes = Encoding.ASCII.GetBytes(key);
var symmetricKey = bytes;
var tokenHandler = new JwtSecurityTokenHandler();
var now = DateTime.UtcNow;
var later = now.AddSeconds(1200);
SigningCredentials creds = new SigningCredentials(new SymmetricSecurityKey(symmetricKey), SecurityAlgorithms.HmacSha256Signature);
var header = new JwtHeader();
var payload = new JwtPayload(claims);
var tok = new JwtSecurityToken(header, payload);
return tok.EncodedPayload + "." + tok.EncodedHeader;