Apache httpd LDAP集成

我正在configuration一个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组中的人员开发

 <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 ,但现在没有人可以login。我有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 

是的,我在这个组里。 (或者,至less我怎么确认,只是为了确保这不是问题,我有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中的默认值,但它只能帮助明确地设置它们。

我真的没有其他的想法,你的configuration看起来是正确的。 我只是想知道为什么你原来的configuration没有Require指令。 但是你说它正在工作,所以它可能默认为Require valid-user

编辑2:因为我们正在运行一个非常类似的设置(但不是与AD),我查看了我们的configuration,发现不能使用Require ldap-group和Subversion的授权function。 这是在这里logging: https : //ctf.open.collab.net/sf/go/artf4917 。 在我们的情况下,这是一个非问题,因为我们使用AuthzSVNAccessFile进行授权。 Require ldap-group似乎只是performance得像Require valid-user

这并没有真正向我解释为什么你会得到一个“错误的searchfilter”消息,但是为了只允许你的开发组的成员访问/svn位置,你应该使用组filter来扩展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

无论如何,我正在把这个交给达夫 ,因为他的联系把我引向了真正的问题。 我无法像daff所build议的那样使过滤工作,但是我确实发现了这个问题。

导致我find解决scheme的陈述是:

由于我们运行的是非常类似的设置(但不是AD),我查看了我们的configuration,发现不能使用Require ldap-group和Subversion的授权function。

几个达夫build议评论这一点,并提供没有解决办法,除了使用过滤,我似乎无法工作。

然后我决定查看Collabnet提供的http.conf 。 这就是我所看到的:

 #LoadModule python_module opt/CollabNet_Subversion/modules/mod_python.so LoadModule dav_svn_module opt/CollabNet_Subversion/modules/mod_dav_svn.so LoadModule authz_svn_module opt/CollabNet_Subversion/modules/mod_authz_svn.so #LoadModule dontdothat_module opt/CollabNet_Subversion/modules/mod_dontdothat.so 

啊! 他们正在加载authz_svn_module ! 我只是禁用它:

 #LoadModule python_module opt/CollabNet_Subversion/modules/mod_python.so LoadModule dav_svn_module opt/CollabNet_Subversion/modules/mod_dav_svn.so #LoadModule authz_svn_module opt/CollabNet_Subversion/modules/mod_authz_svn.so #LoadModule dontdothat_module opt/CollabNet_Subversion/modules/mod_dontdothat.so 

然后回到我的___original____configuration在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" Require ldap-group CN=Development, OU=Security Groups, OU=VegiBanc, dc=vegibanc, dc=com </Location> 

而且,它现在像一个魅力工作!

谢谢你的帮助。 我认为我的问题与filter是我需要Require valid-user ,我没有把它,但现在可以工作。