.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的开销大得多。

相关推荐
全栈小53 天前
【C#】.net core 6.0 依赖注入常见问题之一,在构造函数使用的类,都需要注入到容器里,否则会提示如下报错,让DeepSeek找找原因,看看效果
c#·.netcore·依赖注入·deepseek
公子小六7 天前
ASP.NET Core WebApi+React UI开发入门详解
react.js·ui·c#·asp.net·.netcore
工藤新一OL7 天前
.netCore的winform程序如何调用webapi
c#·.net·.netcore·visual studio
江沉晚呤时8 天前
深入解析 C# 开闭原则(OCP):设计可扩展的系统
数据库·c#·系统安全·.netcore
江沉晚呤时10 天前
深入解析外观模式(Facade Pattern)及其应用 C#
java·数据库·windows·后端·microsoft·c#·.netcore
江沉晚呤时10 天前
深入解析代理模式(Proxy Pattern):设计与应用
安全·c#·系统安全·.netcore
小吴同学·12 天前
NET6 WebApi第5讲:中间件(源码理解,俄罗斯套娃怎么来的?);Web 服务器 (Nginx / IIS / Kestrel)、WSL、SSL/TSL
中间件·c#·.net·.netcore·.net core
江沉晚呤时12 天前
深入解析组合模式(Composite Pattern):概念、结构与应用
java·开发语言·后端·c#·.netcore
江沉晚呤时13 天前
精益架构设计:深入理解与实践 C# 中的单一职责原则
java·jvm·算法·log4j·.netcore·net
世界太过浮夸14 天前
.net core集成MQTT服务端
.netcore