代表用户获取令牌时出现“AADSTS65001:用户或管理员尚未同意使用该应用程序”

问题描述 投票:0回答:3

在 Azure AD 中,我创建了 2 个具有相同参数的应用程序注册,我想将它们用于不同的环境。当我使用第一次注册时,一切正常。但是切换到另一个后我收到错误

AADSTS65001: The user or administrator has not consented to use the application with ID

尝试获取代币时:

var result = await app.AcquireTokenOnBehalfOf(new[] { "User.Read" }, userAssertion).ExecuteAsync();

我不知道为什么会发生这个错误,因为我只配置了一个权限,并且不需要管理员权限

在客户端,我尝试添加一个参数

prompt=consent
以显示一个由用户提供权限的对话框,但它没有帮助。

您知道为什么在我的情况下会出现此错误吗?

.net azure-active-directory microsoft-graph-api azure-ad-msal
3个回答
1
投票

给你一些方法:

  1. 确保设置如下:

导航到 Azure Active Directory -> 企业应用程序 -> 同意和权限 -> 用户同意设置。

导航到 Azure Active Directory -> 企业应用程序 -> 用户设置。

  1. 几个小时前,我也遇到了同样的错误。尝试删除权限并重新添加。大约10分钟后就会生效。

在浏览器中测试:

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={client-id}
&response_type=code
&redirect_uri=http://localhost
&response_mode=query
&scope=https://graph.microsoft.com/User.Read
&state=12345

0
投票

同样的错误 AADSTS65001,以下步骤解决了我的 EWS HttpRequest 与 OAuth 令牌到应用程序邮箱的问题:

  • 转到注册应用程序的“概述”,查找“托管应用程序” 在本地目录中”并单击链接。
  • 然后在 [安全] 下查找“权限”,并确保所有预先配置的 API 权限都反映/派生到“用户同意”列表(而不是显示“没有为应用程序找到用户同意的权限”)
  • 请求 IT 365 管理员协助授予委派权限的“管理员同意”(无论缺少哪个,例如:Office 365 Exchange Online>EWS.AccessAsUser.All)

... ... ...

// C#

// 获取具有委托授权的令牌

var ewsScopes = new string[] { EWS_OAuthUrl };

var cred = new NetworkCredential(Credentials_EMailAcc, Credentials_EMailPswd);

var authResult = await pca.AcquireTokenByUsernamePassword(new string[] { EWS_OAuthUrl }, cred.UserName, cred.SecurePassword).ExecuteAsync();

// 使用访问令牌配置 ExchangeService

ExServ = new ExchangeService();

ExServ.Url = new Uri(EWS_Url);

ExServ.Credentials = new OAuthCredentials(authResult.AccessToken);

0
投票

对我来说,这个答案有效 - https://stackoverflow.com/a/63028237/10871196

总结 - 调用 /oauth2/v2.0/token 端点时无需发送作用域参数

© www.soinside.com 2019 - 2024. All rights reserved.