当前位置: 首页 > 知识库问答 >
问题:

对于IMAP.AccessAsUser。所有范围ADSTS6501:用户或管理员未同意使用该应用程序

葛威
2023-03-14

在我的java web应用程序中,我想通过使用jakarta邮件访问用户的邮箱。为此,我跟随https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth用于OAuth2授权代码流。

在Azure端口上,我设置了我的应用程序并添加了API权限,如下所示

现在用户正在重定向到以下授权endpoint:

https://log in . Microsoft online . com/5426 ee07-9b 73-4a9e-8075-395 ab 439 c6fa/oauth 2/v 2.0/authorize?client _ id = b 6067 ad 9-7195-430 b-a35d-97b 7 aa 7 beb 8 f

输入凭据并接受同意后,redirect_uri会被身份验证代码击中。基于该身份验证代码,我形成了令牌endpointURL,并从服务器上点击它,令牌endpoint如下:

网址:https://login.microsoftonline.com/5426ee07-9b73-4a9e-8075-395ab439c6fa/oauth2/v2.0/token

表单数据:

client_id=b6067ad9-7195-430b-a35d-97b7aa7beb8f
scope=offline_access%20https%3A%2F%2Foutlook.office.com%2FIMAP.AccessAsUser.All
redirect_uri=http://localhost:8080/callback/microsoft
grant_type=authorization_code
client_secret=QUs8Q~aboLBiopTezMTKwzQjIwWsFFXjc2kCRaRs (I know I have shared the secret)
code={code received from authorize end point}

对此帖子请求的回复如下:

{“error”:“invalid_grant”,“error_description”:“AADSTS65001:用户或管理员不同意使用ID 为”b6067ad9-7195-430b-a35d-97b7aa7beb8f“的应用程序,名为”电子邮件连接器”。为此用户和资源发送交互式授权请求。\r\n跟踪 ID: dc008ced-e23f-4919-bd45-b7ae7c68b000\r\n相关 ID: 9b6ede03-3c05-4a78-8975-036a3cb20773\r\n时间戳: 2022-06-07 19:51:30Z“,”error_codes“:[65001],”时间戳“:”2022-06-07 19:51:30Z“,”trace_id“:”dc008ced-e23f-4919-bd45-b7ae7c68b000“,”correlation_id“:”9b6ede03-3c05-4a78-8975-036a3cb20773“,”子错误“:”consent_required“}

在这里,我不明白为什么错误说用户或管理员不同意使用该应用程序,用户在授权endpoint输入凭据后已接受同意。活动更多 如果我们查看上面的屏幕截图,管理员已经授予访问该目录的权限。

共有1个答案

狄楷
2023-03-14

我试图在我的环境中重现相同的场景,得到了如下相同的错误:

要解决此错误,请检查用于获取代码的授权endpoint

    < li >获取代码时避免使用Microsoft graph API作用域。 < li >将其替换为您用来获取访问令牌的作用域,如下所示:
https://login.microsoftonline.com/Your_TenantID/oauth2/v2.0/authorize?
client_id=Your_ClientID
&response_type=code
&redirect_uri=http://localhost:8080/callback/microsoft
&response_mode=query
&scope= offline_access https://outlook.office.com/IMAP.AccessAsUser.All 
&state=12345

从上述授权endpoint获取code

我在修改endpoint后成功获得访问令牌,如下所示:

要验证访问令牌,请在jwt.io中对其进行解码,并检查audscp声明,如下所示:

 类似资料:
  • “AADSTS65001:用户或管理员未同意使用ID为<'My native client app ID'>的应用程序。请为此用户和资源发送交互式授权请求。 我们使用,是本机应用程序id,是Web API应用程序URI。 权限方面,已从客户端应用程序授予了访问api应用程序的委托权限,并尝试在清单中设置。

  • 我们遵循Microsoft Code授权流的OAuth2的v2,如下所述, https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow 在Microsoft Azure下的应用程序注册中创建应用程序后,尝试从以下url获取代码 https://log in . Microsoft

  • 我正在尝试使用 Postman 进行身份验证以获取 Azure AD 持有者令牌,然后将令牌发送到我的本地 WebApi .net Core 服务器,该服务器应验证令牌并将请求发送到图形 API。但是在过去的几个小时里,我被这个错误困住了。 Microsoft.Identity.Client.MsalUiRequiredException: AADSTS65001:用户或管理员不同意使用ID 为“

  • 我们正在尝试使用官方文档请求获取Oauth的令牌: 但是当我们发出请求时,它会响应此错误: 问题是,即使在管理员同意的情况下,我们已经在Azure门户AD和应用注册上授予了他们此权限,但仍然: 那里缺少任何权限吗?,对此有任何线索吗?

  • 我正在尝试使用 Postman 向 PowerBi API 发送请求以执行 sth,但我无法获取它的令牌并收到以下错误: 然后我试着回答这个问题,这个问题建议先授权。我得到的结果是一个HTML页面,而不是代码。 我已经提供了此操作所需的所有权限,但没有授予管理员权限,据我所知,这在这里是不必要的。 我还增加了邮差作为重定向URI。 张贴这些图像,因为我怀疑这里可能有问题。

  • 我正在尝试将DocuSign集成到我们的系统中。我从文档中了解到,我们需要使用JWT身份验证,因为我们请求组织管理员的许可,然后,用户在请求签名时不需要登录。 这是我用来获得管理员同意的url: https://account-d.docusign.com/oauth/auth?response_type=code 回调URL被成功调用,返回的代码如下: ?state=esignature\u d