加特林验证解码的JWT令牌

时间:2019-12-12 12:19:11

标签: java scala gatling

我正在尝试解码返回的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?

谢谢

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

     .check(jsonPath("$.access_token")
        .transform(jwt => JWT.decode(jwt).getClaim("preferred_username").asString())
        .is(session => {
          session("username").as[String].toLowerCase()
        })

最后为我工作