JWT学习

转载自:https://blog.csdn.net/achenyuan/article/details/80829401#jwt%E6%B6%88%E6%81%AF%E6%9E%84%E6%88%90

token验证地址:https://jwt.io/  

 

JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。

 

优点: 在分布式系统中,很好地解决了单点登录问题,很容易解决了session共享的问题。

缺点: 无法作废已颁布的令牌/不易应对数据过期。

 

 

一个token分3部分,按顺序为

头部(header)

载荷(payload)

       签证(signature) 

由三部分生成token 

3部分之间用“.”号做分隔。例如eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 

 

Jwt的头部承载两部分信息:

    声明类型,这里是jwt

    声明加密的算法 通常直接使用 HMAC SHA256

 

载荷就是存放有效信息的地方。基本上填2种类型数据

    -标准中注册的声明的数据

    -自定义数据

由这2部分内部做base64加密。最终数据进入JWT的chaims里存放

 

签名signature

jwt的第三部分是一个签证信息,这个签证信息算法如下:

base64UrlEncode(header) + "." + base64UrlEncode(payload)+your-256-bit-secret

这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。

 

JWT常常被用作保护服务端的资源(resource),客户端通常将JWT通过HTTP的Authorization header发送给服务端,服务端使用自己保存的key计算、验证签名以判断该JWT是否可信:

 

实际上秘钥和算法是用来生成签名的,令牌本身不可读仅是因为base64url编码,可以直接解码

 

扩展阅读:

讲真,别再使用JWT了!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值