黑马程序员技术交流社区

标题: 【上海校区】jwt做状态保持的优缺点及解决方案 [打印本页]

作者: 会飞的小老虎1    时间: 2019-4-16 16:29
标题: 【上海校区】jwt做状态保持的优缺点及解决方案
什么是JWT
JWT是Json Web Token的全称,它是由三部分组成:
header中通常来说由token的生成算法和类型组成。如:
[Python] 纯文本查看 复制代码
{
    "alg":"HS256",
    "typ":"JWT"
}

payload中则用来保存相关的状态信息。如用户id,role,name等。
[Python] 纯文本查看 复制代码
{
    "id": 10111000,
    "role": "admin",
    "name": "Leo"
}

signature部分由header,payload,secret_key三部分生成,其生成公式为:
[Python] 纯文本查看 复制代码
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret_key)

再将这三个部分组合成header.payload.signature的形式。
JWT如何工作首先用户发出登录请求,服务端根据用户的登录请求进行匹配,如果匹配成功,将相关的信息放入payload中,利用上述算法,加上服务端的密钥生成token,这里需要注意的是secret_key很重要,如果这个泄露的话,客户端就可以随意篡改发送的额外信息,它是信息完整性的保证。生成token后服务端将其返回给客户端,客户端可以在下次请求时,将token一起交给服务端,一般来说我们可以将其放在Authorization首部中,这样也就可以避免跨域问题。接下来,服务端根据token进行信息解析,再根据用户信息作出相应的操作。

JWT优点与缺点及对应的解决方案考虑JWT的实现,上面所述的关于session,cookies的缺点都不复存在了,不易被攻击者利用,安全性提高。利用Authorization首部传输token,无跨域问题。额外信息存储在客户端,服务端占用资源不多,也不存在session共享问题。感觉JWT优势很明显,但其仍然有一些缺点:













欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2