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

使用托管身份访问Azure OpenAI Service遇401错误求助

排查Azure OpenAI托管身份认证401错误的关键点

以下是你可能遗漏的核心环节:

  • 获取正确的身份令牌
    Azure OpenAI要求令牌的目标资源必须是https://cognitiveservices.azure.com/,而非ARM管理端点(https://management.azure.com/)。在VM上获取令牌时,要确保指定正确的资源:

    • 系统分配身份:执行命令 curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fcognitiveservices.azure.com/' -H Metadata:true
    • 用户分配身份:需要额外指定client_id,命令为 curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fcognitiveservices.azure.com/&client_id=<your-user-assigned-mi-client-id>' -H Metadata:true
      将返回的access_token作为Bearer令牌放入请求头。
  • 验证RBAC角色分配有效性

    • 确认角色是直接分配到目标OpenAI资源上,而非仅分配到资源组或订阅级别(继承虽生效,但直接分配更稳妥)。
    • RBAC角色分配通常需要5-15分钟生效,若刚完成分配就测试,需等待一段时间重试。
    • 检查角色是否正确:必须是Cognitive Services User,而非其他类似角色(比如Cognitive Services Contributor权限更高,但托管身份认证要求的是前者)。
  • 检查Postman请求配置

    • 确保请求URL是Azure OpenAI专属端点,格式为https://<your-openai-resource-name>.openai.azure.com/openai/deployments/<your-model-deployment-name>/chat/completions?api-version=<api-version>,不能使用OpenAI公共端点。
    • 请求头除Authorization: Bearer <your-access-token>外,需包含Content-Type: application/json,且请求体格式符合对应API要求(比如聊天补全需包含messages数组)。
  • 适配托管身份类型
    如果使用用户分配的托管身份,获取令牌时必须指定该身份的client_id,否则VM可能默认使用系统分配身份(若同时存在),导致权限不匹配。

  • 排除网络限制
    虽其他服务可正常访问,仍需确认VM能访问Azure AD令牌端点(http://169.254.169.254为本地元数据服务,通常无问题),以及OpenAI资源的网络设置是否允许VM所在虚拟网络访问(比如资源是否开启防火墙、是否将VM的VNet加入允许列表)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:02:39