azure-active-directory - Azure AD (Active Directory) 中的 Multi-Tenancy 应用因 AADSTS50020 而失败

标签 azure-active-directory openid-connect appsource

我在我们组织的“xxx.onmicrosoft.com”Azure Active Directory 中创建了一个“Web 应用程序/API”应用程序。应用程序的“ Multi-Tenancy ”属性已设置为"is"。

我们将 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: User account 'xxx@gmail.com' from identity provider 'live.com' does not exist in tenant 'xxx.onmicrosoft.com' and cannot access the application '391e7103-ZZZZ-zz87-xxxx-7xxxxxd5xxxx' in that tenant. The account needs to be added as an external user in the tenant first. Sign out and sign in again with a different Azure Active Directory user account.

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

如前所述here ,我希望任何地方的人都可以访问我的应用程序,而无需我进行更多配置。

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

最佳答案

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

你有三个选择:

  1. 如果您的应用程序不需要登录个人帐户,那么您可以继续使用 v1 端点并使用工作帐户登录/测试你的申请。这将使您为 AppSource 认证做好准备。
  2. 如果除了工作帐户之外,您还需要/希望在您的应用程序中允许使用个人帐户,那么您可以考虑为 Azure Active Directory 使用 v2 端点 ( https://login.microsoftonline.com/common/v2.0 )。 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 ),被邀请的用户将是此租户的 guest 帐户 - 这意味着您需要邀请每个外部用户加入您的应用程序/租户。 Multi-Tenancy 应用程序允许来自任何组织的任何用户登录到您的应用程序,而您这边的管理工作更少。一般而言,对于 SaaS 应用程序,建议使用 Multi-Tenancy 配置。

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

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

关于azure-active-directory - Azure AD (Active Directory) 中的 Multi-Tenancy 应用因 AADSTS50020 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47354975/

相关文章:

Azure应用程序注册 "Roles and administrators"

azure - Power BI 始终返回 403 Forbidden

Azure 监视器 REST API 抛出无效 token 错误

azure - 无法使用 az ad 应用程序列表找到 Azure 应用程序,但它显示在 Azure 企业应用程序上

authorization - 为 OpenID 连接添加授权

web-applications - 如何在 Appsource.Microsoft.com 上发布 "Web App"?

spring-boot - Spring Boot 2 OIDC (OAuth2) 客户端/资源服务器不在 WebClient 中传播访问 token

oauth-2.0 - 使用 Identity Core 颁发不记名 JWT token

salesforce - 如何在 Power BI AppSource 市场中创建类似于 Salesforce Reports 应用程序的应用程序