c# Utilizzando System.DirectoryServices.xxx è possibile determinare quali gruppi AD possono essere gestiti da un utente?



asp.net active-directory (1)

Sto tentando di caricare un elenco di gruppi per un utente e di voler mostrare se hanno l'autorizzazione per modificare l'appartenenza al gruppo o meno.

Che cosa in Active Directory indica che un utente può modificare i membri di un gruppo e come posso vederlo usando System.DirectoryServices in 3.5+

Sto usando il seguente per ottenere i gruppi per un utente

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)
            ...
    }
}

Qualsiasi aiuto apprezzato

https://ffff65535.com


Ciò richiede molto tempo, a causa del modo in cui le autorizzazioni vengono gestite sugli oggetti. Una domanda simile potrebbe essere: "Come faccio a elencare tutte le cartelle del dominio a cui un account può scrivere dati". Il motivo per cui questo richiede molto tempo è perché ogni oggetto detiene il proprio Access Control List (ACL).

Sono abbastanza sicuro che l'unico modo per scoprire ogni gruppo che puoi gestire sarebbe controllare ogni gruppo e vedere quali sono le autorizzazioni su quel gruppo, quindi confrontare l'appartenenza al gruppo con le autorizzazioni sul gruppo.

In Active Directory, come posso determinare il tipo di ActiveDirectoryAccessRule? ha un codice che può rivelarsi utile se questa è la strada che si finisce per andare.

Un approccio più appropriato potrebbe essere quello di utilizzare il campo "Delega" per delegare le autorizzazioni a determinati gruppi, questo campo potrebbe essere facilmente interrogato utilizzando LDAP, o consentire alla persona di selezionare qualsiasi gruppo e quindi controllare le autorizzazioni del gruppo dopo che è stato selezionato.





active-directory