.net core jwt 身份验证初步了解1

JWT全称Json Web Token

jwt是用于身份验证的开放标准,是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制。从 JWT 的全称可以看出,JWT 本身也是 Token,一种规范化之后的 JSON 结构的 Token,它可以在网络之间传递信息,jwt是由三个部分组成:头部,载荷,签名。头部包含了令牌的类型和加密算法,载荷包含了用户的信息,签名是对头部和载荷的加密结果。

JWT 本质上就是一组字串,通过(.)切分成三个为 Base64 编码的部分:

Header : 描述 JWT 的元数据,定义了生成签名的算法以及 Token 的类型。

Payload : 用来存放实际需要传递的数据

Signature(签名) :服务器通过 Payload、Header 和一个密钥(Secret)使用 Header 里面指定的签名算法(默认是 HMAC SHA256)生成。

jwt鉴权验证是指在用户登录成功之后服务器生成一个jwt令牌并返回给客户端,从而客户端在后续的请求中携带该令牌,服务通过令牌的签名来确定用户的身份和权限。这种方式可以避免在每个请求中都需要进行身份验证,提高了系统的性能和安全性。

jwt的优点:

无状态:jwt令牌包含了所有必要的信息,服务器不需要再每个请求中都进行身份验证,避免了服务器存储会话信息的开销。

可扩展性:jwt令牌可以包含任意的信息,可以根据需要添加自定义的字段。

安全性:jwt令牌使用签名来保证数据的完整性和真实性,防止数据被篡改或伪造。

跨平台:jwt令牌是基于json格式的,可以再不同的变成语言和平台之间进行传递和解析。

JWT的缺点:

安全性:由于jwt的payload是使用base64编码的,并没有加密,因此jwt中不能存储敏感数据。而session的信息是存在服务端的,相对来说更安全。

性能:jwt太长。由于是无状态使用JWT,所有的数据都被放到JWT里,如果还要进行一些数据交换,那载荷会更大,经过编码之后导致jwt非常长,cookie的限制大小一般是4k,cookie很可能放不下,所以jwt一般放在local storage里面。并且用户在系统中的每一次http请求都会把jwt携带在Header里面,http请求的Header可能比Body还要大。而sessionId只是很短的一个字符串,因此使用jwt的http请求比使用session的开销大得多。

相关推荐
驾驭人生1 天前
Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
数据库·mysql·.netcore
时光追逐者1 天前
C#/.NET/.NET Core技术前沿周刊 | 第 53 期(2025年9.1-9.7)
c#·.net·.netcore
somethingGoWay2 天前
wpf .netcore 导出docx文件
wpf·.netcore
somethingGoWay2 天前
wpf .netcore 导出pdf文件
pdf·wpf·.netcore
切糕师学AI3 天前
如何建立针对 .NET Core web 程序的线程池的长期监控
java·前端·.netcore
csdn_aspnet4 天前
使用 MongoDB.Driver 在 C# .NETCore 中实现 Mongo DB 过滤器
mongodb·c#·.netcore
tiancao2224 天前
安装3DS MAX 2026后,无法运行,提示缺少.net core的解决方案
.net·.netcore·3dsmax
csdn_aspnet4 天前
使用 C# .NETCore 实现MongoDB
mongodb·c#·.netcore
MoFe18 天前
【.net core】【NPOI】读取表格信息(处理合并行表格数据)
.netcore
csdn_aspnet8 天前
在 .NET Core 中实现基于策略和基于角色的授权
.netcore·role·policy