用于为 Google 服务帐户创建 JWT 的 Postman 预请求脚本
Postman Pre-Request Script to create JWT for Google Service Account
我正在尝试创建一个 JWT 来获取 Google 服务帐户的访问令牌,以便在 Postman 预请求脚本中使用。
但我在 Postman 控制台中不断收到此错误:
Error:
在邮递员回复中 window 我得到:
There was an error in evaluating the Pre-request Script: undefined: undefined
我将错误本地化为失败:
var jwt = KJUR.jws.JWS.sign(null, header, claimSet, privateKey);
我通过使用对 http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js
的请求来导入它,并将它保存到一个名为 jsrsasign
的环境变量中,然后在下面用 eval 重新水化它。
预请求脚本:
var navigator = {};
var window = {};
eval(pm.environment.get("jsrsasign"));
var scope = pm.environment.get('scope');
var iss = pm.environment.get('iss');
var privateKey = pm.environment.get('privateKey');
const header = {"alg" : "RS256", "typ" : "JWT"};
const claimSet =
{
"iss": iss,
"scope": scope,
"aud":"https://oauth2.googleapis.com/token",
"exp":KJUR.jws.IntDate.get("now + 1hour").toString(),
"iat": KJUR.jws.IntDate.get("now").toString()
}
console.log(`header: ${ JSON.stringify(header)}`);
console.log(`claim set: ${ JSON.stringify(claimSet) }`);
var jwt = KJUR.jws.JWS.sign(null, header, claimSet, privateKey);
pm.environment.set('jwt', jwt);
与此人在 Medium 上的评论类似的问题:
https://medium.com/@jkohne/hi-klaasjan-tukker-im-trying-to-get-the-library-import-and-eval-to-work-for-jsrsasign-c0c457ddd23f
我能够解决这个问题。
我的私钥转义了白色 space 个字符 (\n
,\t
)
我打开了 google chrome 开发工具,并将其保存到一个带有模板文字的变量中,然后控制台将其注销以获取格式正确的密钥。
另一个选项也可以在 Postman 中执行此操作。
在那之后,它起作用了。
已发布的合集:
https://documenter.getpostman.com/view/8140651/SWECYFyf?version=latest
我正在尝试创建一个 JWT 来获取 Google 服务帐户的访问令牌,以便在 Postman 预请求脚本中使用。
但我在 Postman 控制台中不断收到此错误:
Error:
在邮递员回复中 window 我得到:
There was an error in evaluating the Pre-request Script: undefined: undefined
我将错误本地化为失败:
var jwt = KJUR.jws.JWS.sign(null, header, claimSet, privateKey);
我通过使用对 http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js
的请求来导入它,并将它保存到一个名为 jsrsasign
的环境变量中,然后在下面用 eval 重新水化它。
预请求脚本:
var navigator = {};
var window = {};
eval(pm.environment.get("jsrsasign"));
var scope = pm.environment.get('scope');
var iss = pm.environment.get('iss');
var privateKey = pm.environment.get('privateKey');
const header = {"alg" : "RS256", "typ" : "JWT"};
const claimSet =
{
"iss": iss,
"scope": scope,
"aud":"https://oauth2.googleapis.com/token",
"exp":KJUR.jws.IntDate.get("now + 1hour").toString(),
"iat": KJUR.jws.IntDate.get("now").toString()
}
console.log(`header: ${ JSON.stringify(header)}`);
console.log(`claim set: ${ JSON.stringify(claimSet) }`);
var jwt = KJUR.jws.JWS.sign(null, header, claimSet, privateKey);
pm.environment.set('jwt', jwt);
与此人在 Medium 上的评论类似的问题: https://medium.com/@jkohne/hi-klaasjan-tukker-im-trying-to-get-the-library-import-and-eval-to-work-for-jsrsasign-c0c457ddd23f
我能够解决这个问题。
我的私钥转义了白色 space 个字符 (\n
,\t
)
我打开了 google chrome 开发工具,并将其保存到一个带有模板文字的变量中,然后控制台将其注销以获取格式正确的密钥。
另一个选项也可以在 Postman 中执行此操作。
在那之后,它起作用了。
已发布的合集: https://documenter.getpostman.com/view/8140651/SWECYFyf?version=latest