Javascript 和 SAML 重定向失败

标签 javascript cors saml shibboleth

我尝试访问 http://**/rest 上受 Shibboleth SAML Serviceprovider 保护的资源。为此,我对该地址进行了 XMLHttpRequest 调用。在资源服务器上设置了 CORS header ,如果没有 SAML 身份验证,一切正常。 但是,如果激活了 SAML 身份验证,我会在 Chrome 中收到以下错误:

XMLHttpRequest cannot load *****/rest. The request was redirected to 'https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO?SAMLRequest=********', which is disallowed for cross-origin requests that require preflight.

如果我查看网络控制台,我可以看到以下请求:

1.

Request URL:http://<resource_server>/rest
Request Method:OPTIONS
Status Code:200 OK

2.

Request URL:http://<resource_server>/rest
Request Method:GET
Status Code:302 Found
Response-Header: Location:https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO?SAMLRequest=*****

因此似乎重定向将被初始化,但由于上述错误而停止。

有没有人知道我如何让它工作?

问候

菲利普

最佳答案

302 响应不是错误。这就是受 SAML 保护的资源请求身份验证的方式:通过将用户重定向到身份提供者。但是,由于您正在进行 AJAX 调用,因此浏览器无法按照重定向进行身份验证。

假设通用 Web 浏览器 SSO 配置文件:浏览器客户端需要在支持 http://**/rest 的同一应用程序中建立身份验证 session 在进行 AJAX 调用之前。大多数身份验证 session 状态都是使用 cookie 管理的,所以我希望一旦您拥有应用程序的 session cookie,对 http://**/rest 的请求+ session cookie 将导致成功。

还有增强型客户端或代理 (ECP) 配置文件。这将需要将身份验证 SAML 负载从 IDP 传递到资源 - 请参阅规范 https://www.oasis-open.org/committees/download.php/35389/sstc-saml-profiles-errata-2.0-wd-06-diff.pdf .

关于Javascript 和 SAML 重定向失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242686/

相关文章:

javascript - 消息提醒不起作用

java - Socket io 提示 CORS

express - 如何启用 DELETE 请求?

java - SAML 中的 ID 提供商

javascript - 在javascript中获取另一个元素内的html元素

javascript - 如何让javascript将多维数组转换为字符串?

javascript - 减少时如何使用 TS 泛型从状态中提取正确的类型

http - CORS - ...不支持 http 方法 'OPTIONS'

saml - SAML 身份验证请求中是否允许使用属性?

saml - 将用户从 SP 注销但不从 IDP 注销