我有两个Nexus实例2.0
和2.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始终返回此标题?
答案 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。现在,当使用桌面浏览器导航时,系统会提示您输入用户名和密码。