validate jwt token code example
Example 1: validate jwt token c#
public static Task<IPrincipal> validateToken(string token)
{
ClaimsPrincipal principal = getPrincipal(token);
if (principal == null)
return null;
ClaimsIdentity identity = null;
try
{
identity = (ClaimsIdentity)principal.Identity;
IPrincipal Iprincipal = new ClaimsPrincipal(identity);
return Task.FromResult(Iprincipal);
}
catch (NullReferenceException)
{
return Task.FromResult<IPrincipal>(null);
}
}
private static ClaimsPrincipal getPrincipal(string token)
{
try
{
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
JwtSecurityToken jwtToken = (JwtSecurityToken)tokenHandler.ReadToken(token);
if (jwtToken == null)
return null;
byte[] key = Encoding.ASCII.GetBytes(config.jwtSecret);
TokenValidationParameters parameters = new TokenValidationParameters()
{
ValidIssuer = config.jwtIssuer,
ValidAudience = config.jwtIssuer,
ValidateLifetime = true,
RequireExpirationTime = true,
ValidateIssuer = true,
ValidateAudience = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ClockSkew = TimeSpan.Zero
};
SecurityToken securityToken;
ClaimsPrincipal principal = tokenHandler.ValidateToken(token,
parameters, out securityToken);
return principal;
}
catch
{
return null;
}
}
Example 2: javascript token generator
function generate_token(length){
//edit the token allowed characters
var a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".split("");
var b = [];
for (var i=0; i<length; i++) {
var j = (Math.random() * (a.length-1)).toFixed(0);
b[i] = a[j];
}
return b.join("");
}
generate_token(32); //returns "qweQj4giRJSdMNzB8g1XIa6t3YtRIHPH"
Example 3: decode csrf token online
{
"alg": "CfDJ8OW5OI0CPGJBgSNlGwO0x4YF7qbYKVv7KOO-N0eFtDUzXOrL7F9Xd9W1otVi4ueJOkAmAhuoHFWNkqRaFD7zvAMHMSKncl6Vo5QXKmpvy6vqxOKxSURdIey8aZPRi3Nnhp2p9la-Al5xrVKz0lignRdcCHf3O7pF9zv_sNx_c_T7pUe3WsxaJEPX3t_9FO2Wjw"
}
Example 4: jwt
JSON Web Token is an Internet standard for creating data with optional
signature and/or optional encryption whose payload holds JSON that asserts
some number of claims.
The tokens are signed either using a private secret or a public/private key.