OAuth

RFC6749 RFC7519

JWT Token #

  • header:也就是头部信息,是描述这个 token 的基本信息,json 格式
  • payload:载荷,也是一个 JSON 对象,用来存放实际需要传递的数据。不建议存放敏感信息,比如密码。
  • Signature 签名 是对前两部分的签名,防止数据被篡改。 需要指定一个密钥。这个密钥只有服务器才知道,不能泄露。使用 Header 里面指定的签名算法,按照公式产生签名。

算出签名后,把 Header、Payload、Signature 三个部分拼成的一个字符串,每个部分之间用 . 分隔。这样就生成了一个 token

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ODIsImtleSI6ImQxNWJjYWE0LTM0NmItNDNjNC05MzRmLTMxNDE4MTlmYjY1MSIsInVzZXJuYW1lIjoiMWlwenZjIn0.c_kLn1OMkPYlZsTfMHGqQXVmApCMBV4ZjwCfC911H38

refresh token #

refresh token是OAuth2 认证中的一个概念,和OAuth2 的access token 一起生成,表示更新令牌,过期所需时间比access toen 要长,可以用来获取下一次的access token。

如果JWT 需要添加 refresh token支持,refresh token需要满足的条件有一下几项:

  1. 和JWT一起生成返回给客户端
  2. 有实效时间,有效时间比JWT要长
  3. 只能用来换取下一次JWT,不能用于访问认证
  4. 不能重复使用(可选)

refresh token 获取流程

refresh token 使用流程

https://www.ruanyifeng.com/blog/2019/04/github-oauth.html

https://www.cnblogs.com/smileZAZ/p/17350349.html

https://juejin.cn/post/7035797194808492069

https://nickxu.me/post/jwt-refresh-token

理解JWT(JSON Web Token)认证及实践