将具有SAML身份验证的应用程序与Azure AD沿着作为IDP。当我点击“登录SSO”按钮时,会发生以下情况:
1.命中SAML重定向URL(/Saml/SAML登录重定向)
1.自动重定向到Ping联合程序。重定向的URL与第一个请求的响应标头一起接收。URL包含一些SAMLRequest标记和RelayState值。最终响应包含提交表单以及新的SAMLRequest标记和RelayState。
1.使用login.microsoftonline.com//saml2最终响应中的SAMLRequest和RelayState访问IDP(www.example.com)时,未按预期工作。
我已经在jmeter中解决了这个问题。我刚刚启用了Follow Redirect,所以jmeter提供了响应和cookie。我从URL中提取第一个请求的Header值。这只是因为Jmeter具有将重定向样本累积到原始请求中的特性。
1.因此,我再次点击Ping Federator,其中包含使用URL提取器接收到的令牌和中继状态沿着最终响应Cookie。
此外,我能够成功完成IDP流程。
我无法使用RestAssured来达到相同的效果。当我禁用重定向时,我可以从标头中获取URL。处理标头值中的URL会抛出500错误代码,尽管我已经添加了cookie信息。
如果我启用了重定向,我会得到200个响应代码沿着预期的响应主体和cookie。
但是,我无法使用从响应中接收到的令牌和中继状态继续Ping联合器,因此,我必须像使用jMeter一样,再次使用之前的SAML令牌来访问Ping联合器,以获得正确的响应。
问题:如果启用重定向,则无法获取标头值,进一步处理将失败。如果禁用重定向,则在处理标头值中的URL时,将无法获得Cookie和预期响应。在IDP(www.example.com)之前,此处都是GET请求login.microsoftonline.com
1条答案
按热度按时间s4n0splo1#
JMeter的HTTP Cookie Manager自动从Set-Cookie响应头中提取cookie,如果域和路径匹配且cookie未过期,则通过Cookie请求头将它们与下一个请求一起发送。
RestAssured不会自动执行此操作,因此您需要从响应中提取Cookie,并手动将其添加到下一个请求中。
参考文献:
接下来,您可以使用Fiddler或Wireshark之类的嗅探器工具来比较来自JMeter和RestAssured的请求,假设您发送相同的请求(除了需要关联的动态参数),您将得到相同的响应