Ich habe einen WCF-Webdienst erstellt, um Benutzer- und Gruppeninformationen aus Active Directory zurückzugeben. Es funktioniert für die meisten Gruppen und Benutzer.DirectoryEntry.Invoke ("groups", null) nicht alle Gruppen abrufen?
Ich benutze directoryEntry.Invoke ("Gruppen", null), um die Gruppen zurückzugeben, denen ein bestimmter Benutzer Mitglied ist. Dies gibt MOST-Gruppen zurück. Die seltsame Sache ist, dass ich eine beliebige Gruppe finden und ihre Mitglieder aufzählen kann, auch wenn es eine der Gruppen ist, die fehlt, wenn ich die Invoke-Abfrage für eines ihrer Mitglieder verwende.
Die meisten Gruppen, die dieses Verhalten aufweisen, sind Exchange-aktiviert. Die meisten problematischen Benutzerkonten sind für Benutzer in einer Verbunddomäne bestimmt, die in der von mir abgefragten Domäne einen Exchange-Server verwenden. Ich versuche nicht, Objekte in der föderierten Domäne abzufragen.
Meine Theorien so weit:
einige Sicherheitsbeschränkung erlauben nicht alle Gruppen über invoke Aufzählen(), obwohl ich Gruppen abfragen und aufzählen ihre Mitglieder fehlen.
Invoke hat Probleme mit einer Teilmenge von Gruppen. Möglicherweise werden universelle, dynamische oder Exchange-aktivierte Eigenschaften angezeigt.
Die Aufrufmethode erfasst nicht alle Gruppen, da die "föderierten" Konten (die im Rahmen der Exchange-Kontoeinrichtung erstellt werden) sich von normalen Domänenkonten unterscheiden über die Sid-Zuordnung zurück zu ihrer Login-Domain.
These sind gute Vorschläge und Sie haben Recht mit dem MSDN Artikel, ich hätte das vor dem Start gelesen. In Bezug auf den Grund, warum ich die Aufrufmethode verwendet habe, brauchte ich in diesem Fall nur die Gruppennamen, und das schien eine effiziente Möglichkeit zu sein, die Informationen zu erhalten. Ich habe nicht viel gegen Active Directory programmiert, daher lerne ich immer noch sehr gut den besten Weg, um fortzufahren. Es ist interessant, wie viel .NET sich in diesem Bereich seit 1.1 entwickelt hat! – HeathenWorld
Kein Problem - nur neugierig, ob Sie einen bestimmten Grund für die Verwendung des Invoke() - Ansatzes hatten. Und hey - darum geht es bei StackOverflow - Ihnen zu helfen, wenn Sie den Wald für die Bäume nicht sehen :-) –
+1 für den verlinkten MSDN Artikel, viel einfacher in 3.5 – tbone