调用Graph API获取PhoneMethods授权失败及委托权限相关咨询
问题解决思路
所需的委托权限
要操作用户的2FA电话方法,你需要用到Microsoft Graph的这两个委托权限:
- 查看电话方法:
UserAuthenticationMethod.Read - 更新电话方法:
UserAuthenticationMethod.ReadWrite
两种调用场景的错误分析
1. 后端调用GraphClient.Users[id].Authentication.PhoneMethods.GetAsync()报错“授权失败”
普通用户的令牌没有权限通过Users[id]端点访问资源,哪怕是自己的用户ID也不行——你应该改用Me端点来代表当前用户操作。另外,后端如果是替用户调用Graph API,必须通过On-Behalf-Of(OBO)流程获取代表用户的令牌,同时要确保后端应用已添加上述委托权限,且由管理员完成了权限同意。
2. SPA直接调用GraphClient.Me.Authentication.PhoneMethods.GetAsync()报错“jwt范围不正确”
这是因为你获取令牌时没请求正确的权限范围。在SPA的登录请求里,必须加上https://graph.microsoft.com/UserAuthenticationMethod.Read(或ReadWrite)的范围,同时要在Azure AD B2C的SPA应用注册里提前添加这些Microsoft Graph的委托权限。
权限同意的方式
这些权限只需要全局管理员一次性同意即可,不需要每个用户登录时都手动授权。你可以在Azure AD B2C的应用注册里找到已添加的Graph权限,点击“授予管理员同意”按钮完成配置。
内容的提问来源于stack exchange,提问作者tlt
相关产品推荐
相关产品推荐

