1 个客户登录 2 个 Web 应用程序,具有单独的登录身份验证和数据库,可能更多

1 customer login for 2 web applications with individual login authentication and databases, possibly more

如何将 2 个独立的后端应用程序作为一个站点使用,每个应用程序处理不同的请求,理想情况下 1 个嵌入另一个,在用户登录后共享一个会话?

目前有一个定制的 website/CMS 应用程序(应用程序 1)与带有登录表单和注册的博客不同。它在内部使用 oauth 连接到单独应用程序上的数据库的 API。博客 post 在网站上 public,客户登录主站点并可以上传 post 并在 post 之前查看他们的编辑进度、接收反馈等上线,管理员使用 CMS 访问客户提交的内容并管理 post,包括根据需要代理用户进行更改。

我现在有另一个 Web 应用程序 (app 2) 来替换原始 CMS 中的一些功能。它有自己的 CMS 和前端、登录名以及存储在其数据库中的用户。

我需要一种方法来集成这两者,以便客户登录到应用程序 1,当他们导航到他们的 post creating/editing 时,他们可以无缝地使用应用程序 2,无需额外登录,所有使用原始应用程序用户身份验证。管理员可以访问这两个应用程序 CMS,最好也只需一次登录。

我的第一个想法是我需要另一个 app/service 来管理身份验证并充当其他应用服务页面的网关?

我看到很多关于单点登录的信息,但它似乎更多地与使用外部帐户访问我的网站有关"login with Facebook"。

哪种基础架构和代码模式适用于这种情况?所有应用均基于 PHP 构建,托管于 Linux。

单点登录 (SSO) 是您想要的,您走在正确的轨道上。阅读诸如 SAML 或 OpenID Connect 之类的协议,选择一个你觉得舒服并且在你的工具集中得到支持的协议,实施一个小的测试用例并从那里开始。 PHP 的 SAML 有一个非常好的工具包:simpleSAMLphp

有了 SAML,您就有了一个身份提供者服务,可以通过登录表单和后端用户数据库以及一个或多个服务提供者对用户进行身份验证。每个服务提供商都是一个享受 SSO 好处的应用程序。身份提供者可以作为独立 app/service 实现,也可以嵌入到您的应用程序之一中,可能是应用程序 1。应用程序 2 将是服务提供者。假设您已正确实施所有这些,您的用户将能够在应用 1 中单击 link,无需重新验证即可将他们带到应用 2。