web-dev-qa-db-ja.com

Active DirectoryでApacheとauthnz_mod_ldapを使用して認証できない

Apache2からユーザーを認証するために、authnz_ldap_moduleを使用したActive Directory認証に問題があります。私のApacheバージョンは2.2.16-6+squeeze10です。

これが私が運悪く使用しようとしている構成です(正確には多くの組み合わせのうちの1つ):

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で既に約100回ブロックされますが、これまで一度も発生しませんでした。

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とバインドする方法がまったくわかりません。今のところ、manualは役に立ちませんでした。

Apache2の設定で何が問題になっていますか、またldapsearchとバインドするにはどうすればよいですか?

これらが必要な場合は、追加情報を提供します。

6
tymik

最も問題のあるケースはAuthLDAPBindDNで、 "[email protected]"の構文であり、 "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

申し訳ありませんが、答えを出すのに長い時間がかかりました。

8
tymik

バインドしているユーザーをldapsearchに通知する必要がありますasなので、ldapsearch --helpごとに、-Uスイッチを使用してユーザー名を指定します。

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