0

我愿意创建一个私有的Maven仓库,其访问规则不是基于组/模式,而是完全自定义的规则。我已经检查了nexus和jfrog,他们都保持简单的用户/组/模式方法。和(AFAICS)虽然提供了自定义的身份验证方式,但它们不提供自定义访问规则。Maven认证如何工作?

因此,我开始思考相反的情况:如果我可以用我的自定义规则创建一个简单的存储库,该怎么办?但是当我在Apache文档中搜索时,没有清楚地解释如何在背面执行身份验证。

有没有人知道这是如何完成的,也许指向正确的文档?

+0

如果需要,您当然可以访问存储库特定区域的访问规则,但通常这不是必需的。如果你真的需要有限的访问权限,例如在Nexus中创建一个单独的存储库...... BTW:在“自定义访问规则......”下你明白了什么......? – khmarbaise

+0

这就是问题所在,工件的分布非常复杂,以至于无法创建自定义规则或更糟糕的自定义存储库。实际上,每个用户都应该拥有自己的存储库,这些存储库可能随时发生变化。 – Panayotis

+0

每个用户的存储库都没有意义,因为这些工件被它们的坐标分隔。通过使用坐标来分离工件,究竟是什么问题?为什么你需要在用户基础上这样的事情?什么是分配文物太复杂了?去哪里 ? Maven Central到您自己的本地存储库? – khmarbaise

回答

1

身份验证是通过基本连接用户名和密码的基本身份验证完成的,base64对其进行编码。所以Maven和Apache相互理解。

但开箱即用的Apache授权基于,你猜对了。目录(代表Maven的工件组),用户名和组。所以除非你愿意编写一个定制的Apache模型,否则你不会获得很多。基于IP的访问控制可能比使用Nexus/JFrog更好地利用Apache来完成,但我没有查看年龄的身份验证设置。

+0

我在谈论授权服务端。你是什​​么意思与Apache模型? (是的,我愿意编写一些代码当然) – Panayotis

+0

我以为你想上传你的资料库到Apache服务器,然后将其作为静态内容提供。这肯定会起作用,但认证将不如Nexus/JFrog灵活。 – fhossfel

+0

你的意思是Apache web服务器?也许是的,这就是它最终会有一些自定义的PHP脚本。现在JFrog/Nexus不是真正的解决方案。当你说他们支持更多的认证机制时,我更担心maven“客户端”本身提供给服务器的是什么。它实际上只是基本的HTTP/HTTPS身份验证,仅此而已? – Panayotis

0

在Artifactory中,为了实现您提到的内容,您可以执行的操作是为每个用户创建权限目标。这意味着所有的Maven用户都会部署到同一个存储库,但每个用户都有不同的名称空间。例如,'com/{company}/{project} /'(请将公司和项目替换为实际值)

这是在使用'包含模式'的权限目标上完成的,假设我的公司名称是JFrog,我正在研究一个名为'artifactory'的项目,我将拥有一个包含模式'/ com/jfrog/artifactory/**/*'的权限目标。

您还可以使用脚本创建这些权限目标,该脚本将使用this REST API为您自动执行。

这意味着我只能够到达这个名称空间。 这有帮助吗?

+0

我更想知道它是如何工作的,也就是maven的真正作用 - 而不是如何通过更高层次的现成工具抽象来处理它。 – Panayotis

+0

默认情况下,Maven将尝试匿名解析工件,除非另有规定。现在,如果存储库到达需要身份验证,它将收到一个质询,并将通过'settings.xml'文件提供用户名和密码进行响应。您还可以让Maven通过配置来预先进行身份验证,从而提供来自第一个请求的详细信息。 – Ariel