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

如何使用Azure AD服务主体实现跨组织Azure DevOps流水线拉取NuGet工件源

用Entra ID服务主体实现跨Azure DevOps组织NuGet源认证

先确认基础配置是否到位

  • 你创建的服务主体必须已经加入源所在的Azure DevOps组织,并且在目标NuGet工件源的权限设置里,给这个服务主体分配了读取权限——如果这一步没做对,后面全白搭,先检查这里。
  • 确保服务主体的客户端密钥(密码)没过期,且你能拿到正确的租户ID、服务主体ID。

创建适配的服务连接(核心步骤)

之前大概率是选错了服务连接类型,别用External Azure DevOps Server那套,要建专门的NuGet+Entra ID认证的服务连接:

  1. 登录你部署流水线的Azure DevOps组织,进入项目的「设置」→「服务连接」→「新建服务连接」
  2. 选择「NuGet」类型,点下一步
  3. 认证方式选Azure Active Directory,然后填这些信息:
    • 连接名称:随便起个好认的(比如myArtifactFeed-SP)
    • NuGet源URL:就是源所在组织的工件源v3地址,格式是https://pkgs.dev.azure.com/{源组织名}/{项目名}/_packaging/{feed名}/nuget/v3/index.json,别写错
    • 租户ID:服务主体所属的Entra ID租户ID
    • 服务主体ID:服务主体的应用ID
    • 客户端密码:服务主体的密钥(注意是客户端密码,不是其他密钥)
  4. 按需勾选「授予所有流水线访问此连接」,保存即可。

调整流水线任务配置

把原来用PAT的NuGetAuthenticate@0任务,换成新的服务连接:

- task: NuGetAuthenticate@0
  inputs:
    nuGetServiceConnections: 'myArtifactFeed-SP' # 替换成你刚建的服务连接名称
    forceReinstallCredentialProvider: true # 可选:强制刷新凭据,解决缓存导致的认证问题

常见踩坑点排查

  1. 权限没生效:去源组织的工件源权限页面,用服务主体的应用ID搜一下,确认「读取」权限已经加上,有时候添加权限后需要等几分钟才会生效
  2. 源URL格式错了:必须用v3的index.json地址,v2格式不支持服务主体认证
  3. 服务主体是外部租户的:如果服务主体不在源组织的Entra ID租户里,要确保源组织的Entra ID允许外部来宾访问,不然服务主体连组织都进不去
  4. 凭据提供器版本问题:NuGetAuthenticate@0任务尽量用最新版本,旧版本对服务主体认证的支持可能有bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:05:05