在JMeter中维护对Keycloak的HTTP请求之间的状态

Flo*_*olk 7 jmeter keycloak

因此,我尝试自动化创建Keycloak用户的JMeter脚本,然后对其进行签名.

首先它获取登录页面并存储代码,这是一个示例请求:

GET http://Keycloak.com:8001//auth/realms/REALM/protocol/openid-connect/auth?response_type=code&client_id=CLIENT&scope=openid%20profile%20email&nonce=N5b3a2da23c04a&response_mode=form_post&resource=RESOURCE&state=2SJwtlVZrswlGkw&redirect_uri=REDIRECTURI
Run Code Online (Sandbox Code Playgroud)

但是,当我然后获取注册页面时,代码会更改,tab_id也会更改.如何让keycloak不会在线程中的每个HTTP请求中生成新的代码令牌?

另外,为什么每个使用JMeter的HTTP请求都像新会话而不是系列中的下一个请求?


编辑:

我使用正则表达式提取器来跟踪代码和执行变量,以及为线程使用HTTP Cookie管理器和HTTP缓存管理器.

查看我的POST请求,两个变量都与之前的HTTP请求相同,并且我的所有cookie都被维护,但每次尝试此自动登录时,我都会收到400错误,并且keycloak事件日志显示invalid_code错误.


编辑: 这里要求的是我所有登录请求的屏幕截图 在此输入图像描述

UBI*_*ACK 4

您的正则表达式提取器很可能没有嵌套在您尝试从中提取数据的 HTTP 请求中。

如果其范围太宽,它将适用于所有 HTTP 请求,因此第一次成功提取,但对于下一个不包含令牌的请求,提取器将运行并用空值覆盖旧值。

请参阅 JMeter 中的范围规则: