是否有更好的单点登录(SSO)功能解决方案 - PHP

时间:2015-07-10 10:38:15

标签: php authentication laravel-4 single-sign-on

我在laravel 4.2框架上开发的网站应用程序和我的网站与另一个与之相关的网站应用程序相关联。

我想在我的应用程序中实现单点登录(SSO)功能。

假设我的申请:www.example.com

相关网站如下:

  1. www.testsite1.com
  2. www.testsite2.com
  3. www.testsite3.com
  4. www.testsite4.com
  5. 当我登录任何一个网站(我的应用程序或相关网站)时。

    记录后,点击其他网站(目前我已登录的网站),然后它不应该提示登录意味着它应该允许在没有记录的情况下进入应用程序,因为我已经登录了一个应用程序。

    同样,当我们登录gmail帐户,并转到任何帐户(驱动器,google plus,youtube等)时,它将不会再次请求登录,它会绕过应用程序的登录页面。

    php / laravel有没有更好更可行的解决方案?

1 个答案:

答案 0 :(得分:0)

可能以下步骤将帮助您在不同的网站上实现单点登录

  1. 当用户访问www.testsite1.com时,将用户重定向到SSO服务器。
  2. 一旦用户被重定向到SSO服务器,检查cookie是否存在,因为它第一次没有cookie,所以显示SSO服务器上托管的登录页面。
  3. 从用户获取凭据后验证用户
  4. 如果用户有效,则生成令牌现在此令牌可以是唯一的十六进制数字或哈希值,用于时间戳。
  5. 将此令牌设置为SSO服务器上的cookie并将用户重定向回原始站点或成功页面
  6. 现在,当用户访问www.testsite2.com或www.testsite3.com时,再次将用户重定向到SSO服务器
  7. 一旦用户访问SSO,检查cookie是否存在且未过期,然后将用户直接重定向到成功页面,而无需再次请求登录凭据或显示登录页面并再次进行练习
  8. 当我们将用户重定向到不同的服务器上时,我们可以将cookie设置为“SSOcookie”,并且每次从不同的应用程序访问时都会访问该cookie。这将帮助您实现不同域的单点登录。