0

Active Directory サーバーと、Kerberos を使用して Active Directory に対して認証できる必要がある PHP Web アプリケーションをホストする Windows WAMP サーバーがあります。

サンプルの PHP コードを使用して、Active Directory ホストに簡単に接続してバインドすることができましたが、Kerberos でそれを行う方法がわかりません。*NIX マシンでこれを行う方法を詳しく説明している多くのフォーラムやブログを見てきましたが、それは私の状況では役に立ちません。

Wireshark とFiddlerを使用して、Kerberos または NTLM のネゴシエーションが発生していないことを確認しました。

LDAP に接続してバインドするために使用したサンプル コード:

<?php   
   $ldaphost = "example.domain.com";
   $ldapport = 389;
   $ldapuser = "user";
   $ldappass = "password";

    $ldapconn = ldap_connect( $ldaphost, $ldapport )
    or die( "Unable to connect to the LDAP server {$ldaphost}" );

    if ($ldapconn)
    {
        $ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappass);

        if ($ldapbind)
        {
            echo "LDAP connection successful";
        }
        else
        {
            echo "LDAP connction failed";
        }
    }
?>

どんな助けでも大歓迎です、ありがとう!

更新:私はこれに一日中取り組んできましたが、おそらく GSSAPI をメカニズムとして使用して、ldap_sasl_bind() を使用する必要があると思います... ldap_sasl_bind() にどのパラメーターを入力しても、次のエラーが発生します: 'サーバーにバインドできません: 不明な認証方法'

GSSAPI の実装方法がわかりませんが、ldap_start_tls() を使用した例をいくつか見ましたが、「TLS を開始できません: サーバーを利用できません」というエラーが表示され続けます。

ldap_sasl_bind() (PHP では文書化されていません) または ldap_start_tls について誰かが知っているかどうかはわかりませんが、これが私の進むべき道である場合は、正しい方向に向けてください。

4

3 に答える 3

1

Kerberos の問題については、まだ自分で苦労しているため、まだ解決できません。ただし、TLS の正しい方向性を示すことはできます。TLS は少なくとも、資格情報がネットワーク経由でクリア テキストで送信されるのを防ぎます。TLS には、OpenLDAP の適切な構成が必要です。少なくとも、サーバー証明書を要求または確認しないようにクライアントを構成できます。これを行うには、次の行を ldap.conf 構成ファイルの先頭に追加します。

TLS_REQCERT never

ldap.conf ファイルは、PHP および OpenLDAP のバージョンに応じて、C:\またはC:\openldap\sysconfに配置する必要があります。このファイルは、セットアップにまだ存在していない可能性があります。環境変数を介して構成を設定することもできますputenv(TLS_REQCERT=never);が、私自身は試していないため、他の人から報告された結果がまちまちのようです。

于 2013-06-06T17:32:46.240 に答える