无法生成访问令牌。 invalid_grant 错误,AADSTS65001:用户或管理员尚未同意使用具有 ID 的应用程序

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

上下文:我正在构建一个 Web 应用程序,旨在提供有关用户 Sharepoint 和 OneDrive 数据的见解和分析。用户应该能够访问我的网络应用程序,通过一些 oauth 流程并同意“读取”我们想要的工作区数据范围来连接他们的 Sharepoint 和 OneDrive 数据,然后我们应该能够生成访问和刷新令牌代表他们根据他们同意的范围在我们的应用程序中使用。例如,我们希望能够在给定一些输入查询的情况下搜索用户的共享点数据。

问题:我在尝试生成访问令牌时继续遇到此错误:

400 Bad Request: "{"error":"invalid_grant","error_description":"AADSTS65001: The user or administrator has not consented to use the application with ID 'fa30181d-73e3-4ac8-bc74-cdb9323c19f6' named 'appTesting'. Send an interactive authorization request for this user and resource. Trace ID: 24846f12-6d9e-4a04-b3bf-abb970710e00 Correlation ID: c0886b13-403b-4843-8fbe-34525d564452 Timestamp: 2024-04-30 02:15:00Z","error_codes":[65001],"timestamp":"2024-04-30 02:15:00Z","trace_id":"24846f12-6d9e-4a04-b3bf-abb970710e00","correlation_id":"c0886b13-403b-4843-8fbe-34525d564452","suberror":"consent_required"}"
  • 我正在遵循本指南:https://learn.microsoft.com/en-us/graph/auth-v2-user?tabs=http
  • 我请求的范围:offline_access User.Read Files.Read
  • 我当前的设置适用于根据指南成功生成 oauth url,我看到我的应用程序请求的范围(User.Read、Files.Read、offline_access),我接受并成功重定向到包含代码、状态的 url和 session_state,但是我尝试使用从 oauth url 流返回的代码生成访问令牌(遵循指南中的规范)时收到 invalid_grant 错误。
  • 我已经添加了我想要的 API,并在应用程序 > API 权限 > 授予管理员同意中为我想要的 API 授予了管理员同意,我还将 User.Read 和 Files.Read 范围添加到了“Expore an” API 选项卡。
  • 我可以确认我的代码中使用的重定向 uri、客户端密码、客户端 ID 和租户 ID 与 Azure UI 中的值匹配
  • 在我在“应用程序注册”中创建的 Web 应用程序中,在“身份验证”侧边栏选项卡下,未选中“隐式授权”和“混合流”复选框,并且“允许公共客户端流”设置也设置为 false。

在我看来,我正在严格遵循该指南,但我的 Azure UI 配置中存在一些我不知道且未包含在指南中的问题。任何解决此问题的建议将不胜感激!

TLDR 和主要问题,尝试生成访问令牌时导致此错误的原因是什么?

400 Bad Request: "{"error":"invalid_grant","error_description":"AADSTS65001: The user or administrator has not consented to use the application with ID 'fa30181d-73e3-4ac8-bc74-cdb9323c19f6' named 'appTesting'. Send an interactive authorization request for this user and resource. Trace ID: 24846f12-6d9e-4a04-b3bf-abb970710e00 Correlation ID: c0886b13-403b-4843-8fbe-34525d564452 Timestamp: 2024-04-30 02:15:00Z","error_codes":[65001],"timestamp":"2024-04-30 02:15:00Z","trace_id":"24846f12-6d9e-4a04-b3bf-abb970710e00","correlation_id":"c0886b13-403b-4843-8fbe-34525d564452","suberror":"consent_required"}"

如问题详细描述。

azure oauth microsoft-oauth azure-oauth
1个回答
0
投票

错误“AADSTS65001: 用户或管理员尚未同意使用 ID 为 'xxx' 且名为 'xxx' 的应用程序。为此用户和资源发送交互式授权请求” 通常在应用程序未经过筛选时出现所需的 API 权限并且管理员同意这些权限。

因此,如果您想访问用户的 SharePoint 和 OneDrive,请检查以下内容:

创建了 Microsoft Entra ID 并授予

Files.Read.All

 委派 API 权限:

enter image description here

要授权用户,请使用以下端点:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize? &client_id=ClientID &response_type=code &redirect_uri=https://jwt.ms &response_mode=query &scope=offline_access User.Read Files.Read.All &state=12345

enter image description here

使用以下参数生成

访问令牌

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token client_id:ClientID grant_type:authorization_code code:code redirect_uri:https://jwt.ms client_secret:ClientSecret scope:offline_access User.Read Files.Read.All

enter image description here

对于

示例,通过使用上述访问令牌,我能够访问 OneDrive 和 SharePoint 网站:

https://graph.microsoft.com/v1.0/sites/SiteID/drives/DriveID

enter image description here

https://graph.microsoft.com/v1.0/drives/DriveID/root

enter image description here

如果问题仍然存在,检查以下内容:

  • Files.Read
     API 权限仅允许应用程序访问登录的用户信息,因此请尝试授予 
    Files.Read.All
     委托的 API 权限。
  • 如果遇到错误,也尝试授予
  • Sites.Read.All
     委托 API 权限。
  • 确保
  • 授予管理员同意 API 权限。
© www.soinside.com 2019 - 2024. All rights reserved.