实施SAML 2.0 SSO不同的Idps

时间:2015-09-14 19:58:34

标签: php single-sign-on saml saml-2.0

我的网站被多家公司使用。这些公司希望实施SSO。因此,他们登录到他们的公司门户网站并单击指向我网站的链接。他们在没有登录的情况下访问我网站的主页。我的网站是php。不同的公司可以使用任何语言的网站。我们希望这一切尽可能一般,以便所有公司都可以使用它。由于显而易见的原因,它也需要安全,因为我们是一家拥有phi的健康公司。

我已经在simpleSAMLphp上阅读了很多内容,但我不确定我是否对如何实现这一点感到满意。

我是否只是将我的网站设置为带有simpleSAML的SP,然后告诉其他公司"这就是我使用的自己制作的Idp并向我发送正确的数据" ?还有另一种方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

是的 - 差不多。

您向公司发送您的SP元数据并导入它们,然后他们会向您发送他们的IDP元数据并导入它。

技巧是“主键”,即另一个系统中的用户如何匹配您的用户。 NameID通常用于此目的,它可以有多种格式。

同样,这完全在元数据中。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

好吧,如果你想提供一个好的服务,猜测你必须支持多个SSO协议,并让客户选择。在SAML旁边有OAuth OpenID Connect和JWT我会提到它相对简单并且很好地采用。我发现JWT特别简单易用。

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