无法从Maven部署到Artifactory:http错误代码403

时间:2018-06-22 22:53:51

标签: maven artifactory

我怀疑这很简单,但是我无法从Maven命令行或Eclipse将任何项目部署到远程Artifactory存储库。我可以使用Artifactory Web UI进行成功部署,但是当我在Maven settings.xml文件中指定相同的用户帐户('admin')时,它将失败,并显示“错误代码403,禁止访问”。我正在使用Artifactory的开源版本5.11.0。 “密码加密策略”设置为“必需”。

这是~/.m2/settings.xml文件中的服务器摘要:

<server>
  <id>dmrepo</id>
  <username>admin</username>
  <password>encrypted password obtained from the Artifactory UI</password>
</server>

这是项目pom.xml文件的部署部分:

<distributionManagement>
    <repository>
        <id>dmrepo</id>
        <name>myrepo-releases</name>
        <url>http://server:port/libs-release-local</url>
    </repository>
</distributionManagement>

如果我使用mvn参数重新运行-e,则堆栈跟踪中的最后一个错误是:

  

由以下原因引起:org.apache.maven.wagon.authorization.AuthorizationException:拒绝访问http://server:port/libs-release-local/path/to/jar/jarFile-version.jar,ReasonPhrase:禁止访问。

当我查看Artifactory和Tomcat日志文件时,在失败的部署尝试期间,我绝对看不到任何日志,这使我想知道请求是否甚至到达了该服务器,但是错误代码403是活动的“您可以“不这样做”响应来自 somewhere ,而不是一般性的“无法访问该URL”错误。另外,我可以使用同一台计算机上的浏览器来访问同一主机和端口,因此我认为这可能不是防火墙问题。

我已经审查了其他类似的问题,但似乎都没有解决这个特定情况。 JFrog用户指南建议检查存储库中的include&exclude过滤器,但是include设置为**/*,exclude为空白,这对我来说似乎是正确的。用户指南中的另一个建议是可能存在“权限”问题,但是它没有说明哪些权限或如何检查和更改权限。

更新
通过@Ariel请求的curl命令的输出(略述)进行了更新:

curl -i -vvv -u 'admin:<password>' -T <filename.jar> <hostname>:<port>/<repo_name>/<package>/<version>/<filename>
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Trying <IP_address>...
* TCP_NODELAY set 
* Connected to <hostname> (<IP_address>) port <port> (#0)
* Server auth using Basic with user 'admin'
> PUT /<repo_name>/<package>/<version>/<filename> HTTP/1.1
> Host: <hostname>:<port>
> Authorization: Basic <Base64_encoded admin:password>
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 14364
> Expect: 100-continue
> 
< HTTP/1.1 100 Continue
HTTP/1.1 100 Continue

} [14364 bytes data]
* We are completely uploaded and fine
< HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
< Content-Type: text/html;charset=utf-8
Content-Type: text/html;charset=utf-8
< Content-Language: en
Content-Language: en
< Content-Length: 983
Content-Length: 983
< Date: Wed, 27 Jun 2018 00:26:15 GMT
Date: Wed, 27 Jun 2018 00:26:15 GMT
< Connection: close
Connection: close

< 
{ [983 bytes data]
100 15347  100   983  100 14364   6380  93227 --:--:-- --:--:-- --:--:-- 93272
* Closing connection 0
<!doctype html><html lang="en"><head><title>HTTP Status 403 – Forbidden</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 403 – Forbidden</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The server understood the request but refuses to authorize it.</p><hr class="line" /><h3>Apache Tomcat/8.5.23</h3></body></html>

1 个答案:

答案 0 :(得分:1)

除了尝试使用HTTPS代替HTTP之外,还要仔细检查URL。通过CURL输出,看来您没有达到Artifactory。您的请求已在Tomcat级别停止,这通常意味着Artifactory的URL不正确。您可以尝试:http://server:port/ 人工工厂 / libs-release-local /看看是否可行吗?