如何使用 Apache .htaccess 阻止 LDAP 组成员访问文件夹

如何使用 Apache .htaccess 阻止 LDAP 组成员访问文件夹

我在 Ubuntu 10.04 上使用 Apache 2.2.14,尝试使用 LDAP 身份验证保护文件夹。我们的 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=Users,ou=Directory,o=IC 中的所有人都能访问我的文件夹,除了 ou=Outsiders,ou=Users,ou=Directory,o=IC 中的人。

我可以使用以下设置通过我的 LDAP 登录信息进入我的文件夹,但它不会阻止外部人员组中的用户:

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

我试过了:

  • 需要有效用户
  • 各种 AuthLDAPURL
  • 仅对我想要的组要求 ldap-group。
  • 其他搜索需要 ldap-filter,例如其中不包含“cn=*”。

一切要么不让我进去,要么抛出 500 错误,要么让 ou=Outsiders、ou=Users、ou=Directory、o=IC 的成员进去。

那么,如何将 ou=Outsiders、ou=Users、ou=Directory、o=IC 的成员排除在我的文件夹之外?

答案1

假设我有 2 个具有以下结构的组:

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 部门或 HR 部门的所有用户:

$ 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_ldap按如下方式编辑配置文件:

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

相关内容