或者,有人确定不能做到这一点吗?
我正在尝试使用Jmeter对使用OKTA Oauth2进行授权但使用ADFS / SSO进行身份验证的站点进行负载测试。看来,身份验证方案是带有KERBEROS的SPNEGO,它应该由HttpClient支持。我对OKTA部分没有任何问题,但是无法让Jmeter对SSO服务器进行身份验证。
我有一个HTTP Cookie管理器以及一个具有一些常见请求标头值的HTTP标头管理器。当需要其他请求标头值时,我将单独的HTTP标头管理器与HTTP请求采样器一起使用。构造请求标头没有问题(下面的步骤6中有一个例外),并且cookie均已正确处理。我正在为HTTP请求采样器使用默认的HttpClient4实现。我仅在以下指示的地方使用HTTP授权管理器。我们的安全团队提供了用户和密码,以及相关的密钥表,以及领域,域,KDC和管理服务器。已配置krb5.conf和jaas.conf并指定了它们的位置。我没有任何Java异常。
Jmeter log extract:
DEBUG o.a.h.i.c.TargetAuthenticationStrategy: Authentication schemes in the order of preference: [Negotiate, Kerberos, NTLM, CredSSP, Digest, Basic]
DEBUG o.a.h.i.c.TargetAuthenticationStrategy: Challenge for Kerberos authentication scheme not available
DEBUG o.a.h.i.c.TargetAuthenticationStrategy: Challenge for CredSSP authentication scheme not available
DEBUG o.a.h.i.c.TargetAuthenticationStrategy: Challenge for Digest authentication scheme
问题是Jmeter无法响应服务器执行多步身份验证过程的任何挑战。
答案 0 :(得分:0)
假设配置正确,这应该不是问题。适用与正常负载测试相同的规则:JMeter必须发送与真实浏览器相同的网络流量模式。您可以使用Wireshark之类的嗅探工具再次检查它。
仔细检查您是否在 user.properties 文件中设置了以下Kerberos-related JMeter properties:
kerberos.spnego.delegate_cred=true
kerberos.spnego.strip_port=false
kerberos_jaas_application=name_of_your_application_from_the_jaas_conf
以防万一将下一行添加到 system.properties 文件:
sun.security.krb5.debug=true
参考文献: