【问题标题】:How to check if a user is authenticated on 2 different web apps?如何检查用户是否在 2 个不同的 Web 应用程序上进行了身份验证?
【发布时间】:2023-03-09 07:09:02
【问题描述】:

我一直在浏览互联网,但在网上找不到与我的具体案例相关的任何内容。

假设有 2 个 Web 应用程序。 wa1wa2wa1 是用 PHP 编写的,位于 domain1.com 上,wa2 是用 Python 编写的,位于 domain2.com 上。有一个公共数据库user_info 存储用户信息,如用户名和密码,另一个数据库user_logged_in 列出用户及其会话。

用户将通过wa1 进行身份验证。如果我无法使用远程 MySQL 访问 user_logged_in 数据库,如何检查用户是否在 wa2 中进行了身份验证?是否可以设置一个cookie,使domain2.com上的站点可以读取domain1.com设置的cookie?

【问题讨论】:

  • 您无法读取与您的网站不同的网站的 cookie。见security.stackexchange.com/questions/49636/…
  • 使用 Oauth2 进行身份验证
  • @DevJalla 我最初想使用 OAuth2,但原因是我将 2 个 webapps 实现为同一个“套件”的一部分,而 OAuth 通常用于希望使用的外部应用程序集成到服务中。
  • 因此,正如您所说,您无权访问 user_logged_in 数据库,那么以简单的方式没有。或者你可以编写一个可以访问登录数据的通用 api,以便 api 可以验证你
  • 您最好让您的远程连接正常工作,并将特定属性添加到会话以进行匹配

标签: php python mysql cookies web-applications


【解决方案1】:

如果我没看错,我相信您需要单点登录解决方案。

我建议您查看 OpenID Connect 规范。

在这种情况下,您将需要添加第三个“应用程序”,它将负责向经过身份验证的用户(某种身份服务器)颁发令牌。所有用户相关信息将由本服务存储和管理。

应用程序本身将依赖令牌来检查是否存在有效用户,并且它们可以从身份服务器获取用户信息。

一个很好的选择是 IdentityServer,它是开源的:https://identityserver.github.io/Documentation/

他们的文档非常好,会给你更深入的解释。

希望对你有帮助。

【讨论】:

  • 是的,绝对!我需要的是单点登录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
相关资源
最近更新 更多