我的大脑即将因缺乏对SSO / SAML的理解而爆发。我目前正在开发一个项目,我们正在使用shibboleth实现一个SSO身份提供者。
我们已启动并运行SSO,并且能够通过一个应用程序进行身份验证并导航到另一个应用程序。现在,下一个要求是让App A返回一个页面,该页面对App 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 A的cookie信息发送,因为我们正在App A的域上点击一个页面。
所以我的问题如下:
如果App A和App B是兄弟子域,我们能以某种方式让浏览器通过所有必需的会话cookie吗?
我认为这种Sp / IdP通信可以通过反向通道发生,作为通过浏览器发生的重定向。我不明白这是怎么可能的:-)。如果我通过应用程序A登录,那么IdP会添加它自己的会话cookie,因此在访问应用程序B后重定向发生时不必重新验证我。但是,如果这不通过重定向完成,那么当我访问应用程序B时什么可以发送给IdP来验证我,因为我的浏览器首先没有将IdP的cookie传递给App B.
注意:
对不起,如果不太清楚,我现在真的无法解释这个问题。也许我最好解释一下我需要实现的目标。
有什么想法吗? 干杯,克里斯。