从 Base64 解码字符串中提取密钥
Extract a key from a Base64 decoded string
我正在尝试使用 BeanSheel PostProcessor 解码 JMeter 中的 base 64 格式字符串,并从字符串中提取 nameid
,我将在发送另一个请求时进一步使用它 (nameid)。
我尝试了以下代码,但它不起作用。
import org.apache.commons.codec.binary.Base64;
String decoded_response = new String(Base64.decodeBase64(data));
String memberId = decoded_response.nameid;
log.info("memberid", memberId)
它给我的错误是:
ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.commons.codec.binary.Base64; String decoded_response = new St . . . '' : Typed variable declaration : Cannot access field: nameid, on object: iDzÏí¢G§{"typ":"JWT","alg":"HS256"}{"nameid":"1862","unique_name":"user1@mywebsite.com","iss":"http://mywebsite-app.azurewebsites.net/","aud":"414e1927a3884f68abc79f7283837fd1","exp":1635435731,"nbf":1635349331}$S‘vC‡öRé™v„2xÉr}ïK…u®KŸäpÏƯ-¢G§þÜ©y·šêÞƘ«zÏâŸÎ·÷Ö¬rXžžßâvx
基本上我想在这里解码令牌并获取一些 id 字段以用于进一步的请求。这样做的好方法是什么?有没有其他方法可以将 nameid 存储在另一个变量中并在另一个请求中进一步使用它?
- 您需要解码 Base64URL,而不是 Base64
- 如果成功你会得到需要解析的JSON
- Since JMeter 3.1 you're supposed to use JSR223 Test Elements and Groovy language 用于脚本
所以我认为您需要将代码更改为:
def response = prev.getResponseDataAsString()
def parts = response.split('\.')
def part2 = org.codehaus.groovy.runtime.EncodingGroovyMethods.decodeBase64Url(parts[1])
def nameid = new groovy.json.JsonSlurper().parse(part2).nameid
更多信息:
我正在尝试使用 BeanSheel PostProcessor 解码 JMeter 中的 base 64 格式字符串,并从字符串中提取 nameid
,我将在发送另一个请求时进一步使用它 (nameid)。
我尝试了以下代码,但它不起作用。
import org.apache.commons.codec.binary.Base64;
String decoded_response = new String(Base64.decodeBase64(data));
String memberId = decoded_response.nameid;
log.info("memberid", memberId)
它给我的错误是:
ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import org.apache.commons.codec.binary.Base64; String decoded_response = new St . . . '' : Typed variable declaration : Cannot access field: nameid, on object: iDzÏí¢G§{"typ":"JWT","alg":"HS256"}{"nameid":"1862","unique_name":"user1@mywebsite.com","iss":"http://mywebsite-app.azurewebsites.net/","aud":"414e1927a3884f68abc79f7283837fd1","exp":1635435731,"nbf":1635349331}$S‘vC‡öRé™v„2xÉr}ïK…u®KŸäpÏƯ-¢G§þÜ©y·šêÞƘ«zÏâŸÎ·÷Ö¬rXžžßâvx
基本上我想在这里解码令牌并获取一些 id 字段以用于进一步的请求。这样做的好方法是什么?有没有其他方法可以将 nameid 存储在另一个变量中并在另一个请求中进一步使用它?
- 您需要解码 Base64URL,而不是 Base64
- 如果成功你会得到需要解析的JSON
- Since JMeter 3.1 you're supposed to use JSR223 Test Elements and Groovy language 用于脚本
所以我认为您需要将代码更改为:
def response = prev.getResponseDataAsString()
def parts = response.split('\.')
def part2 = org.codehaus.groovy.runtime.EncodingGroovyMethods.decodeBase64Url(parts[1])
def nameid = new groovy.json.JsonSlurper().parse(part2).nameid
更多信息: