【问题标题】:Multi-tenant app in Azure AD (Active Directory) fails with AADSTS50020Azure AD (Active Directory) 中的多租户应用程序失败并显示 AADSTS50020
【发布时间】:2017-11-17 16:17:57
【问题描述】:

我在我们组织的“xxx.onmicrosoft.com”Azure Active Directory 中创建了一个“Web 应用程序/API”应用程序。该应用的“多租户”属性已设置为“是”。

我们将 OpenID Connect(我们使用 https://github.com/mitreid-connect/)配置为使用以下 URL:

请注意,我们在 URL 中使用了“common”,而没有使用“xxx.onmicrosoft.com”,因为我们希望“xxx.onmicrosoft.com”之外的人能够验证和访问我们的应用程序。

通过这些设置,来自 xxx.onmicrosoft.com 的人可以正确地验证和访问应用程序。

但是,当我使用我的个人 live.com 帐户(用户名 xxx@gmail.com)访问该应用程序时,我收到 AADSTS50020 错误。我能够使用我的 xxx@gmail.com 帐户进行正确身份验证,但我没有被重定向到回复 URL。我被困在 Microsoft 的网页上,并显示以下错误消息:

AADSTS50020:来自身份提供商的用户帐户“xxx@gmail.com” 租户“xxx.onmicrosoft.com”中不存在“live.com”并且不能 访问应用程序'391e7103-ZZZZ-zz87-xxxx-7xxxxd5xxxx' 租户。该帐户需要添加为外部用户 租户优先。注销并使用不同的 Azure Active 重新登录 目录用户帐户。

如果我希望来自任何身份提供者的人能够访问我的应用程序,我需要更改哪些配置?

就像here 所说的那样,我希望任何地方的人都可以访问我的应用程序,而无需我进行更多配置。

我问这个问题是因为我正在为 AppSource 获得认证,而这目前阻止了我这样做。

【问题讨论】:

    标签: azure-active-directory openid-connect appsource


    【解决方案1】:

    AppSource 只需要工作帐户即可登录。您正在使用 @gmail 帐户 - 这是一个个人帐户 - 因为除了 common (https://login.microsoftonline.com/common) 之外,您还使用 Azure Active Directory v1 端点,它不能接受个人帐户直接登录 - 仅限工作帐户。

    您有三个选择:

    1. 如果您的应用程序不需要登录个人帐户,那么您可以继续使用v1 端点并使用工作帐户登录/测试您的应用程序。这将使您为 AppSource 认证做好准备。
    2. 如果除了工作帐户之外,您还需要/希望在您的应用程序中允许个人帐户,那么您可以考虑将v2 端点 (https://login.microsoftonline.com/common/v2.0) 用于 Azure Active Directory。 v2 端点允许个人帐户和工作帐户轻松登录。
      请注意,v2 端点有一些限制:如果您可以忍受这些限制(例如,您的应用程序只需要登录用户并最终对 Graph API 进行查询),那么通常它应该可以使用,但是如果您需要额外的功能,例如使用范围保护您自己的 Web API,那么此时不会发布此功能(如2017 年 11 月)。请阅读this document 了解v2 端点限制的更新列表。
    3. 第三个(但不推荐 AppSource 的选项)是继续使用 v1 端点并使您的应用程序成为 单租户 - 即将端点从 https://login.microsoftonline.com/common 更改为 https://login.microsoftonline.com/{yourtenantid},然后使用 B2B invitations API 邀请每个外部用户(包括工作和个人帐户)成为 Azure AD 租户/组织的一部分。有关 B2B here 的更多信息。

    上面的选项“3”对管理以及 AppSource 有一些影响:通过使用此选项,您需要拥有一个 Azure Active Directory 租户(如果您还没有租户,您可以使用these instructions),并且被邀请的用户将是此租户的 guests 帐户 - 这意味着您需要邀请每个外部用户加入您的应用程序/租户。 多租户应用程序允许来自任何组织的任何用户登录到您的应用程序,而您的管理较少。一般来说,对于 SaaS 应用程序,建议使用多租户配置。

    对于 AppSource,选项“3”也会导致沉浸式体验的用户体验 (Partner led trial),最终用户将无法立即访问您的应用程序演示 -主要是因为他们必须等待邀请的电子邮件并接受它(用户必须接受成为您租户的客人),以便他们可以访问您的应用程序。

    有关 AppSource 要求和试用选项的更多信息 - 请参阅this article

    【讨论】:

    • @Jacob 你能提供更多细节吗?什么没有奏效?你有错误吗?你有什么问题?也许您还可以创建一个新问题来描述您的问题
    • meh,就我的应用而言,没关系,只允许工作/学校帐户应该没问题,但是当我尝试通过 v2 连接我的个人帐户时,我收到与中相同的 AADSTS50020 错误OP
    • @JacobAlley - 如果您在使用在 apps.dev.microsoft.com 中创建的应用程序的 v2 端点时收到 AADSTS50020,那么您很可能属于上述情况“2” - 请确保您使用的是公共端点,而不是特定于租户的端点
    • 我正在使用公共端点。我在那里开发我的应用程序,但我使用 Azure Active Directory 注册了我创建的应用程序
    • @JacobAlley 我建议您发布一个新问题,其中您有更多信息,例如您正在使用的端点(可能是您在浏览器中看到的),您在哪里注册了应用程序和确切的错误(很少免费编辑部分电子邮件地址或域、令牌和其他个人信息)
    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2020-09-20
    • 1970-01-01
    • 2017-10-10
    • 2016-08-04
    • 1970-01-01
    相关资源
    最近更新 更多