我刚刚使用我的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配置进行任何更改,因为这些替代绑定已经得到支持,正如元数据文件所证实的那样。
答案 0 :(得分:2)
根据this documentation,您可以设置outgoingBindings属性以设置要使用的首选绑定。
我还建议从SP元数据中删除HTTP-Artifact绑定。