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