[解決済み] LDAPの問題、ldap_bindのdn構文が無効である
2022-02-10 02:33:36
質問
私の間違いは本当に簡単なことだと分かっているのですが、問題を見つけようとしましたが、見当たりません。
LDAPに接続し、必要な情報を見つけることができるように、phpで関数を作成しようとしています。
私のPHPコードは以下の通りです。
$ldapconfig['host'] = "127.0.0.1";
$ldapconfig['port'] = NULL;
$ldapconfig['basedn'] = "dc=example,dc=com";
$ldapconfig['binddn'] = "user";
$ldapconfig['bindpw'] = "password";
function ldap_authenticate($user, $pass) {
global $ldapconfig;
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
if ($user != "" && $pass != "") {
$ds=ldap_connect($ldapconfig['host'],$ldapconfig['port']);
if(!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
return NULL;
}
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_bind( $ds, $ldapconfig['binddn'], $ldapconfig['bindpw']);
$r = ldap_search( $ds, $ldapconfig['basedn'], 'sAMAccountName=' . $user);
if ($r) {
$result = ldap_get_entries( $ds, $r);
if ($result[0]) {
if (ldap_bind( $ds, $result[0]['dn'], $pass) ) {
return $result[0]['mail'][0];
}
}
}
}
return NULL;
このコードを実行しようとすると、次のような間違いが発生します。 ldap_bind invalid DN syntax on line xxxx(ldap_bindは無効なDN構文です。 で、その行は次のようなものです。
ldap_bind( $ds, $ldapconfig['binddn'], $ldapconfig['bindpw']);
解決方法は?
エラーにあるように、バインドDNのフォーマットが間違っています。DNはオブジェクトへのフルパスを表しますので、あなたの場合は次のようになります。
cn=username,ou=domain users,dc=example,dc=com"
LDAPの種類(Active Directory、OpenLDAPなど)により、以下のようになります。 可能性があります。 しかし、常に完全なDNが必要であると考えたほうがよいでしょう。
のような LDAP ツールを使用することができます。 Apache Directory Studio を使用すると、クエリーを作成したり、オブジェクトのDNを見つけるのに役立ちます。また、以下のようなものもあります。 ldp.exe もありますが(ADであれば)、directory studioの方が使いやすいと思います。
関連
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】SQLSTATE[42000]: 構文エラーまたはアクセス違反が発生しました。1064 SQL 構文にエラーがあります - PHP - PDO [重複]。
-
[解決済み] php5パッケージのインストール候補がない (Ubuntu 16.04)
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】In_arrayが動作しない。
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】DateTimeクラスのオブジェクトを文字列に変換できない
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。