Javascript 如何在Ajax中转发基于表单的SAML SSO重定向?

Javascript 如何在Ajax中转发基于表单的SAML SSO重定向?,javascript,ajax,forms,redirect,single-sign-on,Javascript,Ajax,Forms,Redirect,Single Sign On,我试图解决SAML SSO POST绑定的一个问题,其中受保护的Web应用程序包含Ajax脚本。在浏览器处理初始身份验证之后,Web应用程序的Ajax代码开始从服务器检索数据,没有问题。但是,当安全会话超时时,服务提供商SP会通过SAML SSO POST将SAMLRequest重新发送给身份提供商IdP,这是使用带有auto submit的表单实现的。因为这个响应的代码是200,所以带有SAMLRequest的表单最终会出现在Ajax回调中,Ajax回调并不期待它,现在也不需要处理它 我的问题

我试图解决SAML SSO POST绑定的一个问题,其中受保护的Web应用程序包含Ajax脚本。在浏览器处理初始身份验证之后,Web应用程序的Ajax代码开始从服务器检索数据,没有问题。但是,当安全会话超时时,服务提供商SP会通过SAML SSO POST将SAMLRequest重新发送给身份提供商IdP,这是使用带有auto submit的表单实现的。因为这个响应的代码是200,所以带有SAMLRequest的表单最终会出现在Ajax回调中,Ajax回调并不期待它,现在也不需要处理它

我的问题是:

Ajax回调代码是否有办法告诉浏览器它不想处理此响应,并要求浏览器以正常方式处理它

如果没有,我如何模仿浏览器的行为,即自动提交已填写的表单

谢谢,
Gang

您面临的问题是我在使用WIF和WS-Federation集成到SSO IdP时遇到的,在SSO IdP中,web应用程序大量使用AJAX。在Microsoft Identity Model中,会处理SAML令牌,并创建管理会话超时值的FedAuth Cookie。实际的最大会话生存期计算为时钟偏差加上SAML断言生存期,在大多数情况下为10分钟。当最大会话生存期到期时,基于代表SP web应用程序的Microsoft标识模型的WIF将通过WS-FED被动浏览器配置文件重新协商新的SAML令牌。如果web浏览器操作不涉及完整表单post(例如AJAX),则请求将无法处理。看起来应用程序好像挂起了,但实际上它仍然处于活动状态,用户需要单击浏览器刷新并继续处理

我实现的最佳解决方案是使用自定义DLL重载Microsoft Identity Model DLL,以计算比SAML断言加上时钟偏移更长的最大会话超时。解决方案是在web.config中有一个表示最大会话超时的值,例如4小时,从而避免了FedAuth Cookie过期时的AJAX问题

另一个变化是期望的行为是经常从SSOIDP获取SAML断言。这需要自定义DLL中的某些滑动逻辑来重载Microsoft标识模型DLL