.NET Core 多租户身份验证

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

我有一个托管在 Azure 中的应用程序(租户 A)。

我在 Azure 中也有租户 B。 租户 A 或租户 B (Azure Active Directory) 中的用户需要登录此应用程序。

如果用户使用“[email protected]”登录,则应自动针对租户 A 进行身份验证,如果使用“[email protected]”的用户登录,则应针对租户 B 进行身份验证。

我尝试过通过单一租户登录,效果很好。

我需要进行什么设置才能发生这种情况?

authentication .net-core azure-active-directory multi-tenant
1个回答
0
投票

Azure AD 多租户机制是针对您描述的场景而设计的。由于您可以在单租户中很好地工作,因此我相信您已经知道如何创建 Azure AD 应用程序。并且请确保您创建的应用程序是多租户类型。如果没有,您可能需要创建一个新的用于测试。

enter image description here

然后,为了让不同租户的用户登录您的应用程序,我们需要确保 sign url

common
而不是租户 ID。假设您正在开发一个 asp.net core MVC 应用程序。然后我们可能会在您的 appsettings.json 中进行以下配置。确保租户 ID 设置为
common

"AzureAd": {
   "Instance": "https://login.microsoftonline.com/",
   "Domain": "tenant id of the tenant where the AAD app registered",
   "TenantId": "common",//make sure it's common
   "ClientId": "client id of the AAD app",
   "CallbackPath": "/signin-oidc",
   "ClientSecret": "client_secret"
 },

然后我们会看到登录网址如下所示

enter image description here

租户 B 的用户可以使用

[email protected]
登录此应用程序。请注意,租户 B 的用户第一次登录应用程序时,他们将看到一个同意窗口,要求他们同意某些 API 权限。这基于您添加到 Azure AD 应用程序的 API 权限。如果某些权限需要租户管理员同意,则租户B的管理员应在普通用户登录之前授予同意。管理员同意网址
https://login.microsoftonline.com/{tenantB-id}/adminconsent?client_id={your-client-id}

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