我能够使用以下代码成功地将 JWT 令牌有效负载 base64Decode 为 JSON,而无需 Java 方法:
Background:
* def parseJwt =
"""
function(token) {
var base64Url = token.split('.')[1];
var base64Str = base64Url.replace(/-/g, '+').replace(/_/g, '/');
var Base64 = Java.type('java.util.Base64');
var decoded = Base64.getDecoder().decode(base64Str);
var String = Java.type('java.lang.String')
return new String(decoded)
};
"""
Scenario: JWT Token
Given path 'jwt/authenticate'
And header x-goog-authenticated-user-email = 'email'
And request {}
When method get
Then status 200
* json result = parseJwt(responseHeaders['Set-Cookie'][0])
* match result == {permissions: [1,2,3], iss: "us", exp: "#number", email: "email"}
注意:如果将字符串解析为 json 本身,它似乎确实需要使用,json
而不是def
像 Karate 那样做得更好。此外,如果是这样,您可以从标头而不是 cookie 中获取令牌,如果是这样,只需更改您正在寻找的 responseHeader。