SAML 2.0 实施通常适用于多个平台吗?

Does a SAML 2.0-implementation generally work for multiple platforms?

一位客户目前正在尝试决定他们是否要为他们的应用程序实施基于 SAML 2.0 的 SSO。但是,他们的用户有许多不同的身份提供者。我已经构建了一些 SAML 实现,但它们都只适用于一个身份提供者,而且我没有任何使用多个不同身份提供者的应用程序的实践经验。

问题:您通常可以为多个身份提供者构建一个可配置的 SAML 客户端,还是必须构建多个不同的客户端才能为它们提供服务?

单个服务提供商 (SP) 可以使用任意数量的身份提供商 (IdP)。 SP 唯一需要知道的是为特定用户使用哪个 IdP。它以两种方式之一做到这一点。它要么显示它知道的 IdP 列表,然后用户选择一个,要么用户在 'WAYF-less' URL 到达 SP。 WAYF 表示您来自哪里,但在很大程度上已被 SAML 发现过程所取代。将 IdP 的实体 ID 提供给 SP 可绕过 WAYF,因此 WAYF-less URL.

例如您可以按照以下方式制定 URL 方案:

https://yourapp.com/login?idp=https://someidp.com/shibboleth

https://someidp.com/shibboleth 是 IdP 的 entityID。您的 SP 在其元数据存储中查找该实体 ID 以找到 IdP 的 SSO URL 并将用户发送到他们正确的 IdP 以进行登录。

一旦您的 SP 将用户重定向到他们的 IdP,之后 SAML 流就正常了。因此,SP 唯一需要做的就是确定 SSO URL 的位置。所有 IdP 都将 return 使用相同的 SAMLResponse 格式,但当然具有自己的属性等。