You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure B2C中User.Read.All权限失效,如何读取用户邮箱?

B2C读取用户邮箱的权限问题解决办法

你当前用自定义范围user_impersonation能正常获取令牌,但换成User.Read.All时出现权限不足错误,核心原因是这两个范围不属于同一资源:user_impersonation是你自定义API的范围,而User.Read.All是Microsoft Graph的权限,不能直接替换使用。下面给你两种可行方案:

方案一:直接从B2C令牌中获取邮箱(最便捷)

不需要调用Microsoft Graph,只要配置用户流让邮箱出现在返回的令牌里:

  • 进入Azure门户的B2C租户,打开你用的B2C_1A_SIGNUP_SIGNIN用户流
  • 切换到「应用程序声明」页面,勾选「电子邮件」选项,保存用户流
  • 重新发起授权请求,保持scope为https://xx.onmicrosoft.com/xx/user_impersonation(也可以加上openid profile),拿到令牌后解码,就能在声明字段里找到邮箱(一般是email或emails)

方案二:通过Microsoft Graph获取邮箱(需配置Graph权限)

如果必须调用Graph接口,得按以下步骤配置:

  1. 注册Graph专用应用:在你的B2C租户中新建一个应用,不要用现有的IdentityExperienceFrameworkAppId
  2. 添加并授权Graph权限:给这个新应用添加「应用权限」(不是委派权限)User.Read.All,然后点击「授予管理员同意」(需要全局管理员操作)
  3. 调整授权请求:将请求的scope改为https://graph.microsoft.com/User.Read.All,client_id换成新注册的Graph应用ID;注意这种场景适合用客户端凭据流(client_credentials)发起请求,而非你当前用的隐式流

你遇到的错误提示:This application does not have sufficient permissions against this web resource to perform the operation,本质是你当前的应用未被授予Graph的User.Read.All权限,且B2C用户流默认不支持直接请求Graph的委派权限。

内容的提问来源于stack exchange,提问作者baton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:53:21