C# 中 JWT 包的初步使用

为什么80%的码农都做不了架构师?>>>   hot3.png

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

转载于:https://my.oschina.net/taadis/blog/1828386

你可能感兴趣的:(C# 中 JWT 包的初步使用)