JWS

我们所说的JWT实际上是JWS,一下的jwt全部值jws

jwt工作流程

  1. 认证服务器校验用户名和密码,创建token,包含用户身份信息和过期时间戳
  2. 认证服务器根据秘钥,对Header和Payload进行签名,发给客户端浏览器
  3. 客户端浏览器获得JWT token(令牌),然后在每个HTTP请求后都附带着
  4. 认证服务器检查JWT签名,确认Payload是由自身发出的

只有认证服务器拥有私钥,并且认证服务器只把token发给提供了正确密码的用户,因此应用服务器可以认为这个token是由认证服务器颁发的也是安全的,因为该用户具有了正确的密码.

JWT两个作用:

  1. 认证服务器和校验JWT token的应用服务器分离
  2. 应用服务器无状态(和session作用相同)

JWT包含:

  • 头部Header:描述签名的算法,如RS256,告诉客户端如何验证
  • 数据Payload:所要传送的信息,不加密,不要放敏感信息
  • 签名Signature:信息验证码MAC,由Payload、Header和密钥生成

https://jwt.io/可以看到jwt的样例

在这里插入图片描述

头部HEADER:

key描述
typ类型,这里是jwt
algAlgorithm,所使用的算法,这里是HS256就是签名算法,如MD5,hmac

PAYLOAD

key描述
iss签发这
sub接收者
exp(expires)过期
iat(issued at)签发时间

SIGNATURE
将header 和 payload,使用自己的secretkey进行编码

签名类型

HS256是MAC码的概念.它的劣势有:
1.HS256要求JWT的服务器和客户端有相同的秘钥(秘钥被分发在客户端,不安全)
2.如果修改密码后,我们要重新分发,很麻烦
3.JWT的创建和校验没有分离

RS256是rsa,不对称加密,可以解决HS256的问题
RS256需要
1.私钥,只有认证服务器拥有,签名JWT,不能用来校验
2.公钥,应用服务器拥有,校验JWT,即使暴露,也没问题

参考:
https://blog.angular-university.io/angular-jwt/
https://blog.csdn.net/y472360651/article/details/86011712
https://www.cnblogs.com/wenqiangit/p/9592132.html
https://zhuanlan.zhihu.com/p/70275218?utm_source=wechat_session&utm_medium=social&utm_oi=985800679562223616
https://www.cnblogs.com/xiekeli/p/5607107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值