thamubber
09.05.2007, 22:46
Hallo zusammen,
Ich schreibe gerade eine Anwendung welches die Gruppenmitgliedschaft ("MemberOf") von bestimmten Usern im AD herausfinden muss.
Vorgehensweise:
DirectoryEntry vom User finden:
DirectorySearcher dirS = new DirectorySearcher();
1*) dirS.SearchRoot = new DirectoryEntry("LDAP://dc=domäne");
oder
2*) dirS.SearchRoot = new DirectoryEntry("GC://forest");
dirS.Filter = "(&(objectCategory=User) (samAccountName=" + username + "))";
result = dirS.FindOne();
..
entry = result.GetDirectoryEntry();
Mitgliedschaft holen:
IdentityReferenceCollection SidColl;
String[] tokgrp;
tokgrp = new String[] { "tokenGroups" };
entry.RefreshCache(tokgrp);
foreach (byte[] sidBytes in entry.Properties["tokenGroups"])
{
SidColl.Add(new SecurityIdentifier(sidBytes,0));
}
Nun zu meinem Problem:
Wenn ich die ganze Suche im Global Catalog (2*)durchführe bekomme ich bei User XY 8 Gruppenmitgliedschaften.
Wenn ich es aber mit einer LDAP Abfrage (1*) durchführe bekomme ich alle , in diesem Fall knapp 17, Gruppenmitgliedschaften.
Warum?
Im Prinzip müsste doch dasselbe Ergebnis zurückgelieftert werden oder?
Gruß
thamubber
Ich schreibe gerade eine Anwendung welches die Gruppenmitgliedschaft ("MemberOf") von bestimmten Usern im AD herausfinden muss.
Vorgehensweise:
DirectoryEntry vom User finden:
DirectorySearcher dirS = new DirectorySearcher();
1*) dirS.SearchRoot = new DirectoryEntry("LDAP://dc=domäne");
oder
2*) dirS.SearchRoot = new DirectoryEntry("GC://forest");
dirS.Filter = "(&(objectCategory=User) (samAccountName=" + username + "))";
result = dirS.FindOne();
..
entry = result.GetDirectoryEntry();
Mitgliedschaft holen:
IdentityReferenceCollection SidColl;
String[] tokgrp;
tokgrp = new String[] { "tokenGroups" };
entry.RefreshCache(tokgrp);
foreach (byte[] sidBytes in entry.Properties["tokenGroups"])
{
SidColl.Add(new SecurityIdentifier(sidBytes,0));
}
Nun zu meinem Problem:
Wenn ich die ganze Suche im Global Catalog (2*)durchführe bekomme ich bei User XY 8 Gruppenmitgliedschaften.
Wenn ich es aber mit einer LDAP Abfrage (1*) durchführe bekomme ich alle , in diesem Fall knapp 17, Gruppenmitgliedschaften.
Warum?
Im Prinzip müsste doch dasselbe Ergebnis zurückgelieftert werden oder?
Gruß
thamubber