You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Graph API GetAccessTokenForUserAsync时权限请求异常问题咨询

问题:请求UserRead权限却出现额外权限授权提示

我尝试使用Graph API创建团队并添加用户,但在获取访问令牌时遇到问题。我的代码如下:

scopes = new[] { GraphConstants.UserRead };
await _tokenAcquisition.GetAccessTokenForUserAsync(scopes);

首次登录后,授权界面显示要求读取和写入组、读取和写入所有用户配置文件等权限,但我仅请求了UserRead权限,且Azure应用已配置为仅包含UserRead权限。


原因分析

  1. 遗留权限配置:若应用曾被授予过其他权限(比如管理员同意过更高权限),或应用Manifest中存在未清理的权限条目,会导致授权界面显示多余权限。
  2. TokenAcquisition默认行为:部分场景下,GetAccessTokenForUserAsync会自动包含应用注册中所有已存在的委派权限,即便代码仅指定UserRead。
  3. 示例配置残留:参考的示例项目可能默认配置了额外权限,若直接复用配置文件(如appsettings.json),会带入未清理的权限设置。

解决步骤

  1. 检查应用Manifest:
    登录Azure门户进入应用注册,点击「Manifest」,找到requiredResourceAccess节点,确认仅保留UserRead对应的权限配置,删除其他多余条目。

  2. 清理已授予的权限:
    在应用注册的「API权限」页面,点击「授予管理员同意」旁的「...」,选择「撤销同意」,重新配置仅UserRead权限并按需授予同意。

  3. 明确指定作用域:
    代码中直接写死作用域字符串,避免依赖可能带多余配置的常量:

    var scopes = new[] { "https://graph.microsoft.com/User.Read" };
    await _tokenAcquisition.GetAccessTokenForUserAsync(scopes);
    
  4. 清理用户端授权记录:
    用户访问个人账号中心,进入「安全信息」→「权限」,找到该应用并撤销已授权权限,重新登录测试。

内容的提问来源于stack exchange,提问作者eloew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:05:31