使用Express MSAL开发的应用中,其他用户调用Graph API /me报403如何解决?
解决用户令牌缺失User.Read权限的问题
1. 完成管理员同意操作
你已经在Azure门户添加了Delegated类型的User.Read权限,但仅添加权限还不够——普通用户不会自动获得这个权限,只有应用的管理员/所有者登录时会默认获得同意。
- 操作步骤:
- 进入Azure门户→应用注册→找到你的应用→切换到「API权限」页面
- 找到已添加的
User.Read权限,点击右侧的「授予[你的租户名称]管理员同意」按钮 - 确认弹窗提示后,租户内所有用户登录应用时都会自动获取该权限
2. 确保MSAL请求包含User.Read scope
检查你的Express应用代码,在获取Microsoft Graph访问令牌的请求中,必须明确把User.Read加入scope列表。比如:
- 在调用MSAL的
acquireTokenSilent或acquireTokenByCode方法时,scope参数要设置为:['openid', 'profile', 'email', 'User.Read'] - 如果scope里漏掉
User.Read,即使用户有管理员同意的权限,令牌里也不会包含该权限
3. 排查特殊用户限制(可选)
如果前两步操作后仍有问题,检查测试用户/同事的租户账号是否被限制访问Microsoft Graph的User.Read接口——不过这种场景很少见,优先处理前两项即可。
内容的提问来源于stack exchange,提问作者Chr1sCon
相关产品推荐
相关产品推荐

