无覆盖权限时使用jfrog gradle插件可覆盖release artifact问题问询
你遇到的情况属于遗漏了插件配置项,符合设计逻辑,和两个插件的默认实现差异有关,具体原因和解决方法如下:
原因说明
- Artifactory对Release版本制品的覆盖校验,除了基础的部署权限之外,还会校验请求头的
X-Artifactory-Override参数,以及账号是否拥有Annotate权限 maven-publish插件默认不会发送上述覆盖专用的请求头,所以重复发布正式版本时会触发预期的403错误- 4.24.20版本的
com.jfrog.artifactory插件默认会携带X-Artifactory-Override: true的请求头,你当前账号恰好拥有Annotate权限,两者叠加就可以绕过普通的覆盖禁止规则,直接覆盖已存在的正式版本制品。
解决方法
如果要禁止正式版本被意外覆盖,可任选以下一种方案:
- 调整Gradle插件配置,明确关闭覆盖权限,添加配置如下:
artifactory { publish { defaults { override = false } } }
- 在Artifactory后台的对应Maven仓库配置中,开启「禁止部署覆盖」的全局强制开关,开启后无论请求头参数如何,所有正式版本的重复部署都会被拒绝
- 回收对应发布账号的
Annotate权限,该权限仅用于修改制品元数据,普通发布场景不需要该权限,回收后即使插件携带覆盖请求头也会被403拒绝。
内容的提问来源于stack exchange,提问作者Ankhell
相关产品推荐
相关产品推荐

