Graph权限异常咨询:低权限可访问其他用户扩展个人资料
问题原因分析
1. 租户级用户权限配置覆盖了应用权限限制
你的租户大概率开启了允许用户查看组织内所有用户完整配置文件的默认设置,这个Azure AD租户级配置会让拥有基础委托权限(如User.Read、User.ReadBasic.All)的用户,能够访问其他用户的扩展资料字段(如interests、pastProjects、skills)。
这个设置的核心逻辑是:当租户允许内部用户查看其他用户的完整资料时,租户级的用户权限会优先于应用权限的粒度限制——只要登录用户本身具备查看其他用户资料的权限,即使应用仅申请了基础权限,也能获取到完整的用户扩展字段。
2. User.ReadBasic.All权限的实际行为受租户配置影响
官方文档中User.ReadBasic.All的权限描述是仅允许访问displayName、givenName等8个基础字段,但这是在租户严格限制用户资料可见性的前提下。如果你的租户开启了上述用户配置,该权限的实际访问范围会被放宽,允许获取更多用户资料字段。
3. 客户租户的配置符合权限预期
客户租户应该是关闭了“用户查看其他用户完整配置文件”的设置,此时应用权限的限制会正常生效:User.ReadBasic.All仅能访问基础字段,未申请User.Read.All管理员权限的情况下,无法获取其他用户的扩展资料,因此返回UnauthorizedAccessException,这是符合权限设计的正常表现。
验证方法
你可以在自己的AAD租户中检查以下配置:
- 登录Azure AD门户,进入用户 -> 用户设置
- 找到用户配置文件可见性相关选项,查看是否开启了“允许用户查看组织中所有用户的完整配置文件”
- 若开启,关闭后再测试API调用,会发现权限限制生效,无法再获取其他用户的扩展字段
内容的提问来源于stack exchange,提问作者npen
相关产品推荐
相关产品推荐

