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

相关推荐
lixww.cn20 小时前
ASP.NET Core与配置系统的集成
.netcore
张3蜂2 天前
如何利用Docker和.NET Core实现环境一致性、简化依赖管理、快速部署与扩展,同时提高资源利用率、确保安全性和生态系统支持
docker·容器·.netcore
lixww.cn3 天前
.NET Core 中依赖注入的使用
.netcore
醉の虾4 天前
Vue3 结合 .NetCore WebApi 前后端分离跨域请求简易实例
前端·vue.js·.netcore
时光追逐者4 天前
一组开源、免费、Metro风格的 WPF UI 控件库
ui·开源·c#·.net·wpf·.netcore·微软技术
时光追逐者5 天前
C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
microsoft·c#·.net·.netcore·微软技术
lixww.cn5 天前
.NET Core缓存
缓存·.netcore
lixww.cn6 天前
ASP.NET Core MVC
c#·mvc·.netcore
亦世凡华、6 天前
从CRUD到高级功能:EF Core在.NET Core中全面应用(四)
经验分享·.netcore·ef core·表达式树
lixww.cn6 天前
ASP.NET Core WebAPI的异步及返回值
.netcore