问题来了:
旧网站(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 登录。
想法?
这个问题的一个解决方案是实现单点登录(SSO)解决方案,允许用户登录一次并访问多个应用程序,而无需再次登录。在您的情况下,您可以实施 SSO 解决方案,允许用户登录到 PHP 应用程序,然后使用相同的凭据访问 ASP.NET 应用程序。
以下是实施 SSO 解决方案的一般步骤:
实施通用的身份验证机制:您需要实施通用的身份验证机制,PHP 和 ASP.NET 应用程序都可以使用它来对用户进行身份验证。您可以使用 Auth0 等第三方身份验证服务,也可以使用 OAuth 或 OpenID Connect 实现您自己的身份验证服务。
启用跨域身份验证:您需要在PHP 和ASP.NET 应用程序之间启用跨域身份验证。这可以使用跨域 cookie、基于令牌的身份验证或两者的组合来完成。
在PHP应用程序上验证用户:当用户登录到PHP应用程序时,您需要根据通用身份验证机制对用户进行身份验证,并颁发可用于在ASP.NET应用程序上对用户进行身份验证的令牌或cookie .
在ASP.NET 应用程序上对用户进行身份验证:当用户访问ASP.NET 应用程序时,您需要检查用户是否已经在PHP 应用程序上进行了身份验证。如果用户通过了身份验证,则可以使用 PHP 应用程序颁发的令牌或 cookie 在 ASP.NET 应用程序上对用户进行身份验证。
实现注销:当用户注销一个应用程序时,您需要确保用户也从另一个应用程序注销。
实施 SSO 可能很复杂,但它提供了无缝的用户体验并减少了用户多次登录的需要。如果您不想实施 SSO,则可以使用共享数据库来存储用户凭据,并使用同一数据库在两个应用程序上对用户进行身份验证。但是,与 SSO 相比,这种方法可能不太安全且更难以管理。