Azure Active Directory中多租户的正确实现

Azure Active Directory中多租户的正确实现,azure,active-directory,azure-active-directory,Azure,Active Directory,Azure Active Directory,假设我设置并创建了一个新的Azure帐户和订阅。Azure会自动为我创建一个名为“somedomain.onmicrosoft.com”的Azure广告 后来我将RESTAPI和Angular SPA应用程序部署到Azure。因为我在两个应用程序上都使用Azure AD进行身份验证和授权,所以我在Azure AD的“somedomain.onmicrosoft.com”域下注册了它们 一切正常,但过了一段时间,我意识到我希望允许其他组织访问我的服务/应用程序。在做了一些研究之后,我意识到我想要实

假设我设置并创建了一个新的Azure帐户和订阅。Azure会自动为我创建一个名为“somedomain.onmicrosoft.com”的Azure广告

后来我将RESTAPI和Angular SPA应用程序部署到Azure。因为我在两个应用程序上都使用Azure AD进行身份验证和授权,所以我在Azure AD的“somedomain.onmicrosoft.com”域下注册了它们

一切正常,但过了一段时间,我意识到我希望允许其他组织访问我的服务/应用程序。在做了一些研究之后,我意识到我想要实现的是多租户

为了注册新租户,我执行以下操作:

  • 转到Azure门户
  • 在左侧刀片菜单上,单击“创建资源”并搜索“Azure Active Directory”
  • 创建一个名为“tenant-1.onmicrosoft.com”的新目录
  • 接下来,我将根据启用多租户和公共端点更新我注册的应用程序(位于“somedomain.onmicrosoft.com”)

    所有这些之后,来自广告“somedomain.onmicrosoft.com”和“tenant-1.onmicrosoft.com”的用户都应该能够验证和访问我的服务

    问题


    这是实现和实施多租户的正确方法吗?

    您不需要创建新的Azure广告租户(xyz.onmicrosoft.com)。只需在现有租户中注册应用程序,或将现有应用程序标记为多租户。然后,现有的其他AAD租户将能够注册使用您的应用程序,而无需进一步注册。您需要修改应用程序代码以接受其他租户的令牌,例如,此链接指向常规的.NET web应用程序,而不是SPA。您需要将其转换为您的SPA环境。

    我不确定您的高级用例,但需要注意的是AAD多租户方法。您假设登录的人拥有Azure AD租户,例如通过Office365

    如果他们没有Azure广告,那么他们将无法登录

    您“可以”为每个新租户创建一个AAD,并在其中创建一个用户帐户。 他们会有bob@mydomain.onmicrosoft.com地址,以后可以添加自己的域

    这样,他们就可以利用AzureAD的所有企业功能。 这可能是一个用例,但我认为每个租户都需要AAD,我不确定限制,或者这是否是最佳实践


    如果您想要社交登录/其他OpenIDConnect,也可以查看B2C。

    从Azure广告的角度来看,是的。从未听说过“root”或“child”AAD。多租户应用程序在一个AAD租户中注册(使用应用程序注册)-它获得应用程序和服务主体对象-并且可以在任何其他AAD租户中订阅(仅服务主体对象)。例如,您可以将O365视为在Microsoft Corporate租户中注册并订阅了数千个其他客户租户的多租户应用程序。当您订阅时,您有效地告诉您的租户可以响应来自该应用程序的令牌请求。您通常在首次登录应用程序时订阅。O365示例非常好,清除了很多内容!非常感谢,请原谅我与root和child进行了糟糕的比较。相反,在后端API中保留一个允许的发行者列表,当您验证它从JS fron-end收到的令牌时,验证令牌发行者是否在列表中。您很幸运,我刚刚写了一篇文章:Good blog as惯常@juunas@OverflowStack您没有明确提到您使用的是Azure AD v1还是v2端点。。请注意,答案中提到的示例链接是针对v1的,而juunas的博客按照v2使用发布者URL。基本概念将保持不变,但会有微小的差异。。与v1类似,v1的发卡机构URL的格式为
    https://sts.windows.net/
    而对于v2端点,发卡机构URL类似于
    https://login.microsoftonline.com/{TenantId}/v2.0