跨多个网站(多个数据库)的 SSO

SSO across multiple websites (multiple databases)

在这里有点失去理智,我真的很想得到一些帮助,让我指明正确的方向。

我在 GoDaddy 上使用一个共享的 Linux 服务器,我有两个 PHP 网站,用户登录分别使用两个单独的 MySQL 数据库进行身份验证。我想要的是让用户登录到站点 1,然后自动登录到站点 2。当他们从任一站点注销时,他们应该从两个站点注销。

我目前安装了 SimpleSAMLphp,非常感谢有关如何设置 IdP 和 SP 的指导。我认为站点 1 和站点 2 是 SP 的想法对吗?

任何指导将不胜感激,这是我的第一个 SSO 设置,我只是有点迷路。

要实现单点登录,您需要在两个网站上使用一些通用的东西来进行身份验证。 Cookie 无济于事,因为有两个不同的网站,将您的 cookie 暴露给另一个网站是不好的。

一般来说,SSO 是使用一个主要处理身份验证数据的中央 serevr 实现的。

基本步骤如下:

  1. 对于登录,用户被重定向到公共服务器并验证凭据。

  2. 中央服务器为登录设置 cookie。

  3. 当您的其他网站需要登录时,它会使用重定向再次检查中央服务器。

  4. 然后,中央服务器检查 cookie 并进行身份验证,如果之前未经过身份验证,则重定向到登录。

因此,您可以配置一个中央身份验证服务器来检查身份验证并提供适当的响应,两个网站都会相应地进行处理。

但是,中央服务器需要一个通用的用户数据库,而在您的情况下,您显然缺少这个数据库。因此,您可以将其中一个网站声明为中心或主要资源,并为其他网站公开 API,这将公开其用户群以验证详细信息。

让一个网站处理登录过程。如果其他需要进行身份验证,它将把用户重定向到主网站,然后处理 return 响应。

理论内容很多,但希望对您有所帮助。

有用的链接:

  1. Building and implementing a Single Sign-On solution

  2. Basics of Single Sign on (SSO)