Json Web Token
最近公司项目在用jwt,感觉以后会再用得到,先写下自己理解的jwt用途范围,方便以后查找。
用途1:Build a dedicated JWT endpoint for the Support SDK in implementing Zendesk Service
在对接Zendesk 客户服务的时候,Zendesk第三方接口会调用我方接口,获取到JWT token的值,并自动解码随JWT token携带的用户信息,以便进行后续的服务支持。
Zendesk官方文档,JWT token 生成使用说明书:https://develop.zendesk.com/hc/en-us/articles/360001075248#build
上面文档里最重要的用户的四个信息:
name,email,jti,iat 分别代表的意思为:用户名、邮箱、jwtId(自动生成的随机Id)、issueAt(token 的生成时间,毫秒值)。
其次是注意点:
a).第三方获取的方式为请求body里的参数‘user_token’,这是用户登录我方应用后拿到的session,拿去做用户校验,再返回一个jwt token 给请求方.
b).返回的jwt token生成的密文,加密方式须为:HS256.
c).签名使用的钥匙必须用Zendesk官方授权的.
用途2:跨域身份验证
一些需要单点登录需求的网站可能会用到分布式结构的用户身份验证,例如:站点A和站点B提供同一公司的相关服务。现在要求用户只需要登录其中一个网站,然后它就会自动登录到另一个网站。怎么做?
我们这里可以使用JWT的验证功能: 通过客户端保存数据,而服务器根本不保存会话数据,每个请求都被发送回服务器。 JWT是这种解决方案的代表。流程图如下:
java 对应的使用方法:
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(key)).build(); jwt = verifier.verify(token);
上述包引入的链接中也含有其他语言对应的使用方式。请自行对号寻找:
https://jwt.io/