求JSR223预处理器Groovy代码:按规则从code_verifier生成code_challenge
JSR223预处理器Groovy代码实现code_challenge生成
以下是符合code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))规则的Groovy代码,可直接用于JMeter的JSR223预处理器:
// 替换为你的code_verifier,或从JMeter变量读取:vars.get("code_verifier") def codeVerifier = "your_code_verifier_value" // 转换为ASCII字节数组 def asciiBytes = codeVerifier.getBytes("ASCII") // 计算SHA256哈希值 def sha256Hash = java.security.MessageDigest.getInstance("SHA-256").digest(asciiBytes) // 执行URL安全的Base64编码(无填充、替换+/为-_) def codeChallenge = new String(java.util.Base64.getUrlEncoder().withoutPadding().encode(sha256Hash)) // 将结果存入JMeter变量,供后续请求使用 vars.put("code_challenge", codeChallenge) // 可选:控制台打印结果用于验证 log.info("生成的code_challenge:" + codeChallenge)
代码说明
- 若code_verifier已存于JMeter变量中,直接把第一行替换为
def codeVerifier = vars.get("code_verifier")即可。 - 严格遵循规则步骤:ASCII编码转换 → SHA256哈希 → 无填充的URL安全Base64编码。
- 生成的code_challenge会被存入JMeter变量
code_challenge,后续请求可通过${code_challenge}引用。
内容的提问来源于stack exchange,提问作者Narendra
相关产品推荐
相关产品推荐

