通过Microsoft单点登录获取用户proxyAddresses的权限问题咨询
问题解答
是的,你需要在重定向到登录接口的请求中添加额外的scope参数。
你当前使用的User.Read权限仅支持读取当前登录用户的基础档案信息(包括显示名、用户主体名称UPN、头像等),不包含proxyAddresses属性的读取权限,因此调用Graph接口时会返回访问被拒绝错误。
你需要额外添加的委派权限为User.Read.All,操作步骤如下:
- 首先登录Azure AD应用管理后台,找到你的应用(Client ID为
a5342222-a222-222d-87c3-222222222222),在「API权限」配置页添加Microsoft Graph的User.Read.All委派权限,若你所属租户开启了权限管理员审批规则,需要先让租户管理员为该权限授予管理员同意,避免普通用户授权时被拦截。 - 修改你重定向到Microsoft登录页的请求中scope参数,将原有值
scope=user.read调整为scope=user.read User.Read.All,多个scope之间用空格分隔即可。 - 权限调整完成后需要引导用户重新走登录授权流程,获取携带新权限声明的访问令牌,再调用
https://graph.microsoft.com/v1.0/me?$select=proxyAddresses接口即可正常获取到用户的所有别名邮箱数据。
如果调整后仍然报错,可以检查你获取到的access token的scp声明,确认是否已经包含User.Read.All字段,排除旧令牌缓存的问题。
内容的提问来源于stack exchange,提问作者Mark Hayward
相关产品推荐
相关产品推荐

