如何使用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文件夹
{“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)