SVN與LDAP服務器整合驗證


說明:

svn的訪問是以svn://協議訪問的,一般都是用http協議訪問,所以要使用apache的httpd服務器
apache已經添加了對ldap服務器的支持,所以svn的認證過程是使用apache代理OpenLDAP來完成的
svn的權限控制還是要放在其svn服務上(authz文件)
 

2.安裝Subversion服務

yum -y install subversion 

3.安裝httpd對LDAP服務的支持

  yum -y install mod_dav_svn

4.配置subversion.conf 
找到apache服務器的安裝路徑,一般在/etc/httpd/下,在conf.d目錄下有一個subversion.conf文件(沒有的話請自行創建),打開它,先上我的配置:

<Location /opt/svn> 
DAV svn 
SVNParentPath /opt/svn 
SVNListParentPath on 
AuthzSVNAccessFile /opt/svn/authz

AuthName "Subversion repository" 
AuthType Basic 
AuthBasicProvider ldap 
AuthzLDAPAuthoritative on 
AuthLDAPURL "ldap://192.168.133.130:389/ ou=people,dc=example,dc=com?uid?sub?(objectclass=*)"  #根據設定組織自行修改
AuthLDAPBindDN "cn=manage,dc=example,dc=com" #根據設定用戶自行修改
AuthLDAPBindPassword "admin" #根據設定用戶密碼自行修改

Require ldap-user 
</Location>





AuthName:寫死就行
AuthType:驗證類型,Basic使用賬號密碼驗證
AuthBasicProvider:ldap寫死不解釋
AuthzLDAPAuthoritative:這個搭配最下面“Require ldap-user”使用,on表示只要求驗證ldap用戶,別的不認;off則可以使用svn的賬號和ldap混合賬號登陸
Require:ldap-user或者valid-user,你要是只用ldap賬號登陸的話就填寫第一個

 

  在解釋AuthLDAPURL|AuthLDAPBindDN|AuthLDAPBindPassword的時候要先講一下LDAP服務器認證過程,方便理解:
  
客戶端(httpd)使用提供的URL(AuthLDAPURL)進行驗證的時候,並不是直接驗證輸入的賬 號密碼,因為LDAP服務器在驗證的時候要使用DN(每個節點用戶的唯一標識)和密碼來進行登陸驗證的,但是DN一般來說比較長,諸如:“cn=xxx,ou=xxx,ou=xxx,dc=xxx,dc=xxx”,這種光輸入的時候就煩氣了,所以要想使用簡短的用戶名來登陸的時候,一般的做法是在某個節點用戶上添加一個屬性,比如mobile(手機號),Email(郵箱),user name或者uid(用戶名),然后使用這個屬性的值來登陸。

當用戶輸入這個屬性值和密碼的時候,客戶端(httpd服務器)先使用AuthLDAPBindDN和AuthLDAPBindPassword作為用戶名和密碼登陸,根據AuthLDAPURL指定的查詢規則(AuthLDAPURL的查詢規則一會再說)來查找用戶輸入的屬性的值有沒有,如果查找的條數為0或者大於1,則返回錯誤,如果查找的條數等於1,則使用查找到的這個條目的DN和用戶輸入的密碼進行登陸驗證,成功則成功,失敗則失敗,這就是OpenLDAP的驗證過程。



AuthLDAPBindDN|AuthLDAPBindPassword:就是用於查找用戶的賬號密碼了,一般設定一個用友只讀權限的賬號就行
AuthLDAPURL:
對應上面那個url:[協議名稱]://[ip地址或者域名]:[端口號]/[baseDN]?[attr]?[scope]?[filter]
baseDN:指定開始搜索節點的名稱
attr:就是用戶輸入的屬性鍵,默認是"uid",我使用的是uid,還可以使用cn,mobile,Email等。。。
scope:one,sub,base三者之一,默認sub
filter:過濾器,默認(objectclass=*)




配置完了之后重啟服務

5.現裝svn的小伙伴還需要配置一個庫,沒庫看啥效果,本來就有庫的就可以看效果了
1)創建svn版本庫目錄
隨便建地方,不過要跟上面配置文件中的SVNParentPath值一致:

mkdir /opt/svn
2)啟動svn服務

svnserve -d -r /opt/svn
3)創建一個svn版本庫,要去/opt/svn下執行啊

svnadmin create Test
4)授權,不然web會有errorlog

chown apache.apache -R /opt/svn
5)創建權限管理文件

vim /opt/svn/authz   
[groups]
admin=xxx
users=yyy,zzz

[/]
@admin = rw

[Test:/]
@users = r

這里的xxx,yyy,zzz是只用戶輸入的屬性的值(LDAP服務器中某個用於登陸的節點的屬性值),如果你沒配置這里的權限,用戶雖然登陸成功了,但是沒有相應的權限頁面會提示沒權限查看的,users后面跟多個以","分割的用戶名(你設置的查詢規則按什么查詢就是什么)



接下里可以在openldap中建立用戶 並連接svn了



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM