4

ZF2 で開発した Web アプリケーションに LDAP 認証を実装しようとしています。LDAP 認証は、Windows 7 で正常に機能しています。

しかし、アプリケーションを LINUX マシンに移動した後、LDAP 認証が機能しません。私は常に次のようなエラーを受け取ります:警告: ldap_bind(): サーバーにバインドできません: 20 行目の LdapConnect.php の LDAP サーバーに接続できません

スクリプトを次のように使用しました。

$ldaphost = "ldap://xxxx.net";
$ldapport = 389;
$ds = ldap_connect($ldaphost, $ldapport) or die("Could not connect to $ldaphost");
if ($ds)
{
    $username = "username@xxxx.net";
    $upasswd  = "password";
    $ldapbind = ldap_bind($ds, $username, $upasswd);

    if ($ldapbind)
    {
       print "Congratulations! you are authenticated successfully.";
    }else{
      print "Better luck next time!";
    }
}

ソフトウェア パッケージをインストールする必要がありますか、それとも構成設定を行う必要がありますか?

注: IP アドレスを指定すると問題なく動作しますが、ドメイン名を指定すると機能しません。

4

1 に答える 1

2

ライブラリは、2つまたは異なるバージョン間で異なる場合があります。LDAP クライアントのバリエーションの多さに驚かれることでしょう。あなたの立場では、(可能であれば)LDAPクライアントを使用して、同じ種類の接続をいくつかの異なる方法で作成します。

たとえば、標準の ldapsearch の「-x」: -x SASL の代わりに簡易認証を使用します。

したがって、次のように接続を表現できます。

ldapsearch -h xxxx.net -p 389 (など) ldapsearch -x -h ldap://xxxx.net:389 (これは実際には -H.. である必要があります)

等々。コードの外側にあるものが問題になる可能性もあります。多くの場合、製品サーバーには、サーバー/クライアントに対して透過的なファイアウォールとプロキシ (F5 など) があります。最終的なコードに、バインディングと検索の例外処理があることを確認してください。私はphpの実装にあまり詳しくありません.docoは少し薄いです。通常は、同期バインドを使用します。

上記のコードが Windows で使用していたものとまったく同じであることを確認できますか? 私が尋ねる理由は、ここを見ているからです: http://php.net/manual/en/function.ldap-connect.php 2種類のバインドが混在しているようです。私は間違いなく、標準のpythonでそのようにしたことはありません。

したがって、通常 URI を使用する場合は、次のようにします。

ldap_connect("ldap://blah:389")

ホスト/ポートのコンボ経由で接続している場合:

ldap_connect("blah","389")

最小限の例外情報で、ポート「389」でホスト名「ldap://xxxx.net」に実際にバインドしようとしていることが最善の推測です。

于 2014-07-17T09:47:18.030 に答える