Apache 和 Active Directory 身份验证

Apache 和 Active Directory 身份验证

我在 Apache 2.2 中使用 LDAP 身份验证时遇到了问题。以下是 httpd.conf 的摘录

<Location /folder>
   AuthType Basic
   AuthName "Project"
   AuthBasicProvider ldap
   AuthLDAPBindDN "user@domain"
   AuthLDAPBindPassword "my_password"
   AuthLDAPURL "ldap://my_domain_controller/?samAccountName?sub?(objectClass=user)"
   Require valid-user
</Location>

我在 error.log 中不断收到“ldap_search_ext_s() for user failed”的信息。我尝试使用引用的 DN 作为 AuthLDAPBindDN,但结果相同。问题可能出在哪里?

答案1

当我遇到这个问题时,显然是因为 Active Directory 返回了引用,而 openldap 库无法应对。有两种不同的解决方案对我有用;我更喜欢第二种。第一种解决方案:在 /etc/openldap/ldap.conf 中输入以下行

REFERRALS no

当然,这假设您正在使用 openldap 库;我最近没有使用其他库的经验。

第二种解决方案:Active Directory 全局目录服务不生成引用,因此请将您的 ldap 指向其端口而不是正常端口(当然,您需要与全局目录服务器通信;要找到它们,请查看“dig -t srv _gc._tcp.domain”的输出,其中“domain”是您的域)。全局目录的端口为 3268,因此

AuthLDAPURL "ldap://my_domain_controller:3268/?samAccountName?sub?(objectClass=user)"

相关内容