通用登录网络以重定向到单独的网站



我在同一台 IIS Web 服务器上有 3 个独立的网络核心 Web 应用程序。所有这些都等于90%,但每个人都有自己的数据库,自己的用户和自己的子域。

我希望有一个独特的 Web 应用程序来登录到相应的最终 Web 应用程序,具体取决于登录的用户,基本上是因为我需要所有用户从特定的 URL 访问login.my-platform.com 到目前为止,每个用户都通过其 Web 应用程序访问,其子域上都有一个登录页面。

USER        FINAL WEB APP
==================================
111         platfA.my-platform.com
222         platfA.my-platform.com
333         platfB.my-platform.com
444         platfB.my-platform.com
555         platfC.my-platform.com

此外,从最终 Web 应用程序,用户可以创建更多用户到该最终 Web 应用程序,因此用户将从登录 Web 应用程序访问。

我认为一个不合适的解决方案是尝试登录 3 个不同的数据库更改 connectionString 值并设置一个短的连接超时,但我想避免它。我认为一定有更好的解决方案,我只需要一点点照明。谢谢

有两种方法:

  1. 共享饼干
  2. 分布式身份验证

第一种方法之所以可用,只是因为所有这些网站共享同一个主域名,即 my-platform.com .如果不是这种情况或将来发生变化,这将不起作用。您需要做两件事:每个站点都需要配置为使用相同的身份验证 cookie 名称和域(通配符.my-platform.com(。然后,您需要在每个从同一源提取的数据保护提供程序上设置数据保护提供程序。有关详细信息,请参阅此文章。

第二种方法,更复杂,但也更健壮。您需要使用像IdentityServer4或第三方服务(如Auth0(之类的东西。前者需要更多的代码和配置,但是免费的;后者实际上是直接的,但不是免费的,实际上,根据您的使用情况,可能会变得非常昂贵。无论哪种情况,您的应用程序都将连接到此分布式身份验证服务进行身份验证和授权。对于普通用户登录,您希望遵循 OpenID Connect 工作流,其中用户将被重定向到分布式身份验证网站进行身份验证,然后使用令牌重定向回原始网站。然后,原始网站可以使用此令牌请求用户声明,然后以正常方式设置 cookie。

最新更新