首页 > 解决方案 > 如何在 Shibboleth 中配置多个 IDP

问题描述

我已经安装了 shibboleth 3.0.2 版本。我正在托管一个单页应用程序,需要通过 ADFS 登录来保护它。对于不同的用户集,有两个 ADFS。

我对如何实现这一点几乎没有疑问。

  1. 如何在 shibboleth2.xml 文件中配置两个 IDP。元素只允许一次。我提供了两个具有不同元数据文件的标签,但是当我单击链接 https://devserver.testhost.com/Shibboleth.sso/DiscoFeed时,它向我显示了两个具有相同 IDP 的“entityID”元素。

  2. 系统如何与两个 IDP 一起工作。确定何时调用哪个 IDP 的过程应该是什么。与单个 IDP 一样,我可以在我的 Apache 配置中执行以下操作。每当上下文路径被命中时,apache 会将调用重定向到 shibboleth,并将 shibboleth 重定向到 IDP。

<Location /my-first>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  require valid-user
</Location>

但是我有点困惑,因为当有多个 IDP 时,如何决定调用哪一个。

你能帮我解决上述问题吗?

谢谢

标签: adfsshibboleth

解决方案


您需要将 Shibboleth Embedded Discovery Service (EDS)[1] 与您的 Service Provider 安装一起运行,以便当用户请求受保护的资源(即 /secure)时,他们会被转移到提示他们选择的发现服务他们想要对其进行身份验证的身份提供者。

/Shibboleth.sso/DiscoFeed url 用于配置 EDS,以便它知道为服务提供者配置了哪些身份提供者的详细信息,以及它应该在下拉列表中包含哪些信息。

EDS 只不过是一些 Javascript 来解析 JSON 并创建适当的 URL 供用户使用下拉菜单进行选择,但这正是您在这里所需要的。

[1] https://wiki.shibboleth.net/confluence/display/EDS10/Embedded+Discovery+Service


推荐阅读