是否可以将 Shibboleth SP 配置为对单个网站使用多个 IdP?

Can Shibboleth SP be configured to use mutliple IdPs for a single website?

我在 Windows Server 2012 上的 IIS 8 上有一个 ASP.NET 网站 运行。该网站是一个站点 - 例如,www.example.com - 由不同的公司。每个公司在网站上都有几个用户。

目前,我们要求网站上的每个用户都在网站上创建一个帐户,这就是他们进行身份验证的方式。

但是,一些公司希望让他们的用户通过 Shibboleth 进行身份验证。我过去曾在 Windows 上安装过 Shibboleth SP,但据我所知,它的设计使得整个站点只有一个 Shibboleth IdP。在这种情况下,我们需要能够让用户 A 和 B 使用一个 Shibboleth IdP 进行身份验证,而用户 X、Y 和 Z 需要使用不同的 Shibboleth IdP。

此配置是否适用于 Windows 上的 Shibboleth SP?有什么好的 examples/walkthroughs 可以特别探索这种情况吗?

Shibboleth 服务提供商完全能够处理来自多个身份提供商的用户。一个相当正常的用例是许多身份提供者和许多服务提供者参与 SAML 2.0 身份联合,这使服务提供者能够潜在地信任和验证来自所有参与身份提供者的所有用户。

对于您的用例,您需要

  1. 建立信任

    • 从您希望建立信任的所有身份提供者获取元数据。
    • 对于每一个你应该在你的配置文件中设置一行(shibboleth2.xml)如下 <MetadataProvider type="XML" file="idpX-metadata.xml"/>

这将使您的服务提供商允许与您在其中指定的所有身份提供商进行 SSO。

  1. 允许用户select他们隶属于哪个身份提供商(公司)。如果您使用 Shibboleth Service Provider,这会非常简单,因为您可以使用嵌入式发现服务(参见 here

  2. 根据属性声明中的作用域属性或身份提供者(SAML 断言的颁发者)的 EntityID 正确区分来自不同公司的用户(出于授权原因)

Shibboleth SP wiki would have all the necessary information. Additionally you can check SP installation/configuration guides like this or this。他们假设参与身份联合,但对于您的用例,唯一的区别是他们将有一个元数据文件(联合元数据),您将在其中为每个身份提供者提供一个元数据文件。