为什么80%的码农都做不了架构师?>>>
JWT,a JWT(JSON Web Token) implementation for .NET
该库支持生成和解析JSON Web Token
安装
你可以直接通过Nuget获取,也可以自己下载和编译源码.
支持的 .NET Framework 版本
- .NET Framework 4.6.0
- .NET Standard 1.3
使用
// 不要忘了 using
using JWT;
using JWT.Algorithms;
using JWT.Builder;
// 自定义秘钥
// jwt 的生成和解析都需要使用
const string secret = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";
创建 JWT
// 使用 JwtBuilder 来生成 token
string token = new JwtBuilder()
.WithAlgorithm(new HMACSHA256Algorithm()) // 使用算法
.WithSecret(secret) // 使用秘钥
.AddClaim("exp", DateTimeOffset.UtcNow.AddHours(1).ToUnixTimeSeconds())
.AddClaim("claim2", "claim2-value")
.Build();
Console.WriteLine(token);
生成的 token 如下:
// 注意:是通过.符号分隔成3段,分别对应的是header.payload.signature
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1Mjg3MjA2NTEsImNsYWltMiI6ImNsYWltMi12YWx1ZSJ9.56xcZALlJuwROe3qssCbe_DDjpQShk-Ik7kWAzONWFU
解析 JWT
// 使用 JwtBuilder 来解析 token
try
{
string json = new JwtBuilder()
.WithSecret(secret)
.MustVerifySignature()
.Decode(token);
Console.WriteLine(json);
}
catch (TokenExpiredException)
{
Console.WriteLine("token 已过期");
}
catch (SignatureVerificationException)
{
Console.WriteLine("token 签名无效");
}
解析后得到的 json 字符串如下:
{
"exp": 1528721303,
"claim2": "claim2-value"
}
参考文档
- JWT.NET