Próbuję załadować listę grup dla użytkownika i chcę pokazać, czy mają uprawnienia do edytowania członkostwa w grupie, czy nie.
Co w Active Directory oznacza, że użytkownik może edytować członków grupy i jak mogę to sprawdzić za pomocą System.DirectoryServices w wersji 3.5+
Korzystam z poniższych, aby uzyskać grupy dla użytkownika
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, userName);
if ( user != null)
{
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
foreach(Principal p in groups)
{
if ( p is GroupPrincipal)
...
}
}
Każda pomoc doceniona
Odpowiedzi:
3 dla odpowiedzi № 1Jest to bardzo czasochłonne ze względu na sposóbuprawnienia są zarządzane na obiektach. Podobnym pytaniem może być: "Jak wyświetlić każdy folder w domenie, do której dane konto może zapisywać dane". Powodem tego jest czasochłonność, ponieważ każdy obiekt przechowuje własną listę kontroli dostępu (ACL).
Jestem pewien, że to jedyny sposób, aby dowiedzieć się wszystkiegogrupą, którą możesz zarządzać, byłoby sprawdzenie każdej grupy i sprawdzenie, jakie uprawnienia należą do tej grupy, a następnie porównanie członkostwa w grupie z uprawnieniami w grupie.
W Active Directory, w jaki sposób określić typ ActiveDirectoryAccessRule? ma jakiś kod, który może okazać się pomocny, jeśli jest to trasa, którą kończysz.
Dobrym podejściem może być użycie "Delegata"pole do delegowania uprawnień do określonych grup, pole to można łatwo wyszukać przy użyciu LDAP, lub pozwolić danej osobie wybrać dowolną grupę, a następnie sprawdzić uprawnienia grupy po jej wybraniu.