简介JWT

JWT是一种无状态的认证机制,适用于分布式应用和移动端。用户登录后,后端生成包含用户信息的JWTToken,前端存储并附在HTTP请求头中。服务端验证JWTToken的有效性,无需保存会话信息,提高扩展性和安全性。JWT具备数据量小、跨语言、单点登录友好等特点,常用于微服务架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介JWT
http协议无状态的,所以需要sessionIdtoken的鉴权机制,jwttoken认证机制不需要在服务端再保留用户的认证信息或会话信息。这就意味着基于jwt认证机制的应用程序不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利,jwt更适用于分布式应用
1、前端通过Web表单将自己的用户名和密码发送到后端的接口,这个过程一般是一个POST请求。建议的方式是通过SSL加密的传输(HTTPS),从而避免敏感信息被嗅探
2、后端核对用户名和密码成功后,将包含用户信息的数据作为JWTPayload,将其与JWT Header分别进行Base64编码拼接后签名,形成一个JWT Token,形成的JWT Token就是一个如同lll.zzz.xxx的字符串
3、后端将JWT Token字符串作为登录成功的结果返回给前端。前端可以将返回的结果保存在浏览器中,退出登录时删除保存的JWT Token即可
4、前端在每次请求时将JWT Token放入HTTP请求头中的Authorization属性中(解决XSSXSRF问题)
5、后端检查前端传过来的JWT Token,验证其有效性,比如检查签名是否正确、是否过期、token的接收方是否是自己等
6、验证通过后,后端解析出JWT Token中包含的用户信息,进行其他逻辑操作(一般是根据用户信息得到权限等),返回结果
JWT的优势
1、简洁:JWT Token数据量小,传输速度也很快
2、因为JWT Token是以JSON加密形式保存在客户端的,所以JWT是跨语言的,原则上任何web形式都支持
3、不需要在服务端保存会话信息,也就是说不依赖于cookiesession,所以没有了传统session认证的弊端,特别适用于分布式微服务
4、单点登录友好:使用Session进行身份认证的话,由于cookie无法跨域,难以实现单点登录。但是,使用token进行认证的话, token可以被保存在客户端的任意位置的内存中,不一定是cookie,所以不依赖cookie,不会存在这些问题
5、适合移动端应用:使用Session进行身份认证的话,需要保存一份信息在服务器端,而且这种方式会依赖到Cookie(需要Cookie 保存 SessionId),所以不适合移动端
jwt的组成部分
标准的jwt令牌分为三部分,分别是Headerpayloadsignature;在token字符串中使用.进行分割
Header的组成部分包括两点:参数类型jwt,签名的算法hs256
Payload的组成就是登陆用户的一些信息,和token发行和失效时间等;这些内容里面有一些是标
准字段,你也可以添加其它需要的内容
Signature是先用Base64编码的headerpayload,再用加密算法加密一下,加密的时候要放进去
一个Secret,这个相当于是一个密码,这个密码秘密地存储在服务端JWT每部分的作用,在服务端接收到客户端发送过来的JWT token之后:
headerpayload可以直接利用base64解码出原文,从header中获取哈希签名的算法,从
payload中获取有效数据。
signature由于使用了不可逆的加密算法,无法解码出原文,它的作用是校验token有没有被篡改。
服务端获取header中的加密算法之后,利用该算法加上secretKeyheaderpayload进行加密,
比对加密后的数据和客户端发送过来的是否一致。注意secretKey只能保存在服务端,而且对于不
同的加密算法其含义有所不同,一般对于MD5类型的摘要加密算法,secretKey实际上代表的是盐
JWT工作原理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值