【问题标题】:Not able to decode jwt token in JMeter using PostProcessor无法使用 PostProcessor 在 JMeter 中解码 jwt 令牌
【发布时间】:2021-07-23 12:53:40
【问题描述】:

我是 JMeter 的新手。我想对我的一个应用程序进行一些负载测试。 我想解码 JWT 令牌并从那里获取会话 id,它必须附加到 JMeter 变量中。

下面是我的代码

import com.auth0.jwt.*

log.info("Hello")
def jwt = JWT.decode(vars.get('idToken'))
log.info(jwt)

vars.put('sessionId', jwt.getClaim('sessionId').asString())
log.info(jwt.getClaim('sessionId').asString())

执行此代码时出现一些错误

下面是异常信息

javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: JWT for class: Script11
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320) ~[groovy-jsr223-3.0.7.jar:3.0.7]
    at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71) ~[groovy-jsr223-3.0.7.jar:3.0.7]
    at javax.script.CompiledScript.eval(CompiledScript.java:93) ~[java.scripting:?]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:217) ~[ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) [ApacheJMeter_components.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:955) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:573) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.4.1]
    at java.lang.Thread.run(Thread.java:831) [?:?]

需要解决此问题的建议。

JMeter 版本:5.4

【问题讨论】:

    标签: groovy jmeter jwt load-testing


    【解决方案1】:

    在运行脚本之前,您需要在JMeter Classpath 中拥有java-jwt-x.xx.x.jar 及其dependencies

    对于latest stable version 3.18.1,您将需要以下 .jar:

    • jackson-annotations-2.11.0.jar
    • jackson-core-2.11.0.jar
    • jackson-databind-2.11.0.jar
    • java-jwt-3.18.1.jar

    如果您已经在 J​​Meter 类路径中拥有它们,您将不得不重新启动 JMeter 以获取库

    完成后,您应该可以使用从某处复制和粘贴的代码:

    使用来自https://jwt.io/网页的JWT令牌eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c进行演示:

    有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - Why and How You Should Use It

    【讨论】:

    • 在 lib 文件夹中添加了 java-jwt-3.18.1.jar。仍然面临同样的问题
    • 通过在/usr/local/Cellar/jmeter/5.3/libexec/lib路径中添加文件解决了
    猜你喜欢
    • 2021-06-30
    • 2020-12-01
    • 2019-09-24
    • 2021-12-30
    • 2018-10-05
    • 2021-09-11
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    相关资源
    最近更新 更多