0

C#では、次のコードを使用して安全なLDAPサイトにバインドしています

authServer =
    new DirectoryEntry("LDAP://whatever.com:636",
          authServerUsernameFromConfig,
          authServerPasswordFromConfig,
          AuthenticationTypes.Anonymous );

次に、OKと判断されたユーザーを検索します。

次に、次のコレクションを調べて、「groupMembership」のプロパティ名を探します。

DirectorySearcher directorySearch = new DirectorySearcher(authServer, filterKey);
...
SearchResult result = directorySearch.FindOne();
...
authUser = new DirectoryEntry(result.Path, userDN, password, AuthenticationTypes.None);
...
(read) authUser.Properties.PropertyNames

ただし、636セキュアポートを使用している場合は何も見つかりません。他のプロパティが見つかりました。セキュアでないPORTにバインドすると、すべてのプロパティが636バインドのプロパティとgroupMembershipという名前のプロパティの両方で検出されます。

なぜこれが起こるのか、またはそれらを取得する方法を誰かが説明できますか?

LDP.exeユーティリティを使用すると、安全なポート636バインドでこれらのgroupMembershipプロパティを確認できるようです。

4

1 に答える 1

4
  • ディレクトリ情報ツリーにはプロパティがありません。ディレクトリ情報ベースには、エントリにグループ化された属性があります。属性は複数値の場合がありますが、プロパティは常に単一値です。
  • LDAP クライアントは接続に「バインド」しません。LDAP クライアントは、セキュア ポート (SSL を使用) または非セキュア ポート (クライアントが必要とし、サーバーが許可する場合は、セキュア接続に「昇格」できます) への接続を確立します。接続が確立されると、その接続には認証状態がありません。その後、LDAP クライアントは BIND 操作を使用して、サーバーが資格情報を確認し、接続の承認状態を変更するように要求できます。サーバーは接続の許可状態を使用して、その接続を使用しているクライアントがエントリおよびそれらのエントリを構成する属性へのアクセス権を持っているかどうかを判断します。
  • 最新のプロ品質の LDAP サーバーには、接続が安全な接続でない場合、特定の機密属性へのアクセスを拒否する機能があります。LDAP クライアントがアクセスしているサーバーにこの機能がない場合、セキュアな接続と非セキュアな接続を介してデータにアクセスすることに違いはありません。これらのレガシー サーバーは、アクセス権と特権を決定するために、セキュアな接続と非セキュアな接続を区別しません。アクセス権の決定には、接続の承認状態が使用されます)。

ldapsearchLDAP クライアントが必要に応じてデータにアクセスできることを確認するなど、既知の適切なツールを使用します。既知の正常な LDAP クライアントがデータにアクセスでき、手動でコーディングされた LDAP クライアントがアクセスできない場合は、検索要求の次のパラメーターを確認します。

  • ベース オブジェクトまたはベース DN。ここから探索が始まります。ベースオブジェクトより上位のエントリは返されません
  • 検索の範囲。BASEエントリとリクエストの属性のみを返し、ONEベース オブジェクトの直下にあるエントリをSUB返し、ベース オブジェクトとベース オブジェクトの下位にあるすべてのエントリを任意のレベルで返します。
  • フィルター。フィルターは検索を絞り込むために使用され、attributeType-attributeValue アサーションで構成され、さまざまな形式にすることができます
  • 他の検索パラメーターに一致するエントリからサーバーが返す要求された属性。すべてではありませんが、一部の API は、何も要求されない場合、すべてのユーザー属性を返します。

こちらもご覧ください

于 2012-10-13T11:12:09.480 に答える