如何使用jmeter对JWT进行编码

如何使用jmeter对JWT进行编码,jmeter,automated-tests,jwt,Jmeter,Automated Tests,Jwt,这是我的有效载荷 field1=valueField1&field2=valueField2&request=jwtEncodedRequest 其中,jwtEncodedRequest实际上是通过jwt编码的请求 目前我正在使用创建一个编码请求 有没有可能用jmeter将其自动化 是的,您可以: 与Groovy一起使用 使用以下命令计算令牌 将上述库添加到jmeter/lib文件夹 是的,您可以: 与Groovy一起使用 使用以下命令计算令牌 将上述库添加到jmeter/

这是我的有效载荷

field1=valueField1&field2=valueField2&request=jwtEncodedRequest
其中,
jwtEncodedRequest
实际上是通过jwt编码的请求

目前我正在使用创建一个编码请求

有没有可能用jmeter将其自动化

是的,您可以:

  • 与Groovy一起使用
  • 使用以下命令计算令牌
  • 将上述库添加到jmeter/lib文件夹
是的,您可以:

  • 与Groovy一起使用
  • 使用以下命令计算令牌
  • 将上述库添加到jmeter/lib文件夹
  • 将jar添加到
  • 重新启动JMeter以拾取.jar
  • 添加到您的测试计划中
  • 将以下代码放入“脚本”区域:

  • 您应该看到JWT令牌打印到jmeter.log文件:

  • 更多信息:

  • 将jar添加到
  • 重新启动JMeter以拾取.jar
  • 添加到您的测试计划中
  • 将以下代码放入“脚本”区域:

  • 您应该看到JWT令牌打印到jmeter.log文件:

  • 更多信息:


    您能否提供更多关于当前如何在jwt.io中生成令牌以及如何在JMeter中显示请求的详细信息?谢谢你的耽搁。。。请求如下所示:头->
    {“alg”:“RS256”,“fielda”:“fieldValue”}
    有效载荷->
    {“fieldPayload1”:“fieldPayloadValue1”,“fieldPayload2”:“fieldPayloadValue2”,“fieldPayload3”:“fieldPayloadValue3”,“fieldPayload4”:“fieldPayloadValue4”}
    验证签名-->
    (密钥)
    您能否提供更多关于当前如何在jwt.io中生成令牌以及如何在JMeter中显示请求的详细信息?谢谢你的耽搁。。。请求如下所示:HEADER->{code>{“alg”:“RS256”,“fielda”:“fieldValue”}有效载荷->
    {“fieldPayload1”:“fieldPayloadValue1”,“fieldPayload2”:“fieldPayloadValue2”,“fieldPayload3”:“fieldPayloadValue3”,“fieldPayload4”:“fieldPayloadValue4”}
    验证签名-->
    (密钥)
    Hi guy,我运行此代码并在macOS bellow中得到错误。请帮我修一下,谢谢!响应消息:javax.script.ScriptException:groovy.lang.MissingPropertyException:没有这样的属性:Jwts for class:Script1Hi guy,我运行此代码并在macOS bellow中获得错误。请帮我修一下,谢谢!响应消息:javax.script.ScriptException:groovy.lang.MissingPropertyException:没有此类属性:类:Script1的Jwts
    @Grab(group='io.jsonwebtoken', module='jjwt', version='0.9.1')
    
    import io.jsonwebtoken.*
    
    import java.security.PrivateKey
    import java.util.Base64
    import java.util.Base64.Decoder
    
    import java.nio.charset.StandardCharsets
    
    import java.security.interfaces.ECPrivateKey
    import java.security.KeyFactory
    import java.security.NoSuchAlgorithmException
    import java.security.spec.PKCS8EncodedKeySpec
    
    // Generating Tokens for API Requests
    // https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests
    
    def exp = (System.currentTimeMillis() / 1000 + 1200).intValue()
    //20 minutes from now
    
    //JWT Payload (update with your Issuer ID)
    String jsonString = """{"iss":"57246542-96fe-1a63-e053-0824d011072a","exp":${exp},"aud":"appstoreconnect-v1"}""";
    
    //Content of the AuthKey_2X9R4HXF34.p8
    /* 
    -----BEGIN PRIVATE KEY-----
    MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg74+aaeYnqEIewDn8
    Xh0rQXaQqAHSLGDyL9fV0p1hhxGgCgYIKoZIzj0DAQehRANCHOTEUjCMi4Vt7JGZ
    jsRP1zF765oerCqfvHZYGqSeJl8AmK0awchcqAaMlw7hROoA2MToqx+llo2p9lZC
    QYbeerau
    -----END PRIVATE KEY-----
    */
    
    //Key concatenated in a single line
    //You better not hard code this key
    def base64EncodedPrivateKey = "MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg74+aaeYnqEIewDn8Xh0rQXaQqAHSLGDyL9fV0p1hhxGgCgYIKoZIzj0DAQehRANCHOTEUjCMi4Vt7JGZjsRP1zF765oerCqfvHZYGqSeJl8AmK0awchcqAaMlw7hROoA2MToqx+llo2p9lZCQYbeerau"
    
    ECPrivateKey signingKey
    Base64.Decoder dec= Base64.getDecoder();
    keyBytes = dec.decode(base64EncodedPrivateKey.getBytes(StandardCharsets.US_ASCII));
    
    PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance("EC");
    signingKey = keyFactory.generatePrivate(keySpec);
    
    //Notice you don't need to encode the header nor the payload
    String jwtToken = Jwts.builder()
    //JWT Header
            .setHeaderParam("typ","JWT")
            .setHeaderParam("alg","ES256")
            .setHeaderParam("kid","2X9R4HXF34") //UPDATE with your Key Identifier
            .setPayload(jsonString)
            .signWith(SignatureAlgorithm.ES256, signingKey)
            .compact();
    
    log.info(jwtToken)