【问题标题】:Azure Artifacts gives 401 error on publishing a nuget packageAzure Artifacts 在发布 nuget 包时出现 401 错误
【发布时间】:2020-08-23 15:03:50
【问题描述】:

将 Nuget 包推送到 Azure Artifacts 总是会出现 401 错误。请注意,API 密钥只是从 Azure 门户复制的。可能是什么问题?

dotnet nuget push out/MonoTorrent.1.0.39.nupkg -s "myfeed" -k "myapikey"

输出:

将 MonoTorrent.1.0.39.nupkg 推送到“https://pkgs.dev.azure.com/myacct/c7fc868d-fd14-4f27-a36a-8ff9add6482c/_packaging/c2fe5b0f-251b-4017-9848-ed4b906d9fc0/nuget/v2/”...

输入https://pkgs.dev.azure.com/myacct/c7fc868d-fd14-4f27-a36a-8ff9add6482c/_packaging/c2fe5b0f-251b-4017-9848-ed4b906d9fc0/nuget/v2/

未经授权https://pkgs.dev.azure.com/myacct/c7fc868d-fd14-4f27-a36a-8ff9add6482c/_packaging/c2fe5b0f-251b-4017-9848-ed4b906d9fc0/nuget/v2/1248ms

错误:响应状态码不表示成功:401(未授权)。

Nuget.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="myfeed" value="https://pkgs.dev.azure.com/myacct/myproject/_packaging/myfeed/nuget/v3/index.json" />
  </packageSources>
    <myfeed>
      <add key="Username" value="myliveidemail" />
      <add key="ClearTextPassword" value="myapikey" />
    </myfeed>
</configuration>

【问题讨论】:

  • 我想我已经在你的另一个问题中回答了这个问题:stackoverflow.com/questions/61672711/…
  • 链接中的解决方案不适用于非交互式构建机器。这些是由 Github 即时创建的。

标签: azure-devops azure-artifacts


【解决方案1】:

1.看起来您正在尝试将凭据添加到 Nuget.config 文件中,这是不推荐,因为:

我们强烈建议不要将您的 PAT 签入源代码控制。任何有权访问您的 PAT 的人都可以访问您的 Azure DevOps 服务。

虽然不推荐,但应该可以。对我来说,我使用如下命令:

dotnet nuget push --source "myfeed" --api-key az Test.1.0.0.nupkg

还有 Nuget.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="myfeed" value="https://pkgs.dev.azure.com/myacct/myproject/_packaging/myfeed/nuget/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <myfeed>
      <add key="Username" value="lancel" />
      <add key="ClearTextPassword" value="YourPat, instead of the APIkey" />
    </myfeed>
  </packageSourceCredentials>
</configuration>

这意味着您需要create PAT,它的范围是您要访问的组织,并具有以下权限:打包(读取)、打包(读取和写入)或打包(读取、写入和管理)。

那么应该是&lt;add key="ClearTextPassword" value="%PAT%" /&gt;

2.另一个方向是使用non-interactive scenarios中的Azure Artifacts Credential Provider。

运行帮助脚本以自动安装它并设置VSS_NUGET_EXTERNAL_FEED_ENDPOINTS 变量。这个变量的值应该是:

{"endpointCredentials": [{"endpoint":"https://pkgs.dev.azure.com/myacct/myproject/_packaging/myfeed/nuget/v3/index.json", "password":"PAT"}]}

【讨论】:

    猜你喜欢
    • 2019-11-08
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多