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

能否在pip.conf中使用JWT替代PAT访问Azure DevOps私有PyPI源?

问题解答

语法可行性结论

你提供的将JWT直接放在extra-index-url的URL用户段的语法不可行。Azure DevOps的PyPI私有源不支持这种认证方式,服务端会拒绝该请求的身份验证。

可行的JWT认证方案

方案1:使用Azure Artifacts Keyring自动处理认证

这是最简便且官方推荐的方式,借助azure-artifacts-keyring包自动完成服务主体的JWT认证流程:

  • 安装依赖包:
    pip install azure-artifacts-keyring
    
  • 设置以下环境变量(对应你的服务主体信息):
    • AZURE_DEVOPS_ORGANIZATION:你的Azure DevOps组织名称
    • AZURE_DEVOPS_SERVICE_PRINCIPAL_CLIENT_ID:服务主体的Client ID
    • AZURE_DEVOPS_SERVICE_PRINCIPAL_CLIENT_SECRET:服务主体的Client Secret(或使用证书相关变量)
  • 修改pip.conf为不带认证信息的源地址:
    [global]
    extra-index-url=https://pkgs.dev.azure.com/<myfeed>/pypi/simple/
    

之后执行pip install时,keyring会自动获取JWT并通过Authorization: Bearer <JWT>头部完成认证,无需手动处理令牌。

方案2:自定义认证脚本(进阶)

如果无法使用keyring,可以编写简单脚本,通过requests库携带JWT头部下载包后再用pip安装,示例逻辑:

  1. 获取服务主体的JWT令牌
  2. 向PyPI源发送带Authorization: Bearer <JWT>头部的请求下载目标包
  3. 用pip install <本地包路径>完成安装

这种方式适合需要自定义认证流程的场景,但不如keyring方案便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:32:34