Azure AD的Active Directory身份验证例外(AADSTS90027)

时间:2014-06-27 15:46:36

标签: c# asp.net-mvc authentication authorization azure-active-directory

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

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

  

其他信息:invalid_request:AADSTS90027:客户端'<客户端GUID>'和资源“https://abccompany.com/MyApplication.Server”标识相同的应用程序。

这是我在本机客户端中运行的代码(现在只需按下按钮作为测试)。显然,GUID和公司名称已被混淆。

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中存在重定向(否则会出现重定向错误)。错误是什么意思?

1 个答案:

答案 0 :(得分:5)

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

以下主题说明了协议流以及如何在Azure AD中注册WebAPI,以便来自多个AD租户的用户可以使用该API:http://msdn.microsoft.com/en-us/library/azure/dn499820.aspx#BKMK_Native 以下示例应该可以看到您:

希望这有帮助。


ps:当客户端和资源是同一个应用程序时,Azure AD不会发出令牌。在您的情况下,它们确实应该是不同的,并且资源密切(发布给机密客户端)不应该用作公共客户端 - 但是对于服务方案服务,可以认为应该允许向自己发放令牌 - 这是某种东西我们正在调查。