Azure AD的Active Directory认证异常(AADSTS90027)

本文关键字:异常 AADSTS90027 认证 Directory AD Active Azure | 更新日期: 2023-09-27 18:10:29

我有一个本地客户端应用程序,它正在为Active Directory授权获取OAuth2令牌。然后,它将使用该令牌与安全的Web API服务器进行通信,其中API的某些区域使用[Authorize]属性进行保护。服务器也注册了Azure AD,可以通过AD正确授权请求。

当我尝试获取令牌时,我在下面代码的第2行得到以下异常:

附加信息:invalid_request: AADSTS90027:客户端'AuthenticationContext ac = new AuthenticationContext("https://login.windows.net/abccompany.com"); AuthenticationResult ar = ac.AcquireToken("https://abccompany.com/MyApplication.Server", "<Client GUID>", new Uri("https://localhost:44300/secure"), PromptBehavior.Auto);

我确保重定向存在于应用程序配置中的Azure中(否则会出现重定向错误)。这个误差意味着什么?

Azure AD的Active Directory认证异常(AADSTS90027)

您似乎正在使用WebAPI的clientId,您需要提供客户端应用程序的clientId。请在Azure AD中注册一个单独的'本机客户端应用程序'代表客户端应用程序。

下面的主题解释了协议流程以及如何在Azure AD中注册webapi,以便来自多个AD租户的用户可以使用该API: http://msdn.microsoft.com/en-us/library/azure/dn499820.aspx#BKMK_Native下面的示例可以帮助您完成:

  • 单租户WebAPI: https://github.com/AzureADSamples/NativeClient-WindowsStore
  • 多租户WebAPI: https://github.com/AzureADSamples/NativeClient-WebAPI-MultiTenant-WindowsStore

希望对你有帮助。


ps:当客户端和资源是同一个应用程序时,Azure AD不会发出令牌。在你的情况下,它们确实应该是不同的,资源客户端(颁发给机密客户端)不应该被用作公共客户端——然而,对于服务到服务的场景,可以认为应该允许向self颁发令牌——这是我们正在研究的事情。