使用JWT
身份令牌请求其他接口
应用场景
如果您的SQLRestful
实现需要通过应用网关调用其他微服务接口时,必然需要使用JWT
规范的
身份令牌来完成调用。
准备JWT
应用身份资料
通过应用网关调用其他微服务接口约定,生成JWT
请求令牌必须遵循JWT RS256
算法约定,需要准备证明应用身份的资料:
RSA
私钥:对应公钥在已在网关端登记注册JWT
安全令牌:协商密钥,由网关随机生成
以JWT
应用身份运行容器
准备JWT
应用身份资料后,我们需要把RSA
私钥文件加载到镜像的文件系统中,然后在运行命令行中加入jwt-keyfile
、jwt-secret
、jwt-expires
参数,如下示例命令:
docker run -ti --rm \
-v /path/of/app.pem:/sqlrestful/app.pem:ro \
snz1/sqlrestful \
-jwt-keyfile "/sqlrestful/app.pem" \
-jwt-secret "***********" \
-jwt-expires=3600 \
...
在文件中配置JWT
应用身份
_meta {
//...
jwt {
//RSA私钥(PEM格式)
rsa = <<PEM
//PEM私钥
PEM
//协商密钥
secret = "*****"
//请求令牌超时时间(秒)
expires = 1800
}
//...
}
使用JWT
请求令牌调用其他接口
通过上述配置后在JavaScript
脚本中我们便可以使用内置的call_api
函数携带令牌请求其他微服务接口:
(function(){
var ratdata = call_api("http://appgateway.domain/paht/of/api", {
method: "GET",
headers: {
...
},
body: {
...
}
})
})()
内置的
call_api
函数根据JWT
应用身份资料自动生成JWT
请求令牌请求指定的接口。
直接获取JWT
请求令牌
(function(){
var jwt_token = jwt_token()
})()