AADSTS65001:用户或管理员未同意使用ID为'<应用程序ID>

时间:2019-12-11 09:06:26

标签: azure oauth-2.0 active-directory

我们遵循以下代码中所述的Microsoft Code OAuth2 v2版本

https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

我们在Microsoft Azure下的App Register中创建了一个应用程序,然后尝试从以下URL获取代码

https://login.microsoftonline.com/concept4.net/oauth2/v2.0/authorize?client_id=&response_type = code&redirect_uri = https://postman-echo.com/get&response_mode=query&scope=profile%20openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read&state=skip_get_token2&prompt=consent

然后我们遇到以下错误

{“错误”:“ invalid_grant”,“错误描述”:“ AADSTS65001:用户或管理员不同意使用ID为“ c4app2019”的ID的应用程序。为此用户和资源发送交互式授权请求。 \ r \ n跟踪ID:46424a2f-a3a2-45da-8902-888f5ca61c00 \ r \ n相关ID:49d0a6ad-e158-4bc9-97b8-a6391c6470bb \ r \ n时间戳:2019-12-11 07:51:31Z“,”错误代码“ :[65001],“时间戳”:“ 2019-12-11 07:51:31Z”,“ trace_id”:“ 46424a2f-a3a2-45da-8902-888f5ca61c00”,“ correlation_id”:“ 49d0a6ad-e158-4bc9-97b8 -a6391c6470bb“,” suberror“:” consent_required“}

您知道我们需要授予应用程序什么权限吗?

enter image description here

4 个答案:

答案 0 :(得分:1)

我无法单方面再现您的问题。这是我的步骤供您参考。

1。创建具有User.Readprofile权限的应用程序。

enter image description here

2。由于我添加的权限不需要管理员同意,因此我可以在第一次登录时同意。

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=59437d85-46f8-409c-8211-b3db91a8b0e5
&response_type=code
&redirect_uri=http://localhost
&response_mode=query
&scope=https://graph.microsoft.com/User.Read
&state=12345

3。使用从步骤2获得的代码获取令牌

enter image description here

要找到您的问题,请提供屏幕截图,如step2(应用程序注册->您的应用程序-> API权限)。还有您用来获取代码/令牌的作用域的值。

答案 1 :(得分:0)

[附加测试1] 步骤1: 我创建了另一个使用较少API权限的应用,它存在相同的问题

enter image description here

步骤2: 通过以下网址获取代码 https://login.microsoftonline.com/concept4.net/oauth2/v2.0/authorize?client_id=15bf7752-....-c51cd145174c&response_type=code&redirect_uri=https://postman-echo.com/get&response_mode=query&scope=https://graph.microsoft.com/User.Read&state=skip_get_token2

得到

enter image description here

第3步:

似乎可行

enter image description here

Microsoft文档中获取代码和令牌的范围似乎不正确,或者需要一些其他权限。

答案 2 :(得分:0)

万一这对任何人都有用,我会使用Microsoft.Azure.Services.AppAuthentication.1.3.1程序包中的神奇AzureServiceTokenProvider类遇到相同的问题。很简单的代码

var tokenProvider = new AzureServiceTokenProvider();
string token = tokenProvider.GetAccessTokenAsync("https://mytenant.onmicrosoft.com/8a0bec0f-x-x-x-x").GetAwaiter().GetResult(); // Application ID URI

我的错误消息是

AADSTS65001:用户或管理员不同意使用ID为'd7813711-9094-4ad3-a062-cac3ec74ebe8'的应用程序。发送对此用户和资源的交互式授权请求。

我在Azure AD的任何地方都找不到此d7813711 guid。在研究了此类在反编译器中的工作方式之后,事实证明,当您不指定应用程序ID时,该类默认为该GUID。也许这个GUID对Azure中的所有租户都有效?要解决此问题,以便为您的应用程序获取令牌,只需将其添加为授权的客户端应用程序即可。

enter image description here

答案 3 :(得分:0)

我们也遇到了这个问题。我们已经将图形客户端更新为较新的版本。我们已完成以下步骤:

  • 撤消所有管理员同意
  • 删除所有权限
  • 重新添加已删除的权限
  • 获得管理员的同意

我希望这可以帮助某人进行故障排除。