3

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

当我尝试获得令牌,我得到下面的代码的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中存在重定向(否则会出现重定向错误)。错误是什么意思?

回答

5

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

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

希望这有助于。


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

相关问题