2016-08-17 96 views
0

我正在設置一個Apache SVN系統,該系統將使用我們公司的Active Directory來控制對存儲庫的訪問。請注意,我不是IT人員,也不是在電視上播放。Apache SVN授權給Active Directory組

它給了我一個只讀帳戶,所以我可以查詢服務器。這似乎工作正常,我可以在命令行上使用ldapsearch以及Apache Directory Studio進行查詢。

在我們的活動目錄,我們有我們的用戶在類似

OU=Users,OU=DIVISION,DC=INTRANET,DC=CORP

與包含在sAMAccountName屬性(例如 - srogers)的用戶名。然後,我們有一組OU=Groups,OU=DIVISION,DC=INTRANET,DC=CORP下的組,並且每個組都有一些具有專有名稱的成員屬性。

集團 - CN=SoftwareEngineering,OU=Groups,OU=DIVISION,DC=INTRANET,DC=CORP

成員:CN=SteveRogers,OU=Users,OU=DIVISION,DC=INTRANET,DC=CORP

我試圖讓Apache的SVN授權的軟件工程組,但我不能使它發揮作用。這是我的配置文件。

<Location /svn> 
    DAV svn 
    SVNParentPath /var/www/svn 
    SVNListParentPath On 

    # Use LDAP auth against an active directory 
    AuthName "Enter your username and password" 
    AuthType Basic 
    AuthBasicProvider ldap 
    AuthLDAPBindDN "CN=readonlyuser,OU=Services,OU=DIVISION,DC=INTRANET,DC=CORP" 
    AuthLDAPBindPassword <password> 
    AuthLDAPGroupAttributeIsDN on 
# ----------------- Authorizes any user 
# AuthLDAPURL "ldap://divdc.intranet.corp:389/OU=DIVISION,DC=INTRANET,DC=CORP?sAMAccountName?sub?(ObjectClass=*)" 
# Require valid-user 


    AuthLDAPURL "ldap://divdc.intranet.corp:389/OU=DIVISION,DC=INTRANET,DC=CORP?sAMAccountName" 
    Require ldap-group CN=SoftwareEngineering,OU=Groups,OU=DIVISION,DC=INTRANET,DC=CORP 

</Location> 

我嘗試用LDAP搜索來模擬這一點,如果我切和conf文件粘貼URL,我得到這個...

# ldapsearch -x -D cn=readonlyuser,dc=INTRANET,dc=CORP -W -H ldap://divdc.intranet.corp:389/OU=DIVISION,DC=INTRANET,DC=CORP?sAMAccountName Could not parse LDAP URI(s)=ldap://dlsdc1.spa-elec.corp:389/OU=DLS,DC=SPA-ELEC,DC=CORP?sAMAccountName (3)

我也試圖與sAMAccountName=srogers和無sAMAccountName部分,結果相同。

關於什麼神奇的咒語,使這項工作的任何想法?我已經全部結束了,似乎無法獲得要求ldap-group的工作。

OS = Ubuntu的16.04

的Apache 2.4.18 =

+0

apache日誌說什麼? – Fairy

+0

[authz_core:error] [pid 5857:tid 140272191526656] [client 192.168.59.1:51651] AH01631:用戶srogers:授權失敗,爲「/ svn /」 –

+0

請參閱http://serverfault.com/questions/437434/apache- httpd-ldap-integration的想法和提示 –

回答

1

Require ldap-group不使用Subversion。懶獾的鏈接有詳細信息。

我通過刪除Require ldap-group,取消註釋Require valid-user行,並修復AuthLDAPURL以添加適當的LDAP過濾器來安裝。

配置現在看起來像這樣。

<Location /svn> 
    DAV svn 
    SVNParentPath /var/www/svn 
    SVNListParentPath On 

    # Use LDAP auth against an active directory 
    AuthName "Enter your username and password" 
    AuthType Basic 
    AuthBasicProvider ldap 
    AuthLDAPBindDN "CN=readonlyuser,OU=Services,OU=DIVISION,DC=INTRANET,DC=CORP" 
    AuthLDAPBindPassword <password> 
    AuthLDAPGroupAttributeIsDN on 
    AuthLDAPURL "ldap://divdc.intranet.corp:389/OU=DIVISION,DC=INTRANET,DC=CORP?sAMAccountName?sub?(&(ObjectClass=*)(memberOf=CN=SoftwareEngineering,OU=Groups,OU=DIVISION,DC=INTRANET,DC=CORP))" 
    Require valid-user 
</Location> 

此過濾器組中的用戶可以連接,而不在過濾器組中的用戶將被拒絕。

我會問在另一個問題中如何通過LDAP給某人一個只讀權限。

相關問題