无法在 Active Directory 中使用 Apache 和 authnz_mod_ldap 进行身份验证

无法在 Active Directory 中使用 Apache 和 authnz_mod_ldap 进行身份验证

Apache2我在使用 进行身份验证时遇到问题,authnz_ldap_module以便对 中的用户进行身份验证Active Directory。我的 Apache 版本是2.2.16-6+squeeze10

这是我尝试使用但没有成功的配置(准确地说,是众多组合之一):

AuthzLDAPAuthoritative off
AuthBasicProvider ldap
AuthType Basic
AuthName "Active Directory"
AuthLDAPURL "ldap://server1.my.company.tld:3268 server2.my.company.tld:3268/dc=my,dc=company,dc=tld?sAMAccountName?sub"
AuthLDAPBindDN "uid=my_user,dc=my,dc=company,dc=tld"
AuthLDAPBindPassword "mypassword"
Require valid-user

我在 Apache 中获得以下条目error.log

[debug] mod_authnz_ldap.c(379): [client some_ip_here] [12391] auth_ldap authenticate: using URL ldap://server1.my.company.tld:3268 server2.my.company.tld:3268/dc=my,dc=company,dc=tld?sAMAccountName?sub
[info] [client some_ip_here] [12391] auth_ldap authenticate: user my_user authentication failed; URI / [LDAP: ldap_simple_bind_s() failed][Invalid credentials]
[error] [client some_ip_here] user my_user: authentication failure for "/": Password Mismatch

当然,我每次都输入正确的密码,我已经在 AD 中被阻止了大约一百次,到目前为止还没有发生过一次。

我无法验证是否可以连接到我的 AD 控制器,因为当我尝试时:

ldapsearch -h server1.my.company.tld -p 3268 -D "dc=my,dc=company,dc=tld"

我收到以下错误:

text: 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1

我完全不知道如何绑定,ldapsearch而且手册到目前为止也没有帮助我。

我的配置有什么错误Apache2 ?我该如何绑定ldapsearch

如果需要的话,我会提供更多信息。

答案1

最有问题的情况是 AuthLDAPBindDN,它的语法必须是“[电子邮件保护]“而不是语法“domain \ user”,也不是简单的“user”或“uid = my_user,dc = my,dc = company,dc = tld”。下面是对我来说有效的正确配置,我在这里提供它作为案例的解决方案。

            AuthzLDAPAuthoritative off
            AuthBasicProvider ldap
            AuthType Basic
            AuthName "Active Directory"
            AuthLDAPURL "ldap://server1.my.company.tld:3268 server2.my.company.tld:3268/DC=ad,DC=upos,DC=pl?sAMAccountName?sub?(objectClass=*)"
            AuthLDAPBindDN "[email protected]"
            AuthLDAPBindPassword "some_random_password"
            Require valid-user

我花了很长时间才给出答案,对此我感到很抱歉。

答案2

你必须告诉 ldapsearch 你正在绑定谁作为因此,根据 ldapsearch --help,使用 -U 开关并为其指定用户名...即

ldapsearch -h server1.my.company.tld -p 3268 -D "dc=my,dc=company,dc=tld" -U <username>

相关内容