.net6 JWT

发布时间 2023-10-27 16:36:12作者: IAMLCW

准备工作:在步入正题之前我们首先要对JWT加密有个初步的概念和认识,并对其原理有一定的理解,这样才能使我们在.Net 6.0中更快的上手JWT加密,下面是我整理JWT加密的一些资料,各位看官请坐!

JWT(JSON Web Token)是一种基于 JSON 的轻量级身份验证和授权的规范,通过三部分组成:头部、载荷和签名进行加密。

头部: JWT 头部通常由两部分组成,一是声明类型,即 JWT,二是声明加密算法,比如 HS256、RS256 等。头部采用 Base64Url 编码,不加密。

载荷: JWT 载荷是 JWT 的主要内容,一般由一些声明和用户自定义的数据组成,这些声明包括用户 ID、过期时间、权限等。载荷同样采用 Base64Url 编码,不加密。

签名: JWT 签名是对头部和载荷进行加密生成的,用于验证 JWT 的合法性。签名需要使用头部中指定的加密算法和密钥进行计算,通常使用 HMAC 或者 RSA 算法。签名的计算过程如下:

  • 将头部和载荷组成一个字符串,中间用 . 分隔。
  • 使用头部中指定的加密算法和密钥对该字符串进行加密生成签名。
  • 将签名加入到 JWT 中,形成最终的 JWT。

在验证 JWT 时,需要使用同样的密钥和算法对头部和载荷进行验证,验证通过即表示 JWT 是合法的,否则是无效的。

总的来说,JWT 加密原理就是通过将头部和载荷进行 Base64Url 编码,然后使用指定的加密算法和密钥对其进行加密生成签名,最后将签名加入到 JWT 中。在验证 JWT 时,需要使用同样的密钥和算法对头部和载荷进行验证,以判断 JWT 是否有效。

一、Net 6环境下的.net core项目里如何使用JWT。

  第一步,在Nuget引入JWT、Microsoft.AspNetCore.Authentication.JwtBearer这两个NuGet包

1 Microsoft.AspNetCore.Authentication.JwtBearer

 

 

  第二步,在appsettings.json配置相关配置

  

 

  第三步,在Program.cs中注册

 

  第四步,定义注册存入TokenHelper类,方便对JWT令牌进行管理,实现接口:

 

 

   第五步,在构造函数 还有IOC 容器中注入:

 

 

 

 

 

   第六步,登录方法中可直接调用获取 Token 值