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

MavenCentral发布返回401未授权问题求助

问题与排查方案

问题详情

我已生成Sonatype Central的访问Token,执行官方提供的curl上传命令:

curl --request POST \
  --verbose \
  --header 'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  --form bundle=@central-bundle.zip \
  https://central.sonatype.com/api/v1/publisher/upload

其中xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx已替换为新生成的Token,但服务器返回401未授权。尝试用Gradle、Maven执行相同上传操作,结果仍为401。已确认:

  • 命名空间已创建,且与构件groupId完全匹配
  • 构件已完成签名
  • 注意到Gradle配置使用PUT请求,curl用POST,但两种请求方式均返回401

排查解决步骤

  • 检查Token权限
    生成Token时必须勾选Central Publisher相关权限(至少包含publisher操作权限)。如果Token仅配置了只读权限,必然会触发401。重新生成Token时,务必确认权限列表包含上传构件所需的权限。

  • 验证Token完整性
    确保复制的Token没有多余空格、换行或截断。建议把Token粘贴到纯文本编辑器中检查,避免复制过程中引入不可见字符。同时确认Authorization头格式正确:Bearer 与Token之间只有一个空格,没有其他多余字符。

  • 确认命名空间权限归属
    即使命名空间与groupId匹配,也要确认当前Token所属账号是该命名空间的拥有者或已被添加为授权发布者。如果命名空间由其他账号创建,当前账号未获得协作权限,会导致上传时权限不足。

  • 验证构件签名有效性
    本地用GPG命令验证签名是否有效,同时确认签名用的GPG密钥已在Sonatype平台完成验证:

    gpg --verify your-artifact.pom.asc your-artifact.pom
    

    若签名无效或密钥未验证,也可能触发401(部分场景下权限验证会关联签名状态)。

  • 核对API端点与请求方法
    确认使用的API端点与工具匹配:curl的POST端点用于批量上传bundle包,而Gradle/Maven通常使用单个构件的PUT端点。核对官方文档,确保请求方法和端点对应正确,避免因端点不匹配导致的权限验证失败。

  • 排查网络环境问题
    如果使用代理或防火墙,可能会修改/截断Authorization请求头,导致Token无法正确传递。尝试在无代理的网络环境下测试,或配置代理工具完整转发请求头信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:49:54