具备基本认证的Nexus上的工件URL。

问题描述 投票:1回答:3

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

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用户界面上的认证页面。在我的情况下,这是很糟糕的,因为我给客户发送了一个工件的URL,她只需要提供用户名和密码就可以下载工件。我现在无法指导所有客户使用UI登录并导航到工件。

是不是我的Nexus实例的新版本上有什么配置错误?或者我的这些版本之间可能在这方面发生了什么变化?

编辑

我发现CURL得到的响应头如下。

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

而桌面浏览器没有 我在Chrome浏览器中伪造了User-Agent,我被提示输入用户名和密码。很好! 现在如何配置Nexus总是返回这个头?

basic-authentication nexus
3个回答
2
投票

我相信这是前段时间的行为变化。如果你已经禁用了匿名访问,这个URL将无法到达,直到用户登录。很明显,你可以看到这是一个安全问题,反之亦然。

如果他们可以访问你的Nexus(你已经为他们提供了必要的凭证),而他们不能浏览到这个URL,那么你需要授予他们 UI: Base UI Privileges.

更新。

根据你编辑的评论,似乎你可能遇到了我们前段时间向Sonatype报告的一个问题。请看一下这两个链接。

你比我先想到,我正在写我的回答,但是是的 -- 你需要在你的应用程序中设置以下属性 nexus.properties:

nexus.browserdetector.disable=true

这本来是一个临时的变通方法,与他们的用户界面行为的变化有关,但也有一些其他人抱怨,我猜它坚持了下来。

另外,请记住,Sonatype并不建议设置这个,因为它可能会破坏用户界面的行为,并让你永远登录(如下文所引)。

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

  • 在一个浏览器中为同一个用户创建多个会话。

  • 同一浏览器用户的多个登录提示。

  • 无法为Nexus的内容和UI请求共享同一个http会话。

  • 无法在真正的网络浏览器中注销和结束所有浏览器发起的会话。这在某些环境中可能存在安全风险

基本上你很可能会在Nexus UI中引入会话漏洞,并在你的Nexus UI用户中造成混乱。"


1
投票

我不得不在nexus.properties中添加以下设置。

nexus.browserdetector.disable=true

然后重新启动Nexus 现在我在使用桌面浏览器导航时,会被提示输入用户名和密码。

© www.soinside.com 2019 - 2024. All rights reserved.