由于对 SSO/SAML 缺乏了解,我的大脑快要爆炸了。我目前正在开展一个项目,我们正在使用 shibboleth 实施 SSO 身份提供者。
我们已经启动并运行了 SSO,并且能够通过一个应用程序进行身份验证并导航到另一个不受挑战的应用程序。现在,下一个要求是让应用程序 A 返回一个页面,该页面对应用程序 B 进行 Ajax 调用而无需质询。
现在,由于我们已经设置好前端通道(通过浏览器重定向),然后当我们对 App A 进行 Ajax 调用时,我们会收到 301 响应,并且 SP/IdP 之间的重定向开始,而 Ajax 显然没有遵循。
另一方面,如果我们从 App A 向 App A 进行 Ajax 调用,那么它会通过其本地会话 Id 发送,并且无需发送重定向来与 IdP 通信。
现在,如果我通过浏览器手动导航到 App B 并允许发生所有重定向(因此也检索 App B 的本地会话 cookie)。然后我仍然无法从 App A 的响应中发出 Ajax 请求。原因显然是浏览器不会发送 App B 的 cookie 信息,因为我们正在访问 App A 域上的页面。
所以我的问题如下:
如果 App A 和 App B 是同级子域,我们能否以某种方式让浏览器通过所有必需的会话 cookie?
我收集到这种 Sp/IdP 通信可以通过反向通道发生,与通过浏览器发生的重定向相对应。我不明白这是怎么可能的:-)。如果我通过 App A 登录,那么 IdP 会添加它自己的会话 cookie,因此在访问 App B 后发生重定向时,它不必重新验证我的身份。但是,如果这不是通过重定向完成的,那么当我访问 App B 时,它可以向 IdP 发送什么来对我进行身份验证,因为我的浏览器首先没有将 IdP 的 cookie 传递给 App B。
笔记:
对不起,如果这不是太清楚,我现在真的无法很好地解释这一点。也许我最好解释一下我需要实现的目标。
- 点击应用程序并使用 SSO 登录
- 我登录的应用程序是一个门户类型的应用程序,上面有一堆 ajax 小部件。
- 每个 widgit 都会对其他应用程序进行 Ajax 调用,这些应用程序也受 SSO 保护
有任何想法吗?干杯,克里斯。