2

ユーザーが属するすべてのグループを取得するのに役立つ検索フィルターを作成したいと思います。

例: ユーザー A (グループ A の一部) のエントリを取得しているとします。また、グループ A はグループ B の一部であり、グループ D はグループ E の一部である可能性があります。

ここで、私の検索フィルターは、ユーザー A が属する可能性のあるすべてのグループとして MemberOf 属性を返す必要があります (この特定のケースでは、グループ A、B、D、E)。

検索フィルターがどのように見えるかについての指針はありますか?

4

3 に答える 3

3

これはあなたが求めていることをするはずです。ユーザーがmemberOfである各グループのFDNを返しますが、これはユーザーではなくグループにクエリを実行します。

例として、「CN = John Smith、DC = MyDomain、DC = NET」がメンバーであるすべてのグループを検索するには、ベースをグループコンテナDNに設定します。たとえば、(OU = groupsOU、DC = MyDomain、DC = NET)とサブツリーのスコープを指定し、次のフィルターを使用します。

(メンバー:1.2.840.113556.1.4.1941:=(CN = John Smith、DC = MyDomain、DC = NET))

-ジム

于 2012-09-07T09:27:48.353 に答える
1

user オブジェクトにはtokenGroupsという属性があります。これは、ランタイムで Active Directory によって計算された、構築された属性です。ユーザー オブジェクトが属するすべてのグループが含まれます。

ドメインにグローバル カタログがあること、および Pre-Windows 2000 Compatible Access グループを使用しているアカウントであることを確認してください。次に、tokenGroups返されるプロパティの 1 つとして が指定されていることを確認します。ユーザー オブジェクトに対してベース スコープ検索を実行します。

于 2012-09-12T05:12:26.450 に答える
1

adfind.exe (joeware) を使用してこの問題を解決し、ここで説明されている標準の LDAP フィルターを利用できます。例えば:

http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx

グループのネストは次のように指定されます。

(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com)

adfind を使用すると、次のようになります。

adfind -f "(member:1.2.840.113556.1.4.1941:=cn=Jim Smith,ou=West,dc=Domain,dc=com)" samaccountname -list

displayname やメール属性など、samaccountname 以外の出力が必要な場合は、リストに追加するだけです。また、複数のユーザーを検索する場合は、すべてのユーザーを含む inputfile と、たとえば adfind に各行を抽出するスクリプトが必要になる場合があります。

于 2013-12-13T14:24:41.967 に答える