Azure AAD AcquireToken返回错误AADSTS50000

Azure AAD AcquireToken返回错误AADSTS50000,azure,azure-active-directory,Azure,Azure Active Directory,我们使用Azure Active Directory保护我们的Azure托管API。这些API由Azure托管的Angular应用程序使用。Mocst的API是作为ASP.NET WebAPI实现的,其中一些现在是使用Azure函数实现的 在过去的几年中,我们一直以这种方式保护我们的应用程序,没有出现任何问题。通过将令牌添加到允许的访问群体中,我们已经基于令牌为另一个应用程序授予了访问权限,这很好。目前,我们在实现新场景时遇到了一个问题 问题 我们有两个应用程序:当前应用程序(cur)和目标应用

我们使用Azure Active Directory保护我们的Azure托管API。这些API由Azure托管的Angular应用程序使用。Mocst的API是作为ASP.NET WebAPI实现的,其中一些现在是使用Azure函数实现的

在过去的几年中,我们一直以这种方式保护我们的应用程序,没有出现任何问题。通过将令牌添加到允许的访问群体中,我们已经基于令牌为另一个应用程序授予了访问权限,这很好。目前,我们在实现新场景时遇到了一个问题

问题
我们有两个应用程序:当前应用程序(cur)和目标应用程序(tar)。我们的所有用户都可以登录cur。cur后端根据用户为cur获取的令牌获取一个令牌以访问tar。这适用于受Azure Active Directory(我们的或联邦的)支持的用户。一旦用户登录时没有Azure Active Directory支持(这意味着他们有Microsoft帐户支持),获取tar令牌就会失败,出现
AADSTS50000:发出令牌时出错

上下文
我们的应用程序托管在与我们的用户和应用程序注册地不同的AAD租户中。用户和应用程序注册在同一AAD租户中。我们不认为这是一个问题,因为该配置适用于AAD支持的帐户

我们使用以下参数获取访问tar的令牌:

  • 焦油应用程序ID
  • cur的ID和Key
  • cur的当前用户的令牌
我们看到AAD支持的帐户和Microsoft帐户支持的帐户的原始令牌之间的一个主要区别:IDP(IdentityProvider)字段不同。对于Microsoft帐户支持的帐户,IDP是
live.com
。对于AAD支持的帐户,这是
https://sts.windows.net/

我们已经在我们的AAD和外部帐户中创建了几个测试帐户,以确保它与我们现有的用户帐户无关。对我们的
AuthenticationContext
ClientCredential
使用不同的配置并不能解决问题


有什么想法吗?

邀请用户作为访客会奏效,但如果这不是一个切实可行的选择,您需要在应用程序/服务中添加对MSA帐户的支持。这可以通过Azure AD v2.0端点实现

在开始进行更改之前,您需要了解文档中的许多细节

请尝试网站上提供的一些示例,以获得良好的理解

您将要进行的更改的简短摘要

  • 使用较新的MSAL库而不是ADAL
  • 使用
  • 使用新的
  • 更新应用程序注册以支持AAD和MSA帐户。请参阅中的要点

  • 问一个明显的问题:是否所有非AAD支持的用户都导入到两个AAD租户中?谢谢@Mötz,我刚刚检查了一下,我的措辞是错误的:用户和应用程序注册在同一个AAD中,应用程序托管在不同的AAD中。如果我错了,请纠正我。您有租户1和租户2。租户1托管您的CUR和TAR应用程序。Tenant2包含您的所有用户和应用程序注册。在Tenant2中直接创建为AAD用户的用户的工作方式与预期相同,配置正确。您的非AAD用户将作为来宾导入租户2中。这理解正确吗?虽然最初的问题确实暗示了这一点,但情况并非如此。我还对这个问题进行了一些更新,使其更加清晰:应用程序注册和用户在租户1中定义,应用程序托管在租户2中。AAD支持的用户和外部用户都在租户1中。我不希望导入到租户1的外部用户(live.com/etc)用户能够访问租户2中的任何内容,而无需显式导入租户2。他们不住在租户1内,他们只是租户的客人。你能试着看看将外部用户导入租户2是否会有所不同吗?不幸的是,这并不能回答实际的问题。我感谢你为编写详细的问题所做的努力,但如果你能扩展以下内容,这会有所帮助“我们的应用程序托管在与我们的用户和应用程序注册地不同的AAD租户中。“->应用程序仅在AAD中注册,并且可以在任何Azure订阅中托管。除非应用程序是多租户并在其他租户中配置,否则这些应用程序将只能为“注册”的AAD租户中的用户颁发令牌。如果邀请每个MSA用户不是一个选项,那么我建议您需要做什么来支持来自AAD租户和MSA的用户。