Basic authentication Nexus上具有基本身份验证的工件URL

Basic authentication Nexus上具有基本身份验证的工件URL,basic-authentication,nexus,Basic Authentication,Nexus,我有两个Nexus实例2.0和2.11.4-01。在旧版本上,当浏览到URL(使用桌面浏览器)时: 使用基本身份验证提示输入用户名和密码,这正是我想要的。我尝试在较新版本的Nexus上实现同样的功能,但浏览器不会提示输入用户名和密码。相反,将显示包含以下消息的页面: 拒绝访问 请在尝试进一步请求之前登录 “登录”链接到Nexus UI上的身份验证页面。在我的例子中,这是不好的,因为我正在向客户发送一个工件URL,客户只需要提供用户名和密码,工件就可以下载了。我现在无法指示所有人使用UI登录并导航

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

使用
基本身份验证提示输入用户名和密码,这正是我想要的。我尝试在较新版本的Nexus上实现同样的功能,但浏览器不会提示输入用户名和密码。相反,将显示包含以下消息的页面:

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

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

在我的Nexus实例的较新版本上是否有错误配置?或者在这两个版本之间,这方面有什么变化

编辑

我意识到CURL得到了以下响应头:

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

而桌面浏览器则不然。我在我的Chrome浏览器中伪造了用户代理,系统提示我输入用户名和密码。美好的现在,如何配置Nexus始终返回此标题?

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

如果他们有权访问您的Nexus(您已向他们提供了必要的凭据),并且他们无法浏览到此URL,则您需要授予他们
UI:Base UI特权

更新:

根据您编辑的评论,您可能遇到了我们不久前向Sonatype报告的问题。请查看以下两个链接:

  • 关联的JIRA()

在我写回复的时候,你抢先一步,但是是的--你需要在
nexus.properties
中设置以下属性:

nexus.browserdetector.disable=true
这本应该是一个临时的解决办法,与用户界面行为的改变有关,但也有一些人抱怨,我猜它仍然存在

另外,请记住,Sonatype并不真正建议设置此选项,因为它会破坏UI的行为并使您永远登录(如下所述):

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

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

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

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

  • 无法在真实的web浏览器中注销和结束所有由浏览器启动的会话。在某些环境中,这可能会带来安全风险


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

我不得不在Nexus.properties中添加以下设置:

nexus.browserdetector.disable=true

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

问题是,我不能用UI来打扰他们,只要让浏览器提示输入用户名和密码,并让他们下载一个工件,前提是他们尝试访问的存储库的凭据正确。这可能吗?您需要创建一个新角色,该角色具有为该存储库授予的
读取
查看
权限,然后将此角色分配给用户。但实际问题是关于身份验证方法,而不是授权。当我浏览到工件URL并在浏览器中返回该工件时,当为该存储库提供的凭据正确时,我希望提示输入用户名和密码。我只想从浏览器中提示输入用户名和密码,而不是将客户重定向到UI。无论您使用的是浏览器还是
curl
,解析和部署工件的身份验证方法始终是HTTP Basic。您的问题似乎是您已禁用了对此存储库的匿名访问,因此需要正确设置身份验证和授权。我意识到,Nexus的响应头因用户代理而异。我已经编辑了这个问题。你知道如何做到这一点吗?当我更新我的答案时,你打败了我I’很高兴听到你把它修好了。
nexus.browserdetector.disable=true