使用 web API 在 ASP.NET 和 PHP 之间登录

问题描述 投票:0回答:1

问题来了:

旧网站(PHP)逐步转换为新网站(ASP.NET)。 PHP 与 MySQL 一起工作,ASP.NET 与 MSSQL 一起工作。

服务器 A 上的 PHP 脚本现在应该通过 Web API 调用登录到服务器 B (ASP.NET)。通过 Post 的 API 调用到达,但 API 似乎忽略了表单身份验证或未设置 cookie。

FormsAuthentication.SetAuthCookie(用户,真);

我的想法是让客户端使用 API 通过 PHP 脚本登录到新系统。但是,当我调用新页面(ASP.NET)时,尽管之前调用过它(同一浏览器),但我还是注销了。

有没有办法通过web API将用户从服务器A登录到服务器B,让用户在两个系统之间浏览时,不会注意到他同时登录了两个不同的系统?整个事情也应该朝着另一个方向发展。

通过登录表单进行的表单身份验证没有问题,但我不想通过 Login.aspx 登录用户,而是通过 API 登录。

想法?

c# php asp.net api forms-authentication
1个回答
0
投票

这个问题的一个解决方案是实现单点登录(SSO)解决方案,允许用户登录一次并访问多个应用程序,而无需再次登录。在您的情况下,您可以实施 SSO 解决方案,允许用户登录到 PHP 应用程序,然后使用相同的凭据访问 ASP.NET 应用程序。

以下是实施 SSO 解决方案的一般步骤:

  1. 实施通用的身份验证机制:您需要实施通用的身份验证机制,PHP 和 ASP.NET 应用程序都可以使用它来对用户进行身份验证。您可以使用 Auth0 等第三方身份验证服务,也可以使用 OAuth 或 OpenID Connect 实现您自己的身份验证服务。

  2. 启用跨域身份验证:您需要在PHP 和ASP.NET 应用程序之间启用跨域身份验证。这可以使用跨域 cookie、基于令牌的身份验证或两者的组合来完成。

  3. 在PHP应用程序上验证用户:当用户登录到PHP应用程序时,您需要根据通用身份验证机制对用户进行身份验证,并颁发可用于在ASP.NET应用程序上对用户进行身份验证的令牌或cookie .

  4. 在ASP.NET 应用程序上对用户进行身份验证:当用户访问ASP.NET 应用程序时,您需要检查用户是否已经在PHP 应用程序上进行了身份验证。如果用户通过了身份验证,则可以使用 PHP 应用程序颁发的令牌或 cookie 在 ASP.NET 应用程序上对用户进行身份验证。

  5. 实现注销:当用户注销一个应用程序时,您需要确保用户也从另一个应用程序注销。

实施 SSO 可能很复杂,但它提供了无缝的用户体验并减少了用户多次登录的需要。如果您不想实施 SSO,则可以使用共享数据库来存储用户凭据,并使用同一数据库在两个应用程序上对用户进行身份验证。但是,与 SSO 相比,这种方法可能不太安全且更难以管理。

© www.soinside.com 2019 - 2024. All rights reserved.