互联网用户登录模式变迁史(三)

JWT 是什么

JWT(JSON Web Token)是一个开放标准(RFC 7519),它是自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。

JWT 长什么样

jwt

Header

由两部分组成:token 的类型(“JWT”)和算法名称(比如:HMAC SHA256 或者 RSA 等等)

Payload

它包含实体和数据的声明。声明有三种类型:

  • registered claims: 不是强制的,只是推荐。比如: iss(jwt 签发者),exp(jwt 的过期时间),sub(jwt 所面向的用户),aud(接收 jwt 的一方),iat(jwt 的签发时间)等。

  • public claims:可以随意定义。

  • private claims:用于在同意使用他们的各方之间共享信息,并且不是注册或公开的声明。

注:不要在 Payload 中放置敏感消息

签名(Signature)

通过下面的公式得到签名。用于验证消息在传递过程中是否被篡改,如果使用私钥的 token,还可以验证 JWT 的发送方是否为它所称的发送方。

1
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

可以到https://jwt.io/官网具体查看。

jwt.io

JWT 应用场景

Authorization (授权)

用户登录成功后,每次请求都会携带这个 jwt,允许用户访问这个令牌允许访问的各种资源(资源或者 url 或者服务),单点登录也很流行使用 jwt。

Information Exchange (信息交换)

因为 jwt 最后一部分是签名,可以判断 payload 中的数据是否被别人篡改。

JWT 执行流程

jwt执行流程


添加微信 公众号更多内容
wechat gzh