我正在使用 jmeter 对使用 PKCE 的授权代码流进行登录的移动应用程序进行负载测试。
在我的 Jmeter 脚本中,我使用 JSR223 预处理器生成代码验证器和代码质询、随机数和状态(随机数和状态值生成不同)。
在脚本中,初始阶段我在移动设备中启动带有网址的应用程序,在记录的这个“/oauth2/auth”请求期间。我正在通过代码挑战,“/oauth2/auth”的请求参数中的随机数和状态,并且请求成功执行。
然后我使用用户名和密码登录,并通过登录验证程序获得正确的响应。
然后登录后,还有一个“/oauth2/auth”身份验证请求,其参数为:访问id、客户端id、代码质询、代码质询方法:S256、origin、login_verifier、nonce、state、scope、redirect uri: io.identityserver.xyz:/oauthredirect
我已经通过了最初生成的代码挑战、随机数和状态值,还从登录响应中获取了登录验证器并传入请求。
我不知道我哪里做错了。我应该得到代码作为响应,但出现以下错误:
java.net.MalformedURLException: unknown protocol: io.identityserver.xyz at java.net.URL.<init>(URL.java:617) at java.net.URL.<init>(URL.java:507) at org.apache.jmeter.protocol.http.util.ConversionUtils.makeRelativeURL(ConversionUtils.java:198) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.followRedirects(HTTPSamplerBase.java:1679) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.resultProcessing(HTTPSamplerBase.java:1776) at org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl.resultProcessing(HTTPAbstractImpl.java:554) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:738) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:66) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1311) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1300) at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:651) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:570) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) at java.lang.Thread.run(Thread.java:750)
我还检查了标头,其中的身份验证请求在应用程序中启动网址期间正确执行,并且所有标头都位于正确的位置。
我使用以下逻辑来创建代码挑战: 在此输入图片描述 `
还使用以下逻辑来创建随机数和状态: 在此输入图片描述
应该会得到一个正确的验证码作为响应。