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

为托管身份分配应用角色后,获取含Mail.Send的访问令牌失败

解决系统分配托管身份令牌缺失Mail.Send角色的问题
  • 检查令牌请求受众
    用DefaultAzureCredential获取令牌时,必须确保请求的受众是https://graph.microsoft.com/。受众不对的话,令牌里不会携带Graph相关权限。可以在获取令牌时明确指定受众参数来验证。

  • 确认应用角色分配对象
    要保证应用角色是分配给函数应用的系统托管身份,而非你创建的那个应用注册本身,别混淆两个对象导致分配到错误主体。用Azure CLI再核对一遍:

    az role assignment list --assignee <托管身份的Object ID> --all
    

    查看结果里是否包含目标应用角色的条目。

  • 等待权限传播延迟
    Azure权限分配可能存在15-30分钟的传播延迟,哪怕门户显示已分配,令牌可能还未更新。可以等待一段时间后再尝试,或者重启函数应用触发身份刷新。

  • 解析令牌确认内容
    用离线JWT解码工具解析获取到的令牌,检查roles声明里是否包含Mail.Send。如果确实没有,重新执行应用角色分配命令,确保参数正确:

    az ad app role assignment create --assignee <托管身份Object ID> --resource <应用注册的Object ID> --role <Mail.Send角色的ID>
    

    注意--resource参数是你配置了Mail.Send权限的应用注册的Object ID,而非Graph的ID。

  • 核对应用注册权限配置
    确认应用注册上的Microsoft Graph Mail.Send权限是Application类型,且已经获得全局管理员同意。在应用注册的“API权限”页面查看状态是否为“已授予管理员同意”。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:52:07