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

使用Trusted Publishing时Poetry无法发布包到Jfrog PyPi制品库

解决Jfrog PyPi仓库发布时Wrong username was used 401错误

问题核心

你遇到的问题本质是Jfrog PyPi仓库的认证逻辑和标准PyPI的token规范不兼容:通过OIDC获取的Access Token是和特定用户绑定的,但Poetry的pypi-token认证方式默认不会携带用户名信息,导致Jfrog服务器无法识别token对应的权限用户,从而抛出用户名错误的401提示。

可行解决方案

1. 适配Jfrog逻辑调整pypi-token配置

虽然pypi-token设计为仅用token,但针对Jfrog的场景,可以在配置中补充关联用户名,让服务器能匹配到对应的权限:

[tools.poetry.repositories.example]
url = "https://your-jfrog-instance.com/api/pypi/your-pypi-repo"

[tools.poetry.auth]
pypi-token.example = { username = "your-oidc-linked-user", token = "your-access-token" }

2. 检查Jfrog仓库的认证规则

登录Jfrog控制台进入目标PyPi仓库设置:

  • 确认Trusted Publishing的OIDC集成已正确绑定有权限推送的用户;
  • 查看仓库的Authentication配置,是否开启了强制要求用户名关联token的选项,若开启则必须在认证时携带用户名。

3. 排查Poetry的认证请求细节

执行poetry publish -vvv查看详细日志,确认请求头的认证格式:

  • 如果Poetry发送的是Authorization: Bearer <token>,而Jfrog期望的是Authorization: Basic <base64(username:token)>,说明pypi-token方式无法适配,可改用环境变量注入http-basic的认证信息,避免硬编码:
    export POETRY_HTTP_BASIC_EXAMPLE_USERNAME="your-oidc-linked-user"
    export POETRY_HTTP_BASIC_EXAMPLE_PASSWORD="your-access-token"
    poetry publish --repository example
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:33:08