私は私のphpスクリプトで次の問題を抱えています:
PHP警告:ldap_bind():サーバーにバインドできません:...でLDAPサーバーに接続できません。
ldap_connect()
は「成功」と言いますが、ldap_bind()
は失敗します。その問題を修正するにはどうすればよいですか?
接続するとセッションが開きます。バインドは、実際にユーザーを認証するものです。したがって、接続しましたが、有効な資格情報でログインしませんでした。
HTTPDが使用できるポートをSELinuxが制限しているため、RHEL7(CentOS7)でこのエラーが発生しました。
LDAPポート389および636は、デフォルトの許可リストにありません。次の方法でブロックを解除できます。
setsebool -P httpd_can_network_connect 1
LDAPサーバーへのソケットを試すことで、制限をテストできます。
fsockopen('LDAP-Server-IP', 389);
資格情報の問題ではなく、ブロックされていることを示す「許可が拒否されました」が表示されます。
また、SELinux監査ログファイルで他のものがブロックされていないか確認してください。
問題は環境(Linux、Windows ...)によって異なる場合があります。次のいずれかのオプションでバインドしてみてください。
$connect = ldap_connect("ldap://".$ldap_server);
$auth_user = 'CN=XXX,OU=XXX,DC=XXX,DC=com';
$bind = ldap_bind($connect, $auth_user , $auth_pass);
または
$bind = ldap_bind($connect, 'YourDomaine\\'.$auth_user , $auth_pass);