咨询读取完整组织用户资料的非管理员权限及Graph Explorer权限疑问
解答你的Microsoft Graph权限疑问
1. 为什么Graph Explorer无需管理员授权就能获取完整用户信息?
Graph Explorer是微软官方推出的API测试工具,它的背后应用有特殊的权限配置:
- 微软为了方便开发者快速验证API功能,已经将这个官方应用的部分权限(包括
User.Read.All)设置为允许普通用户自行授权,跳过了常规第三方应用需要管理员预先同意的流程——这是官方工具的特殊安排,和普通第三方应用的权限逻辑不一样。 - 你在Graph Explorer登录时,其实已经悄悄完成了对
User.Read.All权限的授权(流程被简化了),所以它能返回完整的用户资料。
2. 这存在安全问题吗?
完全不用担心安全问题:
- Graph Explorer是微软官方认证的应用,所有权限请求和数据访问都受微软的安全体系管控,不会滥用你的权限。
- 租户管理员依然有绝对控制权:如果管理员在Azure AD的用户同意设置中限制了用户自行同意管理员级权限的范围,普通用户就无法再通过Graph Explorer获取这类权限了。
3. 无需管理员授权时,读取完整用户资料的正确权限是什么?
首先明确几个权限的边界:
User.ReadBasic.All确实只能返回你看到的基础字段(displayName、mail等),无法获取jobTitle、officeLocation这类扩展信息。- 要读取同租户其他用户的完整资料,必须使用
User.Read.All权限,但它默认是需要管理员同意的权限。
不过有两种无需管理员干预的可行场景:
- 如果你的租户管理员已经在Azure AD中配置了用户同意策略,允许普通用户同意
User.Read.All这类权限,那么你的应用可以引导用户自行授权该权限,之后就能获取完整用户资料。 - 如果你只需要读取当前登录用户自己的完整信息,可以使用
User.Read权限(委托权限,普通用户可自行授权),调用GET https://graph.microsoft.com/v1.0/me就能返回自己的全部资料,但这个权限无法读取其他用户的完整信息。
内容的提问来源于stack exchange,提问作者Hongbo Miao
相关产品推荐
相关产品推荐

