【问题标题】:Azure Devops publishing to own feed suddenly results in 403 forbiddenAzure Devops 发布到自己的提要突然导致 403 被禁止
【发布时间】:2019-11-30 22:01:57
【问题描述】:

我在一个项目中使用 Azure DevOps 已经有一段时间了,但突然发布到我自己的组织/集合提要导致 403。

我创建了一个提要,我可以在 nuget push 构建步骤中选择它,但它不起作用。我创建了一个新的提要来发布 NuGet 包,这再次完美运行。在我看来,令牌已过期,但我从未创建过令牌或使用它进行身份验证。我也不想将我的 NuGet 提要更改为新提要,因为我也想使用旧包。

这是构建管道:

这是堆栈跟踪:

活动代码页:65001 SYSTEMVSSCONNECTION 存在 true SYSTEMVSSCONNECTION 存在 true SYSTEMVSSCONNECTION 存在 true

[警告]无法创建出处会话:{"statusCode":500,"result":{"$id":"1","innerException":null,"message":"User

'a831bb9f-aef5-4b63-91cd-4027b16710cf' 缺少完成权限 这个动作。你需要有 'ReadPackages'。","typeName":"Microsoft.VisualStudio.Services.Feed.WebApi.FeedNeedsPermissionsException, Microsoft.VisualStudio.Services.Feed.WebApi","typeKey":"FeedNeedsPermissionsException","errorCode":0,"eventId":3000}} 将 NuGet.config 保存到临时配置文件。将 NuGet.config 保存到 一个临时配置文件。 [命令]“C:\Program Files\dotnet\dotnet.exe” nuget push d:\a\1\a\Microwave.0.13.3.2019072215-beta.nupkg --source https://simonheiss87.pkgs.visualstudio.com/_packaging/5f0802e1-99c5-450f-b02d-6d5f1c946cff/nuget/v3/index.json --api-key VSTS 错误:无法加载源 https://simonheiss87.pkgs.visualstudio.com/_packaging/5f0802e1-99c5-450f-b02d-6d5f1c946cff/nuget/v3/index.json 的服务索引。 错误:响应状态码不表示成功:403 (禁止 - 用户 'a831bb9f-aef5-4b63-91cd-4027b16710cf' 缺少 完成此操作的权限。你需要有'ReadPackages'。 (DevOps 活动 ID:2D81C262-96A3-457B-B792-0B73514AAB5E))。

[错误]错误:进程“C:\Program Files\dotnet\dotnet.exe”失败,退出代码为 1

[错误]包发布失败

[section]整理:dotnet push to own feed

是否有一个选项我忽略了我必须以某种方式验证自己的位置?真是太奇怪了。

【问题讨论】:

    标签: .net-core azure-devops tfs nuget azure-pipelines


    【解决方案1】:

    "message":"用户 'a831bb9f-aef5-4b63-91cd-4027b16710cf' 缺少 完成此操作的权限。您需要有“ReadPackages”。

    根据此错误信息,您收到的错误是用户(a831bb9f-aef5-4b63-91cd-4027b16710cf)没有访问您的Feed的权限。

    而且,正如我从后端检查的那样,a831bb9f-aef5-4b63-91cd-4027b16710cf 是您的构建服务帐户的 VSID。因此,请尝试将此用户(Micxxxave Build Service (sixxxxss87))添加到您的目标提要中,并为该用户分配提要的贡献者角色或更高权限。

    另外,这里有doc你可以参考:

    Feed 权限中有一个新 UI:

    【讨论】:

    • 好的,谢谢,我稍后会检查。但这对我来说似乎很奇怪,因为这个用户不是我在用户列表中创建或看到的用户。我认为它是由 azure 本身创建的。这就是为什么我不明白错误消息的原因。唯一改变的是我从私人收藏转到了公共收藏。也许这就是原因?新提要像旧提要一样直接开箱即用,也没有向用户/管道添加任何权限或令牌:/
    • 是的,你是对的。该用户是默认存在于管道中的 Build Service 帐户,其域为 build。您可以在您的安全服务组下看到这个
    • 非常感谢,这就是问题所在 =) 看起来让您的项目成为公共项目意味着用户需要比以前更多的权限。现在有点道理。非常感谢!
    • “另外,正如我从后端检查的那样,a831bb9f-aef5-4b63-91cd-4027b16710cf 是您的构建服务帐户的 VSID。”如何按 GUID 搜索?
    • 回答我自己的问题。 docs.microsoft.com/en-us/rest/api/azure/devops/graph/users/… 你可以从 get 中获取原始 json 并按 ID 搜索。 (有人会认为这会出现在 UI 中)
    【解决方案2】:

    为了进一步扩展 Merlin 的解决方案和相关链接(特别是 this one about scope),如果您的解决方案中只有一个项目,Azure Pipelines 似乎会自动将工作代理的范围限制为代理本身。因此,它无法看到它之外的任何服务,包括您自己保存在 Pipelines 中的私有 NuGet 存储库。

    具有多个项目的解决方案会自动解锁其范围,让构建代理可以查看管道中保存的私有 NuGet 源。

    我发现消除单个项目构建范围限制的最简单方法是:

    1. 在管道项目中,点击屏幕左下方的“设置”齿轮。
    2. 转到管道 > 设置
    3. 取消选中“将作业授权范围限制为当前项目”

    您好,您在构建过程中涉及私有 NuGet 源的 403 错误现在应该消失了!

    【讨论】:

    • 我无法取消选中该选项。 Azure DevOps 打印:“此设置无法更改,因为它是在组织级别强制执行的。”
    • @Daspuru 看起来您需要与 DevOps 组织的管理员聊天。如果是你,那么你可能需要在项目级别调整任何内容之前深入了解组织的 DevOps 设置。祝你好运!
    【解决方案3】:

    我想添加更多信息,以防万一有人最终遇到同样的问题。其他用户共享的所有信息都是正确的,还有一个警告需要考虑。 策略设置被组织设置取代。如果您发现自己无法修改设置或设置为灰色,请单击屏幕左上方的“Azure DevOps”徽标。

    点击左下角的组织设置。

    转到管道 --> 设置并验证当前配置。

    当我创建我的组织时,它限制了组织级别的范围。我花了一段时间才意识到它正在取代这个项目。

    【讨论】:

      【解决方案4】:

      仍然想知道“将工作授权范围限制在当前项目”设置在哪里,我花了一段时间才找到它,它在项目设置中,下面的屏幕截图应该有帮助

      【讨论】:

        【解决方案5】:

        它可能不会立即明显或直观,但是当您的管道运行的项目是公共的,但它正在访问的提要不是公共项目时,也会发生此错误。例如,在访问组织级提要时可能就是这种情况。

        在这种情况下,有三种可能的解决方案:

        1. 公开提要,在这种情况下不需要身份验证;或
        2. 将项目设为私有,从而强制服务进行身份验证;或
        3. 在您的提要权限下添加允许项目范围的构建

        @Merlin Liang - MSFT's excellent answer 中包含最后一个选项的说明,但根据您的要求,其他选项可能更可取。

        至少,这有望提供对可能导致此错误的情况类型的更多了解。

        【讨论】:

        • 我现在注意到 from the comments under the accepted answer 这与 OP 的原始问题的根本原因相同。然而,由于这一点在许多 cmets 中都被忽略了,我将保留这个答案,以便那些可能受益于不仅了解原因,而且了解缓解问题的其他选项的人。
        【解决方案6】:

        如果对管道使用 yaml 文件,要检查的另一件事是,提要名称是否正确

        我知道这似乎是一个有争议的问题,但我花了很长时间调试 ..lacks permission to complete this action. You need to have 'AddPackage'. 错误,却发现我在 azure-pipelines.yaml 文件中引用了错误的提要。

        【讨论】:

        • 尝试了上述答案中的所有内容,一切都很好。我使用的是 yml 构建文件并指定了错误的提要。感谢您发布此信息并防止对我的额头造成任何进一步的伤害。再敲一下桌子,我可能会寻找新的职业。
        【解决方案7】:

        如果您不想/不能更改项目级设置,例如 here

        您可以通过单击“允许项目范围的构建”来设置每个提要(因为它已经启用,所以显示为灰色)。

        这与接受的答案不同,因为您不必显式添加用户并设置权限。

        【讨论】:

          猜你喜欢
          • 2012-10-13
          • 2012-12-24
          • 2021-06-17
          • 2019-08-04
          • 2021-04-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多