美文网首页
JWT JSON web Token

JWT JSON web Token

作者: 麦芽花生糖 | 来源:发表于2020-03-21 18:10 被阅读0次

先了解下几个名词:

JWT官网

传统的基于token的认证

众所周知,在用户登录验证时,服务端验证用户名密码是否正确,如果验证通过,则生成一个token发送给用户,同时保存这个token到数据库。

JWT

用户登录,服务端返回一个token,但是服务端不保存这个token

以后用户再来访问,需要携带token,服务端基于算法校验token。


JWT实现过程

看一下一个JWT长什么样(这是一句,由3段组成,中间小数点隔开,为了直观,我在小数点处换行)

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT-示例.png

第1、2段是通过base64url编码的,base64url解码结果如下:

atob('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9')
得到 "{"alg":"HS256","typ":"JWT"}"

atob('eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ')
得到 "{"sub":"1234567890","name":"John Doe","iat":1516239022}"

第3段就有些不同,它的生成步骤如下:

  1. 将第1、2段拼接起来;

  2. 将拼接结果进行加密,加密方法看第一段中有写,这里是HS256,可以加盐;

  3. 对HS256加密后的密文再进行base64url编码。

JWT-第三段.png

校验流程

用户再访问时,如何校验JWT?

1. 获取token

从请求体中取出token。

2. 切割token,进行base64url解码,获取信息

从header(第1段)中得到加密算法类型,这里假设是HS256。

从payload(第2段),一般我们在最初生成token时会带上token的过期时间戳,这里我们检查下过期了没,如果过期了则直接拒绝请求。

3. 校验token是否有效

第3段是用来校验token的,我们把进行

HS256(
    base64Url编码(header) + '.' +
    base64Url编码(payload),
    我加的盐
)

理论上得到的结果应该与第3段完全一致,如果不一致则说明token无效,拒绝请求。

相关文章

  • 浅析JWT

    1.JWT(JSON Web Token) JSON Web Token (缩写JWT) 是目前最流行的跨域认证解...

  • 身份验证之JWT

    什么是(JWT)JSON Web Token ? 官网介绍JSON Web Token(JWT)是一个开放标准(R...

  • JSON Web Token

    JSON Web Token (JWT)是一种基于 token 的认证方案。 JSON Web Token 的结构...

  • Laravel 5.2 JWT多用户认证

    Json Web Token JWT代表Json Web Token.JWT能有效地进行身份验证并连接前后端。 降...

  • Spring Boot使用JWT和自定义注解完成用户登录认证和权

    0x00 JWT(JSON Web Token) JWT的全称是JSON Web Token,它是一种紧凑的、UR...

  • JWT简介

    JSON Web Token (JWT) 参考资料:Introduction to JSON Web Tokens...

  • JSON Web Token

    What is JSON Web Token? JSON Web Token (JWT)是一个开放标准(RFC 7...

  • JWT token认证

    本文主要讲述两方面的内容1JSON Web Token(JWT)的介绍说明2 JSON Web Token(JWT...

  • jwt教程

    未完待续 JWT是什么? JWT是JSON Web Token的缩写,即JSON Web令牌。 JWT规范 中对其...

  • JWT 概述与代码实现

    一、什么是JSON Web Token? JSON Web Token(JWT)是一个开放标准(RFC7519),...

网友评论

      本文标题:JWT JSON web Token

      本文链接:https://www.haomeiwen.com/subject/hnjuyhtx.html