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

如何使用Azure容器注册表令牌调用/_tags端点?

使用ACR访问令牌调用/_tags端点遭遇401未授权

问题背景

我通过Azure容器注册表(ACR)的令牌菜单生成了访问令牌,希望用它调用特定镜像的/_tags端点,但始终无法成功。目前该令牌可以正常在PowerShell中执行docker login命令登录ACR,但只有使用管理员账户凭据时,调用/_tags API才能成功。

我参考了ACR标签列表的官方API文档,尝试了两种认证方式,但都返回401未授权错误:

  • 直接用令牌名称和密码做Basic认证
  • 先通过oauth2/token接口获取Bearer令牌,再用该令牌认证

尝试的代码

var registryUrl = "https://myRegistry.azurecr.io";

// 初始化HTTP客户端
var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(registryUrl);
byte[] byteArray = Encoding.ASCII.GetBytes($"tokenName:tokenPassword"); // Azure令牌界面提供的凭据
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

// 调用/_tags端点获取镜像标签列表
var imageReference = "my-image";
var response = await httpClient.GetAsync($"/acr/v1/{imageReference}/_tags");
if (response.IsSuccessStatusCode)
{
    var json = await response.Content.ReadAsStringAsync();
    var imageTagResponse= JsonConvert.DeserializeObject<DockerImageRegistryResponse>(json);
    foreach (var tag in imageTagResponse.Tags)
    {
        Console.WriteLine(tag.Name);
    }
}

返回的错误信息

{
    "errors": [
        {
            "code": "UNAUTHORIZED",
            "message": "authentication required, visit https://aka.ms/acr/authorization for more information.",
            "detail": [
                {
                    "Type": "repository",
                    "Name": "my-image",
                    "Action": "metadata_read"
                }
            ]
        }
    ]
}

已做的排查

看到错误信息里的Action字段后,我给令牌创建了明确包含metadata_read权限的自定义作用域,但问题依然存在。

后续补充

  • 一开始我怀疑这是ACR令牌刚退出预览版导致的Bug,尝试在ACR的GitHub仓库提交问题,但发现该仓库不支持提交问题
  • 想创建Azure支持工单,却发现入口藏在IAM界面的自定义“Support Request Contributor”角色下,提交Bug的流程过于繁琐

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:37:39