通过带有LDAP要求的httpd从Eclipse / M2E访问Nexus

时间:2016-03-20 19:22:08

标签: nexus m2eclipse httpd.conf

最近,我在https://mycorporateserver.corporation.com/nexus/的公司服务器上配置了一个Nexus存储库。

方式"它始终如一"是我们的应用程序"在服务器上并使用apache httpd来提供页面并使用ldap管理访问。

Nexus配置为匿名访问,https,localhost only(一切正常)。然后,我们使用Apache httpd使用proxypass和reverseproxypass向其他人提供Nexus页面/ URI(根据sonatype&s;文档中的说明)。

问题是httpd配置需要ldap。因此,如果我从Web浏览器点击给定的Nexus URI,浏览器会要求我的公司登录。我使用我的用户名和密码登录,并且可以作为匿名用户查看存储库。

我没有为ldap配置Nexus,Nexus为我提供了只读匿名访问以及从登录菜单以管理员身份登录的功能。

大。问题(这并不奇怪)是当Eclipse / M2E试图联系我得到的Nexus存储库时:

"无法转移神器' myartifact'从/到nexus(https://mycorporateserver.corporation.com/nexus/):握手警报。"

在我的settings.xml中,我包含了

<servers>
    <server>
       <id>tried many different versions of the server name including full URI</id>
       <username>username</username>
       <password>password</password>
    <server/>
<servers/>

但这似乎不起作用 - 我认为这是有道理的,因为我没有尝试登录Nexus,而是将我的凭据提供给ldap。(?)

在M2E / Eclipse中,有没有办法提供所需的LDAP信息?

最好是不让httpd管理访问权限,而是让Nexus配置处理所有LDAP?是否有更好/不同的方法来配置Nexus / httpd / LDAP / Eclipse来解决问题?

感谢所有指点和指导!

2 个答案:

答案 0 :(得分:1)

  

“无法将神器'myartifact'从/向nexus转移   (https://mycorporateserver.corporation.com/nexus/):握手警报。“

这是一个SSL握手问题,运行Eclipse的Java不认为Nexus上安装的证书有效。这几乎可以肯定是因为:

  1. 证书是自签名的。
  2. 证书已由a签署 私有证书签名机构,不在信任库中 运行Eclipse的Java。
  3. 解决方法是将Nexus上的证书安装到运行Nexus的java的信任库中。

    有关详细信息,请参阅此处:

    https://support.sonatype.com/hc/en-us/articles/213464948-How-to-trust-the-SSL-certificate-issued-by-the-HTTP-proxy-server-in-Nexus

答案 1 :(得分:0)

最终,正如我所理解的那样,在apache httpd配置中如何定义VirtualHost和ServerName是不匹配的。

https://mycorporateserver.corporation.com/nexus/是ServerName,但VirtualHost是使用ip和端口https://mycorporateserver.corporation.com:port定义的。

原始

<VirtualHost ip:port>
    ServerName mycorporateserver.corporation.com/nexus/
    ...ldap and proxy pass configs
</VirtualHost>

由于我们有多个包含此ip和端口组合的虚拟主机,因此服务器会进一步查看配置,以通过读取ServerName来查找正确的页面。由于没有ServerNames与客户端发送的内容匹配,因此发生了握手错误。 https://httpd.apache.org/docs/current/vhosts/name-based.html

更改httpd conf中的ServerName以包含端口解决了握手错误。

最终

<VirtualHost ip:port>
    ServerName mycorporateserver.corporation.com:port/nexus/
    ...ldap and proxy pass configs
</VirtualHost>

(我绝不是apache的httpd专家,仍然想知道是否有办法在不显示URL的情况下完成所有这些操作)

然后,当从Eclipse / M2E向服务器发送请求时,响应是&#34;未经授权&#34;

将nexus服务器加上用户名和密码添加到settings.xml解决了授权问题,一切运行良好!

<servers>
    <server>
        <id>nexus</id>
        <username>username</username>
        <password>password</password>
    <server>
</servers>

为确保密码不以纯文本格式存储,此Maven站点上的说明用于创建加密密码:https://maven.apache.org/guides/mini/guide-encryption.html

事后看来,这个问题可能会被提出更好/不同的问题,但我还不知道我今天学到了什么。