我已经看到几个 JMeter 线程与我的问题有关,但似乎没有一个能解决我的具体问题。
问题是 - 我正在测试的网站是这样工作的:
- 带有登录字段和提交按钮的主页。当您第一次在浏览器中浏览此页面时,会设置一个 PHPSESSID cookie(在响应标头中出现),并带有一个唯一值,以标识会话。
- 当用户单击登录按钮时(此页面上的用户名和密码与系统当前状态无关),Web 服务器通过 shibboleth 重定向到另一个运行 LDAP 的服务器。Shibboleth 需要 PHPSESSID cookie 的值才能继续。(验证用户来自正确的联合服务器)。
- 然后用户输入他们的帐户用户名和密码,然后单击登录按钮。
- (有效)帐户已登录到 LDAP 服务器;如果原始 (1) 服务器上不存在该帐户,则 shibboleth 将 LDAP 字段映射到原始服务器上的帐户数据库。然后用户登录到原始服务器(1)到新创建的帐户,并重定向到原始页面。
还有一些其他的 SAML 数据被交换——我认为这不会成为问题。. . 到目前为止,问题似乎出在这个 cookie 上。
JMeter 跌倒的地方是第 2 步。
- 如果我没有设置 cookie 管理器,LDAP 服务器会说我没有启用 cookie。(此错误在响应数据中)。
- 如果我设置了 HTTP cookie 管理器,但没有指定 PHPSESSID cookie,LDAP 服务器会说我没有启用 cookie。(我将其设置为哪个 Cookie 策略并不重要)
- 如果我指定 PHPSESSID cookie 值——当然,每个用户都需要有一个唯一的值,所以这是错误的。. . 所以我为初始页面设置了一个 RegExp 后处理器,从请求标头中提取 PHPSESSID 值,并将其放入变量 ${PHPSession} 然后我在 HTTP Cookie 管理器中为 PHPSESSID cookie 指定一个值 $ {PHPSession} 。. . 从字面上看,在标题中,* * 事物提交了“Cookie:PHPSESSID=${PHPSession}”
所以,我读了这个。. . https://issues.apache.org/bugzilla/show_bug.cgi?id=28715
实际上,(意译)“......cookie管理器不扩展用户变量......”然后“......好吧,我们修复了它......它确实扩展了用户变量......”然后“。 ..好吧,不,不在那个领域,它不是为了做那个而设计的。”
所以......基本上,他们说,HTTP Cookie Manager 无法管理对每个用户都有唯一价值的会话 cookie。(尽管这就是我认为的全部目的)。
我还能如何为从第一个响应标头中提取值的每个用户设置和提交唯一的 cookie?