php - 使用透明登录过程跨多个站点进行相同登录

标签 php authentication

问题

假设我有 example.com、example.org 和 example.net。

所有这些站点都有一个登录名,该登录名根据相同的用户凭证库进行身份验证。

我正在寻找一种只在一个地方登录但仍然能够透明地登录站点的有效方法。

我目前的解决方案
...让 iframe 在其中一个站点(我称之为主站点)上加载资源,如果用户在主站点登录,则使用 token 刷新页面并通过一些 JavaScript 自动登录用户。

但由于以下几个原因,这确实是低效且不安全的:

  • 用户需要在主站点登录
  • 用户需要使用一些客户端代码刷新他的页面(我知道这可能无法避免)。
  • 通常不赞成使用 iframe,有些浏览器插件甚至会阻止这些。

要找的东西
我对使用 Facebook、Google 或 OpenID 提供商等第三方提供商不感兴趣,因为这需要我的用户在第三方网站上注册才能使用我的服务。

对具体问题的总结
就像谷歌甚至 StackOverflow 一样,站点身份验证之间的过程似乎是透明的我需要类似的东西。什么是我当前解决方案的更好选择?

最佳答案

我不能共享代码......但我实现的解决方案涉及一个中间人来处理我所有网站的身份验证......我们称之为 SSO Broker......

基本上,所有登录请求都通过 SSO Broker 进行,它将确定您在尝试访问 siteb 时是否已经在 sitea 中登录。

...我可以向您指出我们如何实现它的壁橱是: http://www.jasny.net/articles/simple-single-sign-on-for-php/

其他 sso 解决方案也都有自己的位置,但有些比所需的更复杂。

另一种简单的方法是,简单地在彼此之间传递一些(安全的) token 。

关于php - 使用透明登录过程跨多个站点进行相同登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11080246/

相关文章:

php - Doctrine2 不保留某些字段

ruby-on-rails - 无法在登录表单上放置电子邮件地址字段 (Authlogic)

facebook - 应用程序身份验证陷入无限重定向循环

php - 拉维尔 |询问某些操作的密码

java - 在 PHP 中接收带有 html 标签的 json 失败

php - 将 php 升级到 5.5 后解码无法正常工作

java - Android 中的基本身份验证登录

django - 在 Django 中正确使用 PasswordResetForm

c# - FB.Logout() 在 Facebook UnitySDK 中不起作用

php - 弃用 : mysql_connect(): ERROR