サーバーに対して認証されたバインドを実行する際に問題があります。問題はコードにはないようですが、サーバーの問題である可能性があります。
ちょうどあなたが知っているので;
このスクリプトを使用して匿名でバインドできます。
$ldapconn = ldap_connect("machinename.domain.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding anonymously
$ldapbind = ldap_bind($ldapconn);
if ($ldapbind) {
echo "LDAP bind anonymous successful...";
} else {
echo "LDAP bind anonymous failed...";
}
}
ただし、このスクリプトを使用して認証済みバインドを実行しようとすると、失敗します。
// Authenticated Bind
$ldaprdn = '[email protected]'; // ldap rdn or dn
$ldappass = 'password'; // associated password
// connect to ldap server
$ldapconn = ldap_connect("machinename.domain.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
// verify binding
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
どこがいけないの?
さて、多くの調査の結果、ldap_errno()
とldap_error()
を使用してエラー情報をオンにしたところ、「Strong(er)authentication required」というエラーが2つの解決策を見つけました。
グループポリシー設定の調整
署名要件なし(ドメインコントローラー:LDAPサーバー署名要件)
結果:バインドに成功し、ユーザー名またはパスワードを誤って入力すると、予想どおり「無効な資格情報」がスローされます。
LDAP over SSL(LDAPS)を有効にする