如何让LDAP组的成员不能使用Apache .htaccess访问文件夹

在Ubuntu 10.04上使用Apache 2.2.14,我试图用LDAPauthentication来保护一个文件夹。 我们的LDAP服务器正在运行Novell eDirectory。

我们所有的用户都在ou = Users的子组中,ou = Directory,o = IC。 喜欢这个:

  • OU =经理,OU =用户,OU =指南,O = IC
  • OU =雇员,OU =用户,OU =指南,O = IC
  • OU =杂项,OU =用户,OU =指南,O = IC
  • OU =局外人,OU =用户,OU =指南,O = IC

我想要所有的ou =用户,ou =目录,o = IC能够访问我的文件夹,除了那些在ou = Outsiders,ou =用户,ou =目录,o = IC。

我可以使用以下设置使用LDAPlogin信息进入我的文件夹,但不会阻止Outsiders组中的用户:

AuthName "Login Required: please enter your L-number and PIN" AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthLDAPURL ldaps://ldap.example.com/ou=Users,ou=Directory,o=IC?cn?sub?(objectclass=Person) Require ldap-filter (|(cn=*,ou=Managers,ou=Users,ou=Directory,o=IC)(cn=*,ou=Employees,ou=Users,ou=Directory,o=IC)(cn=*,ou=Misc,ou=Users,ou=Directory,o=IC)) AuthLDAPBindDN cn=binder,ou=Admin,ou=Directory,o=IC AuthLDAPBindPassword password 

我试过了:

  • 要求有效的用户
  • 各种AuthLDAPURLs
  • 只要我想要的组需要ldap组。
  • 其他searchRequire ldap-filter,就像没有“cn = *”一样。

一切都不让我进来,抛出500错误,或者让ou =局外人,ou =用户,ou =目录,o = IC里的成员。

那么,如何保留ou =局外人,ou =用户,ou =目录,o =我的文件夹中的IC?

假设我有两组以下结构:

 dn: ou=IT,dc=domain,dc=com ou: IT objectClass: top objectClass: organizationalUnit dn: cn=bob,ou=IT,dc=domain,dc=com cn: bob sn: Bob objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top userPassword:: xx ... dn: ou=HR,dc=domain,dc=com ou: HR objectClass: top objectClass: organizationalUnit dn: cn=alice,ou=HR,dc=domain,dc=com cn: alice objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson userPassword:: xx ... 

您可以通过执行以下命令在IT部门或人力资源部门列出所有用户:

 $ ldapsearch -W -x -D "cn=binder,dc=domain,dc=com" \ '(&(|(ou:dn:=IT)(ou:dn:=HR))(cn=*))' 

所以,你应该先从命令行使用ldapsearch

 $ ldapsearch -W -x -D "cn=binder,ou=Users,ou=Directory,o=IC" \ '(&(|(ou:dn:=Managers)(ou:dn:=Employees)(ou:dn:=Misc))(cn=*))' 

如果工作的话,编辑mod_authz_ldapconfiguration文件如下:

 Require ldap-filter &(|(ou:dn:=Managers)(ou:dn:=Employees)(ou:dn:=Misc))(cn=*)