带有基本身份验证的Nexus上的工件网址

时间:2015-12-15 15:56:11

标签: basic-authentication nexus

我有两个Nexus实例2.02.11.4-01。在旧版本上,当浏览到URL(使用桌面浏览器)时:

https://nexus.example.com/content/repositories/company-releases/com/company/projectname/projectname-web/1.6.1-RC2/projectname-web-1.6.1-RC2.war

提示输入Basic-Auth的用户名和密码,这正是我想要的。我试图在较新版本的Nexus上完成同样的操作,浏览器也没有提示输入用户名和密码。而是显示包含以下消息的页面:

  

拒绝访问   请在尝试进一步请求之前登录。

“登录”链接到Nexus UI上的身份验证页面。这在我的情况下是不好的,因为我正在向客户发送工件URL,并且他/他只需要提供用户名和密码并且下载工件。我现在无法指示所有人使用UI登录并导航到工件。

我的Nexus实例的较新版本是否配置错误?或者我可能在这些版本之间的某个区域发生了变化?

修改

我意识到CURL正在获得以下响应头:

WWW-Authenticate: BASIC realm="Sonatype Nexus Repository Manager"

桌面浏览器没有。我在Chrome浏览器中伪造了User-Agent,并提示输入用户名和密码。太好了!现在如何配置Nexus始终返回此标题?

2 个答案:

答案 0 :(得分:2)

我相信这是一段时间内的行为改变。如果您已禁用匿名访问,则在用户登录之前无法访问此URL。显然,您可以看到这是一个安全问题。

如果他们可以访问您的Nexus(您已经为他们提供了必要的凭据),并且他们无法浏览到此网址,那么您需要向他们授予UI: Base UI Privileges

<强>更新

根据您编辑的评论,您可能会遇到我们刚刚向Sonatype报告的问题。看看这两个链接:

当我写回复时,你打败了我,但是 - 你需要在nexus.properties中设置以下属性:

nexus.browserdetector.disable=true

这应该是一个临时的解决方法,与他们的UI行为的变化有关,但是其他一些人也抱怨,我猜它一直存在。

此外,请记住,Sonatype并不真的建议设置此项,因为它可能会破坏用户界面的行为并让您永久登录(如下所述):

“使用本文中的属性禁用浏览器检测的副作用可能包括:

  • 在同一用户的网络浏览器中创建多个会话

  • 同一网络浏览器用户的多次登录提示

  • 无法与Nexus分享内容和用户界面请求的相同http会话

  • 无法在真实的网络浏览器中注销并结束所有浏览器启动的会话。在某些环境中,这可能存在安全风险

基本上,您可能会在Nexus UI中引入会话漏洞,并在您的Nexus UI用户中造成混淆。“

答案 1 :(得分:1)

我必须将以下设置添加到nexus.properties:

nexus.browserdetector.disable=true

重启Nexus。现在,当使用桌面浏览器导航时,系统会提示您输入用户名和密码。