You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter配置Keycloak登录测试:如何捕获OIDC关键参数?

解决JMeter捕获Keycloak OIDC认证隐藏参数的问题

问题根源

你碰到的核心问题是:JMeter开启Follow Redirects后,会自动跳过中间重定向页面的响应内容。提交登录凭证后,JMeter直接跳转到最终回调页,不会保留login-actions/authenticate这个中间页的HTML,自然拿不到里面的隐藏表单参数。

分步解决办法

1. 关掉自动跟随,手动处理重定向

  • 在提交登录凭证的HTTP请求里,取消勾选Follow Redirects(后续可手动处理跳转)。这样JMeter会保留login-actions/authenticate页面的完整响应,不会直接跳走。
  • 新增一个HTTP请求,目标地址填https://keycloak.mywebsite.com/realms/myrealm/login-actions/authenticate,确保这个请求带上之前的Cookie和会话信息(靠JMeter的Cookie管理器自动维护即可)。

2. 提取隐藏参数的两种有效方式

针对login-actions/authenticate的响应,用下面两种方法提取参数:

方式一:CSS选择器提取器(推荐)

给这个请求添加CSS选择器提取器,分别配置三个规则:

  • 提取code:选择器填input[name="code"],属性选value
  • 提取id_token:选择器填input[name="id_token"],属性选value
  • 提取session_state:选择器填input[name="session_state"],属性选value

方式二:正则表达式提取器

如果CSS选择器不生效,就用正则匹配:

  • 提取code:正则表达式写<input type="hidden" name="code" value="(.+?)"
  • 提取id_token:正则表达式写<input type="hidden" name="id_token" value="(.+?)"
  • 提取session_state:正则表达式写<input type="hidden" name="session_state" value="(.+?)"
    记得把Template设为$1$,匹配数字选1。

3. 提交隐藏表单完成认证

拿到三个参数后,新增一个HTTP请求,提交到隐藏表单的action指向的业务回调地址,把code、id_token、session_state作为表单参数传进去,同时带上Cookie即可。

Keycloak OIDC流的优化技巧

  • 使用JMeter的OIDC插件:直接集成OIDC授权码流程,不用手动折腾表单和参数,插件会自动走完整个认证流程。
  • 复刻浏览器请求序列:用F12开发者工具抓一遍完整的登录流程,把所有请求头、Cookie、参数都记下来,在JMeter里完全照搬,确保上下文一致。
  • 检查Cookie管理器:所有请求必须共用同一个Cookie管理器,不然会话中断,参数肯定提取失败。

内容的提问来源于stack exchange,提问作者Danilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:46:10