实施 SAML 2.0 SSO 不同的 Idps

Implement SAML 2.0 SSO different Idps

我的网站被多家公司使用。这些公司希望实施 SSO。所以他们登录到他们的公司门户网站并单击 link 到我的网站。他们没有登录就进入了我网站的主页。我的网站在php。不同的公司可以拥有任何语言的网站。我们希望它尽可能通用,以便所有公司都可以使用它。出于明显的原因,它也需要安全,也因为我们是一家拥有 phi 的健康公司。

我已经通读了很多关于 simpleSAML 的内容php,但我不确定我对如何实现它是否正确。

我是否只是使用 simpleSAML 将我的网站设置为 SP,然后告诉其他公司 "this is what I use make yourself an Idp and send me the correct data"?还有其他方法吗?

是的 - 差不多。

您将您的 SP 元数据发送给公司,他们将其导入,然后他们将其 IDP 元数据发送给您,您将其导入。

诀窍是 "primary key" 即另一个系统中的用户如何匹配您的用户。 NameID 通常用于此,它可以有多种格式。

同样,这都在元数据中。

作为 SAML 集成中的服务提供商 (SP),另一个非常有用的部分是拥有 IdP 发现服务。由于您的每个合作伙伴都将与您的组织交换元数据,因此每个合作伙伴本质上都是一个点对点的 SAML 连接。 IdP 发现服务使用请求中的某些内容来识别合作伙伴并调用 SAML SP 发起的 SSO 事务。一种常见的策略是使用 URL 命名,例如 yourpartner.company.com。然后 IdP 发现服务检测 URL 中的子域 "yourpartner",然后调用正确的 SP 事务。还有其他策略,但我发现这个策略最适合大多数组织。

好吧,如果你想提供好的服务,我想你必须支持多种 SSO 协议,让客户选择。除了 SAML 之外,还有 OAuth OpenID Connect 和 JWT,我认为它们相对简单且被广泛采用。我觉得JWT特别简单易用。

关于 SAML PHP 实施,我尝试过使用 simpleSAML,但事实证明它太复杂而无法将其集成到现有应用程序中。我更喜欢 lightSAML library, which is actually v2 of aerialship/lightsaml,尤其是因为我的应用程序在 Symfony 中,而 lightsaml 有一个安全包。