gpt4 book ai didi

asp.net-web-api - 与多个 B2C 租户共享单个 WebApp 和 API 部署

转载 作者:行者123 更新时间:2023-12-01 04:44:00 25 4
gpt4 key购买 nike

当前场景:
Web App 和 Web API 使用 AAD B2C 进行身份验证并且工作正常。每个客户都有一个唯一的租户。 OpenIdConnectAuthenticationOptions (网络应用程序)和 OAuthBearerAuthenticationOptions (api) 在应用程序中设置 Startup .

如此处所述:Token based authentication for both Web App and Web API using Azure AD B2C

不幸的是,必须为每个客户部署 Web 应用程序和 API,以将它们分开。

需求:
为多个客户使用相同的 Web 应用程序和 API,而不是为每个客户部署它们。每个客户都有不同的 Web 应用程序 URL。

enter image description here

问题 1(Web 应用程序):如何根据请求 URL 将(用于身份验证)用户重定向到正确的租户?

即设置 OpenIdConnectAuthenticationOptions (租户、应用程序 ID、signInPolicy 等)基于 Request.Url 即时从数据库(或内存)中获取而不是在应用程序 Startup .

问题 2(API):如何使用正确的租户验证收到的 token ?

即设置 OAuthBearerAuthenticationOptions基于接收到的 token clientId 而不是在应用程序中动态配置 Startup

最佳答案

基于我认为的假设,其中有几件事是行不通的。

  • 首先,B2C没有多个“租户”的概念。 B2C本质上是
    租户内的目录,无法进一步分离。你
    您的租户中可以有多个 B2C 目录,例如每个
    客户,但您不能在一个客户中拥有多个隔离的客户
    单个 B2C 目录。
  • 其次,如果您的应用程序确实连接到多个 B2C
    目录,您需要管理连接器、应用程序 ID、 key
    等等。然后由您的应用程序来确定哪个
    一种基于某些数据(访问的 URL 等)使用。

  • 还有几个问题我会问你如何引导用户?他们可以自己注册吗?他们有自己的用户商店吗?

    如果您真的想为每个组织保留单独的用户帐户(并且他们还没有 SAML/OIDC 身份提供商),那么我将执行以下操作:
  • 为每个客户创建一个 B2C 实例
  • 为您的应用程序/Web API 创建 B2C 实例
  • 使用自定义策略将您的应用程序 B2C 实例与您的客户 B2C 实例连接起来(确保在 XML 中为声明提供程序使用 <Domain> 元素)
  • 在您的应用程序中使用域提示来强制应用程序选择正确的 B2C 实例(参见:http://www.cloudidentity.com/blog/2014/11/17/skipping-the-home-realm-discovery-page-in-azure-ad/)

  • 通过这种方式,您的应用程序只需要信任和维护单个 B2C 目录,如果您确实有拥有自己的 OIDC 或 SAML 端点的客户,他们将成为目录中的声明提供者,而不是单独的 B2C 实例。

    关于asp.net-web-api - 与多个 B2C 租户共享单个 WebApp 和 API 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48484729/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com