web-dev-qa-db-ja.com

PHP失敗)を使用したLDAPSへのバインド

親切なメンバーが回答した別の質問のおかげで、最終的にLDAPSSL接続を受け入れるようにサーバーをセットアップしました。

私たちの問題は、以下の単純なPHPスクリプトを使用してldapにバインドしようとすると、常に失敗することです。ldapsの代わりにldapを使用したバインドは、スクリプトを使用して問題なく機能するため、ldapが有効になっていることがわかりますキャッチャーは、LDP.exeを使用している間、安全な接続を使用してポート636でLDAPに正常に接続してバインドできることです。

失敗しているスクリプトは次のとおりです。

<?php
$ldap = ldap_connect("ldaps://localhost");
$username="user";
$password="pass";

if($bind = ldap_bind($ldap, $username,$password ))
echo "logged in";
else
    echo "fail";
    echo "<br/>done";
    ?>

また、ユーザー名を「user @domain」または「domain/user」として入力しようとしましたが、成功しませんでした。私は永遠にLDAP/Certの質問をしているようです。私たちの環境はServer2008です。

3
Sean

追随: http://greg.cathell.net/php_ldap_ssl.html

手順3、5〜7はWindowsで完了する必要があるようです。

0
Sean

PHP 7.xを使用しているときに、最後に別の解決策を見つけました。これが他の誰かに役立つことを願っています。

ここでredditユーザーgripejonesに感謝します: https://www.reddit.com/r/PHPhelp/comments/3tykpc/php_7_and_ldap/

PHP 7では、環境変数(LDAPCONF)が設定ファイルの場所に設定されている必要があります。以前は、構成ファイルをこのフォルダーC:\ openldap\sysconf\ldap.confまたはC:\ ldap.confのいずれかに置くことができました。

ここでステップ2に記載されているように、dllファイルをコピーする必要はありません: http://greg.cathell.net/php_ldap_ssl.html

LDAPサーバーへの参照がldaps:// servernameの形式であり、サーバー名が証明書のサーバー名と同じであることを確認してください(xyzzy.company.comの場合は、ldaps:/を使用する必要があります。 /xyzzy.company.com、donotldaps:// xyzzyを使用)。

非標準のSSLポートを使用していない限り、ポートを含める必要はありません。

2
Jet

[〜#〜] url [〜#〜] を変更して、SSLに使用されるポートを含めます(例:ldaps://localhost:636(636がLDAPサーバーが安全なクライアント接続を待機するポートであると想定)。

0
Terry Gardner