1

I am trying to create a JWT to get an access token for a Google Service Account to use in a Postman Pre-Request script.

But I keep getting this error in the Postman Console:

Error:

And in the Postman Response window I get:

There was an error in evaluating the Pre-request Script:  undefined: undefined

I localized the error to be failing here:

var jwt = KJUR.jws.JWS.sign(null, header, claimSet, privateKey);

I'm importing it by using a request to http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js and saving it to an environment variable called jsrsasign then rehydrating it below with eval.

Pre-Request Script:

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);

Similar issue to this guy's comment on Medium: https://medium.com/@jkohne/hi-klaasjan-tukker-im-trying-to-get-the-library-import-and-eval-to-work-for-jsrsasign-c0c457ddd23f

4

1 回答 1

1

我能够解决这个问题。

我的私钥已经转义了其中的空格字符(\n\t

我打开了谷歌浏览器开发工具并将其保存到带有模板文字的变量中,然后控制台将其注销以获取格式正确的密钥。

另一种选择可能只是在 Postman 中这样做。

在那之后,它奏效了。

已发布集合: https ://documenter.getpostman.com/view/8140651/SWECYFyf?version=latest

于 2019-12-18T23:59:17.587 回答