一、前言
最近有个需求,要对接腾讯会议。
主要有3个方面:
1.人员信息要传给腾讯,才能生成用户,才能参与腾讯会议;用到了IDaaS开放平台。
2.要通过接口创建会议、取消会议等。
3.后续主要需要从腾讯获取参会人员信息、参会时长等数据。
调用IDaaS开放平台的接口,用到了JWT Tocken;在此记录下使用方法。
二、JWT Tocken使用方法
1.JWT Tocken的组成部分
标准的JWT Tocken由3部分组成,分别是header、payload、signature;如下:
xxx.yyy.zzz
(1)header中会有参数类型、加密方法等信息,也可以自定义增加些其它信息,例如keyId等。
原始的header例如:
{
"typ": "JWT",
"alg": "HS256",
"version": "1.0"
}
当header加密后,就变成了:
xxx
(2)payload中会有登录用户的一些信息,例如用户id、token的发行时间、过期时间等,也可以自定义增加些其它信息。
原始的payload例如:
{
"userId": "001",
"userName": "zhangsan"
}
当payload加密后,就变成了:
yyy
(3)signature中,会有签名信息,签名信息是把header、payload中的内容加密后生成的;其中会用到一个私钥(可以理解为只保存在服务器内部的一串字符串,不对外公开,仅加解密用)。
原始的signature例如:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
myprivateKeyAbc123_alsdkjfaldjfwqer
)
这个方法执行后,就变成了:
zzz
(4)最后,这3部分拼接起来,就是:
xxx.yyy.zzz
这个就是JWT token;客户端先想办法生成这个tocken,然后传给服务器端;服务器端验证tocken合法性,进行解密,获取其中的信息,用这些信息继续进行下一步逻辑。
2.http/https中JWT tocken的使用方法
上面讲到了,JWT tocken中有header、payload、signature;
注意这个header,与http、https请求中的header是不一样的。
与腾讯会议对接中,JWT token是要放在Bearer请求头中的,样例如下:
Authorization Bearer xxx.yyy.zzz
其中,Authorization
是header中的key;
Bearer xxx.yyy.zzz
是header中对应的value;
Bearer
是固定写法,注意后面有一个空格;
xxx.yyy.zzz
就是JWT tocken。
这样,http/https请求头中就带上JWT tocken了。
三、其它笔记
可以访问https://jwt.io/
页面进行JWT tocken的加解密。