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

Azure:DefaultAzureCredential认证失败,请求解决方法

问题:Azure Storage使用DefaultAzureCredential认证失败(CLI令牌获取失败)

问题场景

  • 使用Azure Storage,通过DefaultAzureCredential进行身份验证
  • 已执行az login完成登录,但运行Azure函数时收到权限不匹配错误

错误响应

{ "message": "{\"odata.error\":{\"code\":\"AuthorizationPermissionMismatch\",\"message\":{\"lang\":\"en-US\",\"value\":\"This request is not authorized to perform this operation using this permission.\nRequestId:1fedb6ef-3002-0070-7133-fc1d53000000\nTime:2023-10-11T11:09:48.2823331Z\"}}}" }

测试代码及输出

执行以下代码:

const credential = new DefaultAzureCredential();

console.log(credential)

得到输出:

DefaultAzureCredential { [2023-10-11T11:17:18.644Z] UnavailableMessage: 'DefaultAzureCredential => failed to retrieve a token from the included credentials. To troubleshoot, visit  [https://aka.ms/azsdk/js/identity/defaultazurecredential/troubleshoot.'](https://aka.ms/azsdk/js/identity/defaultazurecredential/troubleshoot.%27), [2023-10-11T11:17:18.645Z] _sources: [

核心疑问

无法通过CLI获取令牌,尝试单独使用AzureCliCredential同样无效,如何解决该问题?

设备信息

  • MacBook Air M1 2020
  • 操作系统:Ventura 13.3

解决步骤

1. 确认CLI登录上下文正确性

  • 执行az account show,检查当前登录的订阅、租户是否与目标Azure Storage资源所属一致
  • 若不一致,用az account set --subscription <订阅ID>切换到正确订阅
  • 执行az login --tenant <租户ID>,确保登录到资源所在的租户

2. 验证令牌权限有效性

  • 执行az account get-access-token --resource https://storage.azure.com,获取Storage专属访问令牌
  • 解码令牌检查权限字段(如roles或scp),确认是否包含Storage操作所需权限(如StorageBlobContributor、StorageAccountContributor)
  • 若权限不足,给当前登录用户/服务主体分配对应Storage RBAC角色

3. 排查Mac M1环境下CLI适配问题

  • 执行az --version检查CLI版本,确保使用最新arm64原生版本(避免x86模拟版的兼容性问题)
  • 执行az cache purge清除CLI本地缓存,再重新执行az login
  • 检查环境变量:确认未设置AZURE_CLIENT_ID、AZURE_TENANT_ID等会覆盖CLI凭证的变量(这类变量会让DefaultAzureCredential优先选择其他凭证源)

4. 本地Azure函数的特殊配置

  • 检查函数项目的local.settings.json,确保未设置AzureWebJobsStorage连接字符串或其他身份验证相关环境变量,避免与DefaultAzureCredential冲突
  • 本地运行时可显式指定AzureCliCredential并绑定租户ID:
const { AzureCliCredential } = require("@azure/identity");
const credential = new AzureCliCredential({ tenantId: "<你的租户ID>" });

5. 检查权限边界与访问策略

  • 确认当前用户的RBAC角色直接关联到目标Storage资源(而非仅订阅/资源组级别的宽泛权限)
  • 排查是否有条件访问策略限制了该用户从当前设备获取令牌

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:01:27