【问题标题】:Single user id and password to connect multiple application单个用户名和密码连接多个应用程序
【发布时间】:2013-08-18 17:27:35
【问题描述】:

[场景]
我已经有 5 个 PHP5.3+ 应用程序(例如:App-A、App-B、App-C、App-D 和 App-E)启动并运行。在这里,每个应用程序都有自己的登录用户名和密码。

[新要求]
现在,我想实现单个用户 ID 和密码来登录所有这些应用程序(通过使用 App-A)。可以说:我想像往常一样登录到 App-A,一旦登录,我应该能够通过简单地单击 App-A 上的图标(一旦登录)点击进入其他应用程序(B、C、D 和 E)。 而且,我的用户不应该是苹果通过 App-B 或 C 或 D 或 E 登录。他们总是需要通过 App-A 连接。

[背景]
-所有这些应用程序都在不同的域上运行,但在同一台服务器上。
-管理员将能够为某些用户启用/禁用某些应用程序

有没有人做过类似的,或者有什么建议请指教。

【问题讨论】:

  • 了解 OAuth。它将允许您创建身份验证服务器,然后将其与其他应用程序一起使用。

标签: php mysql session session-cookies


【解决方案1】:

这是一个非常好的问题,并以不同的方式对您的问题进行了小型研究:

OAuth:

在阅读文档并通过许多服务提供商之后,这是不可能的。 Oauth 服务提供者提供消费者密钥和秘密,他们检查来自域的请求,因此如果在不同的域名上使用相同的 oAuth 消费者密钥,则不起作用。

设置 Cookie 多个域

简单地说,不通过任何方式访问域是不可能设置cookie的

因此,我可以说不可能为多个域设置 cookie 或使用相同的消费者密钥和秘密

替代方法

  1. 使用 HTML5 Web Storage 存储信息,然后访问 来自不同领域的信息是可能的。

  2. 使用 AJAX/CURL 发送为不同域设置 cookie 的请求,例如 example.com/session_cookie.php?info=xxxxx

  3. 为所有域维护一个子域/页面,以便跨所有域登录。

【讨论】:

  • 您对 OAuth 的看法是错误的。 OAuth 的主要思想是为不同域上的用户提供身份验证方式。
  • 我同意,但他想在不同的网站上使用单一登录系统,而这在 OAUTH 中是不可能的
  • 这就是它的工作原理。在 App-A 上登录后,您可以通过“一键”在 App-B 上对用户进行身份验证。而且我认为它也可以通过对用户透明的方式来完成(在加载 App-B 时检查 App-A 中的会话)。
  • 这是不同的东西。我在谈论执行正常的 OAuth 身份验证,但没有由用户触发它。在第 2 点中,您建议将会话 cookie 发送到所有连接的应用程序(或者我可能误解了?)。
  • 谢谢你的讨论。但是我将在下周实施这些选项中的哪一个。
猜你喜欢
  • 1970-01-01
  • 2021-10-10
  • 2016-01-28
  • 2018-09-23
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 2013-06-24
相关资源
最近更新 更多