4

LDAPを介してユーザーが認証およびログインするアプリケーションを作成しました。これは本当にうまく機能します。私はldap_bind()彼らの資格情報を使って行います。それが本当なら、彼らを認証します。そうでなければ、彼らにそれを投げるように言います。私は彼らのユーザー名をセッション変数に保持できるので、彼らが誰であるかを知ることができます。

現在、アプリケーションの一部では、ユーザーがLDAPを検索して他のユーザーを見つける必要があります。私はこれを使用jquery-autocompleteldap_search()て実装しましたが、これは非常にうまく機能します。ユーザーはユーザー名、名、または名前を入力するだけで、可能なすべての一致が提案されます。素晴らしい :)

$_SESSIONただし、企業のIT部門では、ネットワーク内のディレクトリを匿名で参照することさえ許可されていないため、現在、オートコンプリートスクリプトが呼び出されるたびに新しいバインドを実行できるように、ユーザー名とパスワードを保存しています。私はそれがかなり安全であり、ツールが内部にあるだけであることを知っていますが、これは私が実際にすべきではないことのように感じます。

私がやりたいのは、ログイン時にLDAPへのバインドを作成し、セッション全体でこの認証を何らかの方法で記憶することです。これにより、毎回再認証することなく、必要な数の検索を実行できます。サーバーにアクセスできないため、サーバーで何も変更できません。どういうわけか、成功したバインドを保存し$_SESSIONて再利用できますか?

これが比較的簡単ではない場合、これをどのように実装できるかについて他に何か提案はありますか?

4

2 に答える 2

1

リソースタイプ (ldap_connect() が返すもの) をシリアル化することはできません。

私たちが同様の機会に行ったことは、LDAP ツリー (および名前、姓、電子メールなどの特定の種類のデータ) に対する検索権限のみを持つ特定の LDAP アカウントを使用することです。このユーザーのアカウント資格情報はデータベースに保存されます。

おそらく、第 2 レベルのセキュリティを適用するために、このユーザーが特定の IP からのみ接続できるようにすることができます (LDAP サーバーはこれをサポートしていると思いますが、100% 確実ではありません)。したがって、資格情報が侵害されたとしても、それらは実質的に役に立たない

于 2012-08-07T14:31:54.560 に答える
0
  • LDAP準拠サーバーへの最初の接続は匿名です
  • BIND 要求が成功すると、接続の認証状態が変更されます
  • BIND 要求 (または長さ 0 の DN とパスワードを指定した BIND 要求) が失敗すると、認証状態が匿名にリセットされます。

したがって、接続が認証されると、BIND 要求が正常に処理されるまで、接続はその認証状態を保持します。これは、サーバーまたはクライアントによって接続が閉じられるまで、接続を開いたままにして操作を送信できることを意味します。

LDAP 準拠のサーバーには、クライアント要求への応答ではない非請求通知を送信するオプションがあることに注意してください。最新のプロ品質のサーバーは、このメカニズムを使用して、何らかの理由で接続がサーバーによって閉じられていることをクライアントに通知します。

要するに、接続をそのままにして使い続けます。さらに良いのは、サーバーへの接続の認証プールを確立することです。

アップデート:

LDAP 準拠のサーバーへの接続は、開いたままにしておくことができ、クライアントが望む (およびサーバーが許可する) 数のトランザクション (要求と応答のペア) に使用できます。LDAP は、接続ごとに複数のトランザクションを許可し、非同期接続も許可します。

于 2012-08-07T14:31:42.270 に答える