使用 Shibboleth IdP 的 Web 浏览器 SAML SSO(无反向通道通信)

Web browser SAML SSO using Shibboleth IdP (without backchannel communication)

我刚刚使用我的 Web 应用程序配置 Shibboleth IdP3.2,该应用程序根据后端的 LDAP 服务器对用户进行身份验证。

我可以在本地机器上测试这个身份验证过程。但是,在 CI 服务器上部署代码时,我意识到身份验证过程无法成功完成。

此失败背后的原因是服务提供商 (SP) 无法访问 (IdP)。根据我们的初步调查,我们选择 SAML 作为身份验证协议而不是 CAS 等其他协议,因为它不需要反向通道通信。只要用户可以访问 SP 和 IdP,身份验证过程仍然有效。(SP 和 IdP 不需要相互交互)

经测试发现属性解析成功,后续工件解析失败。在工件解析中,IdP 直接联系 SP 并期待响应。 SP 无法向 IdP 发送响应,因为它不可访问。因此,认证失败。 (Tomcat 日志显示:unknownHostException)

Web 浏览器 SSO 中的某些 SAML 流程不需要 SP 和 IdP 之间的直接通信,如本 link 中的流程图所示。

Shibboleth IdP 是否为此类实施做出规定?是否有在没有任何反向通道通信的情况下实施 Shibboleth IdP 的解决方法?

SOLUTION:

正如 Stefan 所提到的,还有一些替代绑定,例如 HTTP-Redirect 和 HTTP-POST,它们不使用反向通道通信。您可以阅读有关这些绑定的更多信息 here

我更改了 SP 元数据以将 HTTP-POST 作为默认绑定,引用此 link

我不必对 Shibboleth IdP 配置进行任何更改,因为元数据文件证实了这些替代绑定已经得到支持。

根据 this documentation,您可以设置 outgoingBindings 属性来设置要使用的首选绑定。

我还建议从 SP 元数据中删除 HTTP-Artifact 绑定。