JWT Token

一、简介

JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案。

session登录认证方案:用户从客户端传递用户名、密码等信息,服务端认证后将信息存储在session中,将session_id放到cookie中。以后访问其他页面,自动从cookie中取到session_id,再从session中取认证信息。

另一类解决方案,将认证信息,返回给客户端,存储到客户端。下次访问其他页面,需要从客户端传递认证信息回服务端。JWT就是这类方案的代表,将认证信息保存在客户端。

二、JWT Token 组成

header 头部

存放加密使用的算法,如下信息

{
    "type": "jwt",
    "alg": "HS256"
}

载荷 payload

存放传输给前端的数据,比如用户ID等信息

    {
        "用户ID": 1,
        "用户名": "admin",
        "角色": "超级管理员",
        "到期时间": "2019-07-13 00:00:00"
    }

签名 signature

  • 先分别对 header 和 payload 进行 Base64 编码后,将编码后的字符串以 . 连接起来使用header中的算法和服务的的 secret 进行加密得到signature。

最终将 header 、payload、signature 三部分以 . 连接起来组成一个字符串即为token返回给前端。

三、注意点

  • JWT 的设计并不在于加密保护数据,只是为了认证来源
  • JWT Token 一旦签发,在过期之前是永久有效的

四、如何防止JWT Token被冒充

HTTPS 双向认证,双向加密等。还有就是将每次签发的token保存下来,请求来时从保存的token列表中查找是否有该token。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!