Не удается декодировать токен jwt в JMeter с помощью постпроцессора

#groovy #jmeter #jwt #load-testing

Вопрос:

Я новичок в JMeter.Я хочу выполнить некоторое нагрузочное тестирование на одном из своих приложений. Я хочу расшифровать токен JWT, и оттуда мне нужно получить идентификатор сеанса, и он должен быть добавлен в переменную 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

Ответ №1:

Вам нужно иметь java-jwt-x.xx.x.jar вместе с его зависимостями путь к классу JMeter перед запуском скрипта.

Для последней стабильной версии 3.18.1 вам потребуется следующее .:

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

Если они у вас уже есть в JMeter Classpath, вам придется перезапустить JMeter, чтобы забрать библиотеки

После этого вы сможете использовать код, который вы скопировали и вставили откуда-то:

Демонстрация с использованием токена JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c от https://jwt.io/ веб-страница:

введите описание изображения здесь

Дополнительная информация о скриптах Groovy в JMeter: Apache Groovy — Почему и как Вы должны его использовать

Комментарии:

1. Добавлено java-jwt-3.18.1.jar в папке lib.По-прежнему заполняется та же проблема

2. Решил эту проблему, добавив файл в /usr/локальный/Cellar/jmeter/5.3/libexec/lib путь