打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
大名鼎鼎的JSON Web Tokens你知多少

什么是JWT(JSON Web Tokens)?

  • JWT(JSON Web Token)是一个非常轻巧的规范,允许我们使用JWT在用户和服务器之间传递安全可靠的信息。

为什么冒出个JWT(JSON Web Tokens)?有什么用,解决什么问题?

  1. 传统session、cookies有以下明显的缺点:

a、cookies的安全性不好,攻击者可以通过获取本地cookies进行欺骗或者利用cookies进行CSRF攻击。

b、使用cookies时,在多个域名下,会存在跨域问题。

c、session在一定的时间里,需要存放在服务端,因此当拥有大量用户时,也会大幅度降低服务端的性能。

d、多服务器时需要共享session。

2. 为了解决这些问题,JWT出现了。它不再有session、cookies上面列举的缺点,不易被攻击者利用,安全性提高了。利用Http传输token,没有跨域问题。信息分散存储在客户端,服务端占用资源变少,也就不存在session共享问题。

JWT(JSON Web Tokens)是如何工作的?

  1. 要了解工作原理,我们先看下JWT的组成结构

JWT结构

JWT实际上是一个字符串,由三部分组成,头部(HEADER)载荷(PAYLOAD)签名(VERIFY SIGNATURE)

  • 头部

    头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。

    {

    'alg': 'HS256',

    'typ': 'JWT'

    }

    这是一个头部样例,描述了token的类型为JWT,使用的算法是HS256

  • 载荷

    载荷用于存储数据,可以包含JWT标准字段,也可以自定义。列举几个标准字段以及含义:

    iss: JWT的签发者

    sub: JWT所面向的用户

    aud: 接收JWT的一方

    exp(expires): 什么时候过期

    iat(issued at): 什么时候签发

    {

    'sub': '1234567890',

    'name': 'John Doe',

    'iat': 1516239022

    }

    这就是一个载荷样例,有3个字段,意思是:在这个1516239022(Unix时间戳)签发的包含name=John Doe的token发送给1234567890用户。

  • 签名

    对头部和载荷编码连接内容使用加密算法进行加密,加密过程使用特定秘钥。

    HMACSHA256(

    base64UrlEncode(header) '.'

    base64UrlEncode(payload),

    ) secret base64 encoded

2.JWT的工作流程:

  • 客户端使用账户密码登录

  • 登录成功后服务端返回JWT

  • 客户端再次请求其他时带上JWT

  • 服务端接收到JWT后验证签名的有效性。

JWT工作流程

好了,JWT就讲到这里,下次我们实战吧。喜欢的朋友点击关注、转发哦。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一步步带你了解前后端分离利器之JWT
认证授权基础
前后端分离实践有感
来,科普一下JWT
八幅漫画理解使用JSON Web Token设计单点登录系统
基于前后端分离的身份认证方式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服