Apache-2.2

Apache httpd LDAP 集成

  • October 12, 2012

我正在配置 CollabNet Subversion 集成。我有以下collabnet_subversion.conf文件:

<Location /svn>
 DAV svn
 SVNParentPath /mnt/svn/new_repos
 SVNListParentPath on
 AuthName "VegiBanc Source Repository"
 AuthType basic
 AuthzLDAPAuthoritative off
 AuthBasicProvider ldap
 AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName" NONE
 AuthLDAPBindDN "CN=SVN-Admin,OU=Service Accounts,OU=VegiBanc Users,OU=vegibanc,DC=vegibanc,DC=com"
 AuthLDAPBindPassword "swordfish"
</Location>

這很好用。我們 Active Directory 中的任何使用者都可以訪問我們的 Subversion 儲存庫。

現在,我想將此限制為僅 Active Directory 組Development中的人員:

<Location /svn>
 DAV svn
 SVNParentPath /mnt/svn/new_repos
 SVNListParentPath on
 AuthName "VegiBanc Source Repository"
 AuthType basic
 AuthzLDAPAuthoritative off
 AuthBasicProvider ldap
 AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName" NONE
 AuthLDAPBindDN "CN=SVN-Admin,OU=Service Accounts,OU=VegiBanc Users,OU=VegiBanc,DC=vegibanc,DC=com"
 AuthLDAPBindPassword "swordfish"
 Require ldap-group CN=Development, OU=Security Groups, OU=VegiBanc, dc=vegibanc, dc=com
</Location>

我添加了Require ldap-group,但現在沒有人可以登錄。我已LogLevel設置為debug,但我得到的只是我的error_log(單行分解以便於閱讀):

[Thu Oct 11 13:09:28 2012] [info] [client 10.55.9.45] [6752] 
   vauth_ldap authenticate: user dweintraub authentication failed;
   URI /svn/ [ldap_search_ext_s() for user failed][Bad search filter]

而且,我在我的access_log

10.55.9.45 - - [11/Oct/2012:13:09:27 -0500] "GET /svn/ HTTP/1.1" 401 401
10.55.9.45 - dweintraub [11/Oct/2012:13:09:28 -0500] "GET /svn/ HTTP/1.1" 500 535

是的,我在那個組。(或者,至少我如何確認這只是為了確保這不是問題。我有 SysinternalsSuite ADExplorer。這是我獲取所有資訊的地方。)

您沒有正確指定組的 DN,您可以通過錯誤消息看到。它應該看起來像這樣:

Require ldap-group CN=Development,OU=Security Groups,OU=VegiBanc,dc=vegibanc,dc=com

編輯:由於這似乎不是問題,請確保您有

AuthLDAPGroupAttribute member uniquemember
AuthLDAPGroupAttributeIsDN on

設置,我認為這對您的 AD 環境是正確的。這些是預設值,mod_authnz_ldap但它只能幫助明確設置它們。

我真的沒有任何其他想法,您的配置看起來正確。我只是想知道為什麼您Require的原始配置中沒有指令。但是你說它正在工作,所以它可能預設為Require valid-user.

**編輯 2:**由於我們正在執行一個非常相似的設置(但不是使用 AD),我查看了我們的配置,發現不能Require ldap-group與 Subversion 的授權功能一起使用。這記錄在這裡:https ://ctf.open.collab.net/sf/go/artf4917 。在我們的例子中,這不是問題,因為我們AuthzSVNAccessFile用於授權。Require ldap-group似乎只是表現Require valid-user得像.

這並沒有真正向我解釋為什麼您會收到“錯誤的搜尋過濾器”消息,但為了只允許開發組的成員訪問該/svn位置,您應該使用組過濾器擴展AuthLDAPURL並刪除Require ldap-group指令。由於您使用的是 AD,因此您可以memberOf按照以下方式使用:

AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName?sub?(&(objectCategory=person)(memberOf=CN=Development,OU=Security Groups,OU=VegiBanc,dc=vegibanc,dc=com)) NONE

更多細節在這裡:

http://subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=417401

https://ctf.open.collab.net/sf/wiki/do/viewPage/projects.svnedge/wiki/FrequentlyAskedQuestions#section-FrequentlyAskedQuestions-HowCanIRestrictLogonToMembersOfAParticularGroup

引用自:https://serverfault.com/questions/437434