我正在2个不同域的2个网站之间实现典型的经典SSO。一个网站(称为站点1)由合作伙伴开发和托管,第二个网站(称为站点2)由我开发和托管。 我将伙伴ADFS用作Idp。
我安装并配置了Shibboleth SP3来管理site2上的身份验证:当我尝试访问site2时,我正确地重定向到了ADFS,并且可以正常工作。
我担心的是,最终用户将首先向site1进行身份验证,然后再访问site2,我们不希望他再次进行身份验证。
我对此有几个疑问,我不知道如何进行: -我是否需要使用Shibboleth SP3的相同实例来管理两个站点上的身份验证,管理cookie /标头,还是可以使用不同的实例(在这种情况下,我将对站点2使用Shibboleth,而合作伙伴将使用另一个SP用于site1) -如何管理从site1到site2的重定向?可以是request.redirect吗? site1应该发送带有特定参数的帖子还是获得请求?
谢谢!
答案 0 :(得分:1)
如果合作伙伴托管site1,则他们应该在该实例上运行Shibboleth,并与您在运行site2的实例上的IDP相同。
SSO的全部目的是不需要重新进行身份验证。即,用户访问site1,重定向到ADFS上的登录名,进行身份验证(用户正在接听IdP会话),然后重定向回site1,该站点将验证auth令牌(SAML断言)并向其显示内容。
现在,当它们(通过任何方式)被推送到site2时,site2会将对authnrequest的触发作为对用户的重定向,但这一次用户已经具有 ,因此ADFS服务器仅发出SAMLResponse。它们不会使用户重新登录。
这仅是因为两个SP都集成了相同的IdP。
在这种情况下,您可以根据需要重定向用户……但是这意味着在两个Web服务器上都运行Shibboleth实例。如果您真的只想使用一个Shibboleth实例,则可以创建一个SAML代理,其中一个Web服务器代表另一个代理来代理SAML断言,但这有点愚蠢。当是两台不同的服务器时,更容易运行到Shib安装。
如果两个站点都位于同一台服务器上,则可以执行相同的操作,基本上...每个站点都是Web服务器上的一个单独主机,您只需要配置每个站点(一个为默认站点,另一个为作为应用程序替代),尽管您甚至不必走得那么远。例如,如果您希望将站点1与IdP_A和IdP_B集成,而将站点2与IdP_A和IdP_C集成,则只需要具有单独的ApplicationOverride。参见:https://wiki.library.ucsf.edu/display/IAM/Steps+to+configure+multiple+context+in+Shib+SP