当前情况:
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。
问题1(网络应用程序):如何根据请求网址(用于身份验证)将用户重定向到正确的租户?
即。根据{{1}}而不是应用程序OpenIdConnectAuthenticationOptions
,从数据库(或内存)中设置Request.Url
(租户,applicationId,signInPolicy等)。
问题2(API):如何使用正确的租户验证收到的令牌?
即。根据收到的令牌clientId而不是应用程序Startup
OAuthBearerAuthenticationOptions
个配置
答案 0 :(得分:1)
按照@ManishJoisar的要求,这就是我很久以前解决问题的方式。这是一个旧的.net Framework 4.8代码示例。
请注意,最近B2C v2策略通过自定义策略在联盟中提供了更好的实施方式。
android:layout_marginStart="-64dp"
答案 1 :(得分:0)
根据我认为的假设,这里有一些东西是行不通的。
首先,B2C没有多个租户的概念"。 B2C本质上是 租户中的目录,不能进一步分开。您 您的租户可以拥有多个B2C目录,比如每个 客户,但你不能拥有多个隔离的客户 单个B2C目录。
其次,如果您确实已将应用程序连接到多个B2C 目录,您需要管理连接器,应用程序ID,密钥 等等。然后由您的应用程序来决定哪个 一个基于某些数据使用(URL访问等)。
关于你是如何加入用户,我还会问一些问题?他们可以自己注册吗?他们有自己的用户商店吗?
如果您确实希望为每个组织分别保留用户帐户(并且他们还没有SAML / OIDC身份提供商),那么我会执行以下操作:
<Domain>
元素)通过这种方式,您的应用程序只需要信任和维护单个B2C目录,如果您的客户拥有自己的OIDC或SAML端点,则它们将成为目录中的声明提供者,而不是单独的B2C实例。 / p>