如何将SAML设置为多个域?

时间:2018-07-20 05:31:45

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

我正在学习SAML,并且已经阅读了许多文章和论坛,但是对于设置IdP仍然感到困惑。 我正在使用“ https://simplesamlphp.org /”

例如,我有3个网站“ example.com”,“ one.example.com”,“ two.example.com”; 全部位于三台不同的服务器上。 现在,我想使用SAML设置单点登录,然后在哪台服务器上设置IdP。 因为“ example.com”是拥有所有有关用户信息的主域。

据我了解,当我登录“ example.com”时,它将向IDP发送请求。

但是我不知道我必须在哪里设置IdP以及Idp包含什么内容。 它在“ example.com”所在的同一服务器上,还是在不同的服务器上,我必须在该服务器上编写什么逻辑? 这是简单的登录功能,或者我需要为此设置“ simplesaml”并在其中设置登录逻辑。

设置IdP之后,我需要在其他服务器“ one.example.com”,“ two.example.com”上做什么? 我是否需要在服务器上再次安装“ simplesaml”并设置SP和IdP?

排序上,哪台服务器具有IdP和SP?我需要在哪个服务器上安装“ simplesaml”?

预先感谢

2 个答案:

答案 0 :(得分:1)

身份提供者是提供有关用户信息的人。您将创建一个,我们称之为idp.example.com

您将在其中安装simpleSAML并对其进行配置,以便它可以读取有关用户的信息,例如在MySQL,LDAP等中(这是IdP设置中的棘手部分)。

现在,您的网站将成为服务提供商,如果用户未通过身份验证,他们会将用户重定向到idp.example.com,用户登录,idp.example.com将用户通过XML返回给服务提供商包含断言的文档。

这意味着您的SP需要能够消费 IdP发送到您站点的SAMLResponse

您可以使用simpleSAML来使用它,您现在可以在SP模式下对其进行配置。

请记住,SSP(simplesamlphp)不是PHP中处理SAML的唯一选择。还有Lightsaml-一个适当的库。 SimpleSAML不仅是一个库,而且是一个完整的解决方案,说实话-一个超级超级可怕的库,它是可以键入并组成一个实际运行的系统的废话代码的缩影(类似于wordpress)。

TL; DR:

  1. 创建一个IdP-> idp.example.com->配置或创建用于根据您的用户来源(LDAP,ActiveDirectory,关系数据库等)对用户进行身份验证的模块
  2. 配置您的3个网站以使用idp.example.com
  3. 进行身份验证
  4. 配置您的3个网站以使用来自idp.example.com的回复

这一切都可以通过simplesamlphp完成。如果您想更进一步,自己实现或使用SAML,则可以使用我链接的库。通过Lightsaml库完成此过程将花费很多时间,因为您必须注意单点注销和单点登录,加密,数字签名,端点,元数据等。

答案 1 :(得分:0)

simpleSAMLphp是IDP。

您无需编写任何代码,只需设置配置即可。

您还将拥有3个SP =这三个网站。

它们都可以位于同一服务器上,或者您可以为IDP拥有一台服务器,为网站拥有一台服务器。其实并不重要。

simpleSAMLphp网站显示了您需要对每个SP进行的更改,以便与IDP进行通信。