透過http為多個使用者設定SVN伺服器

透過http為多個使用者設定SVN伺服器

SVN 註解功能非常強大,可以快速追蹤特定程式碼行上的特定功能。如果使用者透過 http 存取 SVN,則此功能會受到一些限制(但仍然有用)。由於沒有以這種方式交換憑證,因此註解不會顯示使用 http 提交更改的開發人員修改的行的名稱。

問題是,開發人員是否有辦法將某種憑證傳遞給伺服器上的 SVN 以唯一標識他們的提交?此環境中所需要的僅僅是 ID 的存在。 svn+ssh 和文件協定等替代方法不可用。最後,該伺服器位於內部 LAN 上,而不是公共的。也歡迎提供 https 提示。

SVN 伺服器在具有 Apache2 的 Linux 上運作。

答案1

在阿帕奇配置中:

<Location /svn>
    DAV svn
    SVNPath /mnt/big/svn
    AuthType Basic
    AuthName "SVN Server"
    AuthUserFile /etc/apache2/svn.pass
    Require valid-user
    AuthzSVNAccessFile /etc/apache2/svn_authz

/etc/apache2/svn_authz 可以包含誰可以存取什麼內容的細粒度管理:

[groups]
ops=user1,user2
it=user2,user3

[/]
* = rw

[/ops]
* =
@ops=rw

[/ro]
* = 
@ops = r
@it = r
user4 = rw

如果您手邊有 ldap / Active Directory 伺服器,您可以使用它來取代 AuthUserFile 進行 apache 驗證。

答案2

由於您透過 Apache 運行 SVN,因此您可以利用 Apache 的內建驗證方法來控制對儲存庫的存取/追蹤變更。下面的範例將使用 htaccess 樣式設定:

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /path/to/user/list
Require valid-user

您可以在 htaccess 檔案或 VirtualHost 設定檔中進行設定。

答案3

簡短回答:mod_authz_svn

您可以了解一些關於 apache + svn + mod_autz_svn 的信息,以及我向國際 PHP 會議 '09 提交的幻燈片中的更多內容,請訪問:http://superalbert.it/download/misc/PHPCon09_SVN_advanced.pdf

答案4

此答案假設您的開發人員使用 Windows 並且您有一個 Active Directory 網域控制站。

您可以按照以下步驟將Linux svn伺服器加入網域文章

從那裡,您將 apache 設定為使用 Kerberos 向 AD 進行身份驗證。首次安裝mod_auth_kerb,然後將apache2連接到kerberos進行身份驗證。參見微軟的文件。如果您完全擔心客戶端和伺服器之間的安全性,請確保實施 SSL。

完成後,用戶可以使用其 Windows 密碼登錄,並且活動將分配給他們的用戶。

不幸的是,我現在無法為您提供具體的配置詳細信息,因為我不在辦公室並且無法訪問我們的 svn 伺服器。

相關內容