/ / Korzystanie z System.DirectoryServices.xxx jest możliwe, aby określić, jakie grupy AD użytkownik może zarządzać? - c #, asp.net, aktywny katalog

Korzystanie z System.DirectoryServices.xxx jest możliwe, aby określić, jakie grupy AD użytkownik może zarządzać? - c #, asp.net, aktywny katalog

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 № 1

Jest 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.