jwt

在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式,当用户登录成功,服务端会保存一个session,会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。

cookie+session这种模式通常是保存在内存中,而且服务从单服务到多服务会面临session共享问题,随着用户量的增加,开销就会越大,而jwt不是这样的,只需要服务端生成token,客户端保存这个token,每次请求携带这个token,服务区认证解析就可以。

JWT的身份验证基本流程

  1. 客户端使用自己的账号密码发送POST请求登录
  2. 由于这是首次接触,服务器会校验账号与密码是否合法
  3. 如果一致,则根据密钥生成一个JWT并返回
  4. 客户端收到这个token并保存在本地,
  5. 客户端需要访问一个受保护的资源时,只要附加上jwt发送到服务器
  6. 服务器就会检查这个token是否有效,并做出响应

JWT的构成

header(头部)、payload(载荷)、signature(签证)

header(头部):
jwt的头部承载两部分信息:{“type”:“JWT”,“alg”:“HS256”}(类型、对签名加密的算法)

payload(载荷):

  • iss:jwt签发者

  • List item

  • sub:jwt所面向的用户

  • aud:接收jwt的一方

  • exp:jwt的过期时间,这个过期时间必须大于签发时间

  • nbf:定义在什么时间之前,该jwt都是不可用的

  • iat:jwt的签发时间

  • jti:jwt的唯一身份便是,主要用来作为一次性token,从而回避重放攻击

signature(签名):

  • 用Base64编码的header.payload
  • HS256加密算法加密(将密钥存储在服务端)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值