2012-08-28 30 views
2

我試圖通過MySQL設置每個存儲庫SVN身份驗證,但我遇到了一些問題。使用MySQL的SVN身份驗證

首先什麼是之間的區別mod_authn_dbdmod_auth_mysql

其次我已經有一個MySQL數據庫設置與用戶,組和權限的表。是否有可能使用這些mod中的任何一個來鏈接到我當前的權限系統中,通過用戶名,密碼和權限來訪問存儲庫(優選地,具有對每個存儲庫的讀取權限和寫入權限)

tbl_users:user_id,user_name ,user_hash

tbl_group:GROUP_ID,組名

tbl_permission:permission_id,PERMISSION_NAME

tbl_user_group:USER_ID,GROUP_ID

tbl_group_permission:GROUP_ID,permission_id

tbl_user_permission:USER_ID,permission_id

回答

3

首先的差異。

mod_authn_dbd提供認證前端,如mod_auth_digest和mod_auth_basic,通過在SQL表中查找用戶來認證用戶。

mod_auth_mysql是一個Apache模塊,它允許使用存儲在MySQL數據庫中的用戶和組數據進行身份驗證。該項目似乎自2005年以來沒有更新,所以我會去mod_authn_dbd

要正確設置,首先需要在你的apache配置中正確配置mod_authn_dbd和mod_dbd,mod_dbd負責處理你的數據庫連接。一旦你完成了這些工作(確保你的Apache在這些模塊處於活動狀態下運行),那麼你可以繼續配置它們。

添加像這樣到Apache的配置,以配置數據庫連接:

<IfModule mod_dbd.c> 
    DBDriver mysql 
    DBDParams "host=(your_db_server, p.e. 127.0.0.1) dbname=your_db_name user=your_db_user pass=your_db_pass" 
    DBDMin 1 
    DBDKeep 8 
    DBDMax 20 
    DBDExptime 200 
</IfModule> 

現在添加您需要的身份驗證配置到Apache的配置:

<Directory "/your/svn/repository/path/"> 
    Options FollowSymLinks Indexes MultiViews 
    AuthType Basic 
    AuthName "Allowed users Only" 
    AuthBasicProvider dbd 
    AuthDBDUserPWQuery "SELECT pwd FROM tbl_users, tbl_user_group WHERE tbl_users.user_id=%s AND tbl_user.user_id=tbl_user_group.user_id" 
    Require valid-user 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 

我已經簡化了選擇 - 聲明爲了更好的可讀性,您必須擴展它以使您的配置得到改進。

編輯:

打字,我發現在網上一個很好的例子之後,也許讀它here了。它比我的簡單答案更深刻。