我正在学习SAML,已经阅读了许多文章和论坛,但我仍然对设置IdP感到困惑。我正在使用"https://simplesamlphp.org
/">
例如,我有三个网站"example.com
"、"one.example.com
"one_answers"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"?
提前感谢
simpleSAMLphp是IDP。
您不需要编写任何代码,只需设置配置即可。
您还将拥有3个SP=三个网站。
它们可以都在同一台服务器上,也可以有一台IDP服务器和一台网站服务器。这其实并不重要。
simpleSAMLphp网站向您展示了为了与IDP通信而需要对每个SP进行的更改。
Identity提供程序提供有关用户的信息。您可以创建一个,我们称之为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:
- 创建IdP->
idp.example.com
->配置或创建模块,根据您的用户源(LDAP、ActiveDirectory、关系数据库等(对用户进行身份验证 - 将您的3个网站配置为使用
idp.example.com
进行身份验证 - 将您的3个网站配置为能够使用
idp.example.com
的响应
这一切都可以通过simplesamlphp实现。如果你想更进一步,自己实现或玩SAML,你可以使用我链接的库。通过Lightsaml库完成这项工作需要很长时间,因为你必须处理单次注销和单次登录、加密、数字签名、端点、元数据等。