首页 > 解决方案 > Gatling 验证解码的 JWT 令牌

问题描述

我正在尝试解码返回的 JWT 令牌,并检查子声明是否与用户名匹配。但我似乎找不到这样做的语法。

...
      .check(status.is(HttpResponseStatus.OK.code()))
      .check(jsonPath("$.access_token").saveAs("access_token"))
      .check(jsonPath("$.refresh_token").exists)
      .check(JWSObject.parse("${access_token}").getPayload.toJSONObject.get("sub").toString.substring("$username"))

我在期待 HttpCheck 时遇到错误,这种类型是否有 HTTPCheck?

谢谢

标签: javascalagatling

解决方案


这几乎正​​是 .transform 的用途。您使用 jsonPath 提取令牌,进行转换以获取子,然后断言它与用户名匹配。

(我还没有尝试过实际的 jwt 提取/验证)

.check(jsonPath("$.access_token").transform(jwt => JWT.decode(jwt).getClaim("sub").asString()).is("${username}")

推荐阅读