0

C# 4.0コードを使用して、すべての可能なプロパティ (識別名など) と値を LDAP サーバーから取得する方法を教えてください。エンド ユーザーはアプリケーションに LDAP サーバーの名前を入力するだけです。LDAP サーバーは、このページパブリック LDAP サーバーで利用できるように、プライベート サーバーまたはオープン LDAP サーバーにすることができます。 クラスを使用して LDAP サーバーに接続し、クラスを使用して値を取得しています。


System.DirectoryServices.Protocols.LdapConnectionSystem.DirectoryServices.Protocols.SearchRequest

ここに私の問題があります:

このSystem.DirectoryServices.Protocols.SearchRequestクラスでは、ユーザーやグループなどを取得するためのパラメーターとしてサーバーの識別名が必要です。
エンド ユーザーはサーバー名を入力するだけです。
C# コードを使用して、サーバーから識別名を取得する必要があります。問題の C# ソリューションを見つけることができません (Google で検索しても)。
私は、私が望んでいたことを実際に行うアプリケーションをオンラインで見つけました。LDAP サーバー名を指定するだけで、そのサーバーから値 (識別名、ポート番号など) を取得しました。

C# .NET 4.0 を使用して値を取得するための解決策を教えてください。

有料のサードパーティ製ソフトウェアや dll は使用できません。

4

1 に答える 1

0

LDAP はプロパティを使用せず、属性を持ちます。サーバーから属性を取得するには、LDAP クライアントがサーバーに接続し、BIND 要求を使用して接続を認証し、検索要求をサーバーに送信してサーバーの応答を解釈する必要があります。検索リクエストは、少なくとも次のもので構成されます。

  • ベース オブジェクト
  • 検索範囲
  • 検索フィルター
  • 取得する属性のリスト

適切にコーディングされた LDAP クライアントには、上記の必須要素に加えて、サイズ制限と時間制限が含まれます。

サーバーからの検索結果には、整数の結果コードと、検索要求パラメーターに一致した (検索フィルターによってフィルター処理された) オブジェクトのリストが含まれます。検索は成功する可能性がありますが、エントリが返されません。

ベース オブジェクトが不明な場合はnamingContexts、ルート DSE で属性の検索要求を送信します。ルート DSE は、"" のベース オブジェクトと 'base' の検索範囲を使用することによってのみ取得できます。フィルタは(&)またはである必要があります(objectClass=*)。ディレクトリ サーバーは、ネーミング コンテキストを含む特定の情報をルート DSE で公開しますが、その情報は他のすべての情報と同様にアクセス制御の対象となります。

こちらもご覧ください

于 2013-07-03T11:26:04.307 に答える