Linux LDAP 認証: Windos および Linux での PHP および LDAP ID 認証

WBOY
リリース: 2016-06-21 08:50:54
オリジナル
1918 人が閲覧しました

現在の上司から、企業イントラネット上の Web サービスに標準の認証方法を提供するように頼まれました。私が遭遇した主な問題の 1 つは、当社が主に UNIX と Windows という 2 つのプラットフォームを使用していたことでした。したがって、私の最初のアイデアはあまり成功しませんでした。すべての従業員が Windows の代わりに UNIX または Linux を使用する必要がありました。
現在の UNIX/Windows の問題を解決する最善の方法は、PHP の LDAP 機能を使用することだと思います。 LDAP サーバーでは既存のシステムを使用する必要があるため、主に巨大な Microsoft Exchange Server システムを意味します。 Exchange の使用に非常に満足しています。Exchange は信頼性が高く、LDAP 機能は使用と構成が非常に簡単です。ただし、本人確認の観点から見ると、このソリューションは最も安全ではないことに注意してください。より高いレベルのセキュリティ要件がある場合は、LDAP と SSL を使用することを強くお勧めします。
どこから学習を始めるべきか
すぐに始められるように、PHP LDAP 関数のリストとその関数の簡単な説明を示しました。次に、LDAP サーバーへの接続を確立し、ユーザーを認証する方法を説明します。コードを簡単にするために、PHP 接続の機能と LDAP サーバーにバインドする方法を示します。
完璧な組み合わせ: PHP と LADP
以下は、この例で使用する関数のリストです。関連情報がオンラインにあります。
ldap_connect - LDAP サービスへの接続に使用されます。
ldap_bind - 特定の LDAP ディレクトリにバインドするために使用されます。
ldap_error - LDAP サーバーからエラー情報を取得します。
ldap_search - 検索を開始するために使用されます。
ldap_get_entries - 検索結果から複数の結果を取得します。
ldap_close - LDAP 接続を閉じます。
次に、例 (コード リスト A) の最初の関数の使用方法を示し、関数の機能を適切に紹介します。
// LDAP 変数
$ldap['user'] = 'uname';
$ldap['pass'] = 'password';
$ldap[ 'host'] = 'ldap.example.com';
$ldap['port'] = 389;
$ldap['dn'] = 'cn'.$ldap['user'].' ,ou=部門,o=会社名';
$ldap['base'] = '';
// ldap に接続します
$ldap['conn'] = ldap_connect( $ldap[' host'], $ldap['port'] )
または die( “Could not connect to {$ldap['host']}” );
?>
は LDAP サーバーに 1 を返します接続 (リソースとも呼ばれます)。 ldap_connect 関数には、host と port という 2 つのパラメータがあります。最初のパラメータ: host は LDAP ホスト名で、2 番目のパラメータは LDAP が実行されるポートです。デフォルトでは、LDAP で使用されるポート番号は 389 です。 LDAP サーバーへの安全な接続が必要な場合は、次のように、ホスト パラメーターをアクセス可能な LDAP サーバーの URL に変更できます。
$ldap['conn'] = ldap_connect( "ldaps:// ldap.example.com” );
サーバー名の代わりに URL を指定するため、このメソッドでは port パラメーターを使用する必要はありません。留意すべき点の 1 つは、正確な名前が SSL 証明書に対応している必要があるということです。
// LDAP 変数
$ldap['user'] = 'uname';
$ldap['pass'] = 'password';
$ldap[ 'host'] = 'ldap.example.com';
$ldap['port'] = 389;
$ldap['dn'] = 'cn'.$ldap['user'].' ,ou=部門,o=会社名';
$ldap['base'] = '';
// ldap に接続します
$ldap['conn'] = ldap_connect( $ldap[' host'], $ldap['port'] )
or die( “{$ldap['host']}に接続できませんでした” );
// ldap
$ldap[' にバインドしますbind'] = ldap_bind( $ldap['conn'], $ldap['dn'], $ldap['pass'] );
?>
は、ユーザー名とパスワードを使用して、サーバ。適切なドメイン名 (DN) を作成し、ユーザーのパスワードを使用して LDAP に正当に接続しました。ドメイン名とパスワードを使用すると、LDAP サーバーを認証し、バインド接続を許可できるため、正常にバインドできます。 ldap_bind の戻り値はブール型です。戻り値に基づいて、ユーザーのログイン証明書が有効かどうかを判断できます。このプロセスが完了すると、ユーザーの ID が認証されたかどうかがわかります。
エラーが発生した場合はどうなりますか? ldap_error 関数を呼び出すことは、どのようなエラーが発生したかを判断する良い方法です。 ldap_error 関数は、LDAP サーバーで発生した最後のエラーに関する情報を含む文字列を返します。
In
// LDAP 変数
$ldap['user'] = 'uname';
$ldap['pass'] = 'password';
$ldap['host'] = 'ldap.example.com';
$ldap['port'] = 389;
$ldap['dn'] = 'cn'.$ldap['user '].',ou=Department,o=Company Name';
$ldap['base'] = '';
// ldap に接続します
$ldap['conn'] = ldap_connect( $ldap['host'], $ldap['port'] )
or die( “サーバー {$ldap['host']} に接続できませんでした);
// ldap へのバインディング
$ldap['bind'] = ldap_bind( $ldap['conn'], $ldap['dn'], $ldap['pass'] );
if( !$ldap['bind'] )
{
echo ldap_error( $ldap['conn'] );
exit;
}
?>
, I ldap_error LDAP サーバーにバインドされているユーザーの ID が確認されない場合にコードが終了するように、関数がスクリプトに追加されました。この関数は、LDAP サーバーに送信された最後のコマンドによって生成されたエラー メッセージを含む文字列を返します。指定されたユーザー名とパスワードでログインできなかった場合、エラー メッセージには、最後の例の
/ の無効なユーザー名とパスワードのペアが含まれます。 /LDAP 変数
$ldap['user '] = 'uname';
$ldap['pass'] = 'password';
$ldap['host'] = 'ldap.example.com '; この記事へのリンク http://www .cxybl.com/html/wlbc/Php/20121126/34395.html



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート