2012-02-13 236 views
3

我有一個SVN信息庫,配置爲通過Apache httpd使用基本身份驗證來限制對指定用戶的訪問。爲了支持在同一臺服務器上運行的持續集成服務器(以及其他只讀服務),我希望允許匿名讀取來自本地主機的訪問。允許來自本地主機的SVN匿名讀取訪問

去一些研究(即谷歌搜索)後,我想出了嘗試下面的Apache配置:

<Location /svn> 
    DAV svn 
    SVNParentPath /var/svn 

    AuthType Basic 
    AuthName "SVN" 
    AuthBasicProvider external 
    AuthExternal pwauth 

    #Only allow specified users to login to SVN 
    require user UID1 
    require user UID2 
    require user UID3 

    #Allow anonymous reads from localhost 
    <LimitExcept GET PROPFIND OPTIONS REPORT> 
     Order allow,deny 
     Allow from 127.0.0.1 
    </LimitExcept> 
</Location> 

當我嘗試做從本地服務器我仍然得到提示輸入密碼匿名結帳(以這種情況爲root用戶)。

任何想法或建議,以什麼我可能是做錯了或者我應該如何正確配置的東西允許這樣做?

我最初嘗試配置匿名讀取訪問是基於關於this頁面的信息。

+0

觀看你的Apache日誌,看看它認爲你來自哪個IP。如果啓用了IPv6,則可能需要添加'Allow from :: 1' – 2012-02-13 15:27:41

+0

ssl_access_log中的請求顯示它來自我指定的127.0.0.1:'127.0.0.1 - - [13/Feb/2012:10:3​​8 :40 -0500]「OPTIONS/svn/myRepo'。 – Michael 2012-02-13 15:40:42

回答

0

我從來沒有能夠找到一個解決方案,將允許匿名從本地主機只讀訪問,需要身份驗證讀取和從任何遠程系統編寫。

最終,我的應用程序需要進行身份驗證創建了一個用戶名/密碼。

這不是理想的解決方案...但它應該做工精細。

0

我覺得你Satisfy Any後,都會在你Location塊,它可以訪問的底部,如果AllowRequire指令匹配的任何(而不是默認的,這需要他們所有匹配)。

文檔是here

+0

這似乎不適用於我,它允許我匿名退房,但也可以匿名登記! – Michael 2012-02-13 21:44:21

0

我不認爲這會起作用 「要求用戶」指令對整個位置塊是有效的。

我首先想到的是把「需要用戶」的限位塊裏面,這是行不通的,因爲無論限位塊是活動從哪些IP您所請求的數據。

創建一個名爲svn-localhost的第二個目錄,第二次映射你的svn根目前只有限制塊。

+0

我也想到了。 :使用這種方法會破壞外部網絡,因爲它們都指向/ svn,這將需要身份驗證。 – Michael 2012-02-13 20:36:14

+0

嗯,好的,這個怎麼回事:分別監聽127.0.0.1和你的公共ip,然後爲公共ip定義2個虛擬主機和一個爲迴環之一...你的問題的難的部分是如何分離內部的請求從外部的 – 2012-02-13 23:17:29

+0

哦對不起,後1似乎爲你工作,沒關係 – 2012-02-13 23:18:41

1
Satisfy Any 
    require valid-user 

對我很好(可以檢出,無法提交)

編輯

我的塊工作,與相關和不相關的部分

<Location /svn/> 
    DAV svn 

    SVNListParentPath on 
    SVNParentPath "D:/Repositories/" 
    SVNIndexXSLT "/svnindex.xsl" 

    SVNPathAuthz short_circuit 

    SVNCacheTextDeltas off 
    SVNCacheFullTexts off 

    AuthName "VisualSVN Server" 
    AuthType Basic 
    AuthBasicProvider file 
    AuthUserFile "D:/Repositories/htpasswd" 
    AuthzSVNAccessFile "D:/Repositories/authz" 

    Satisfy Any 
    require valid-user 

    # Add Expires/Cache-Control header explictly 
    ExpiresActive on 
    ExpiresDefault access 
</Location> 

如果我跳過Satisfy Any ,我必須認證任何要求

+0

你實際上是否可以在沒有指定用戶ID的情況下匿名簽出? – Michael 2012-02-14 02:11:19

+0

@Michael - 在[我的本地SVN](http://mayorat.ursinecorner.ru:8088/)上,您可以嘗試從任何已發佈的回購中籤出提交 – 2012-02-14 07:29:07

+0

不幸的是,我無法嘗試從工作中的網址(由於網絡安全限制)。不過,我嘗試過,但我無法得到你所描述的爲自己工作。你是如何在配置文件中指定'require valid-user'部分來將異常限制爲只讀的? – Michael 2012-02-14 14:24:57

0

即使我無法解決匿名訪問問題。

但我沒有創建一個新的只讀用戶,而是通過使用基於文件的url來獲得與redmine的集成工作。所以,而不是引用http url(需要身份驗證),我使用file:///。這不需要認證。

相關問題