Apache LDAP 身份验证:我可以先绑定用户而不搜索 DN 吗?

Apache LDAP 身份验证:我可以先绑定用户而不搜索 DN 吗?

当针对 LDAP 服务器进行AuthType Basic身份验证时,Apache 首先绑定以搜索用户的 DN,然后绑定该 DN 以测试用户的密码。挑战在于,使用 AD,您通常无法执行匿名绑定。因此,您必须设置AuthLDAPBindDN

但是,我说,我已经知道 DN 了!我不需要绑定-搜索-绑定,我只需绑定为 即可cn=_username_,OU=Employees,DC=megacorp,DC=com

这似乎是不可能的,但我想我会问:我能否说服 Apache 通过简单地动态构建 DN 来跳过绑定和搜索要用于绑定的 DN,还是我必须与当地官僚机构沟通以获取一个特殊帐户,我可以使用该帐户绑定来搜索我想要验证的用户?

谢谢!

—丹尼

答案1

不幸的是,mod_auth_ldap 似乎坚持要构建和执行搜索,而不是仅仅尝试使用您提供的 DN 进行绑定。根据我的经验,这是大多数情况;大多数通过 ldap 访问 Active Directory 的应用程序(而不是使用本机 NT 用户 API)宁愿先搜索再绑定,而不是仅仅尝试绑定。

从好的方面来看(如果你可以这么称呼的话),只要你的 ldap 树中没有权限方面的任何混乱,没有任何权限的用户帐户就应该可以满足你的需求;Authenticated Users 中的成员身份应该足以完成你搜索用户需要做的所有事情。它甚至可以从域用户中剥离出来并分配到不同的主要组;这应该会稍微缓解当地的官僚作风。

答案2

实际上,Apache 2.3 中的选项似乎是 AuthLDAPInitialBindAsUser 和 AuthLDAPInitialBindPattern。

AuthLDAPCompareAsUser 和 AuthLDAPSearchAsUser 有点相关,但它们听起来只起作用初始绑定已经发生。

我实际上还没有尝试过(因为我没有在任何地方安装 apache 2.3,至少现在还没有)但我认为你需要的配置是这样的:

AuthLDAPInitialBindAsUser  on
AuthLDAPInitialBindPattern (.+) cn=$1,OU=Employees,DC=megacorp,DC=com

答案3

Apache 2.3.6 及更高版本支持AuthLDAPCompareAsUser,您可能正在寻找它。

http://httpd.apache.org/docs/2.3/mod/mod_authnz_ldap.html#authldapcompareasuser

该分支处于测试阶段,可能还不能轻易被您的操作系统访问。

相关内容