Sto utilizzando lo spazio dei nomi System.DirectoryServices.AccountManagement per trovare gli utenti del dominio e i relativi gruppi di sicurezza AD. Funziona beneTrova i gruppi locali a cui appartiene un utente di dominio?
Sto anche utilizzando tale spazio dei nomi per interrogare i gruppi di sicurezza locali su un server remoto. Sono in grado di trovare un gruppo di sicurezza e quindi elencare gli utenti di quel gruppo senza problemi.
Quello che sto avendo problemi con la visualizzazione è che i gruppi locali di un utente di dominio appartiene a:
PrincipalContext localmachine = new PrincipalContext(ContextType.Machine, "ServerName");
PrincipalContext domain = new PrincipalContext(ContextType.Domain);
// find the user using the domain context (Works fine)
UserPrincipal user = UserPrincipal.FindByIdentity(domain, userName);
// if found - grab its groups
if (user != null)
{
// The get groups method is the only method that would accept a new context
PrincipalSearchResult<Principal> groups = user.GetGroups(localMachine);
// no groups are returned .... removed rest of code
}
sto cercando di utilizzare il metodo GetGroups passando l'localMachine PrincipalContext ma gruppi vengono restituiti.
Gli utenti esistono solo nel dominio AD. Non c'è una voce per questo utente negli utenti locali su localMachine. Gli utenti del dominio vengono aggiunti ai gruppi di sicurezza locali.
Qualche idea? Mi piacerebbe essere in grado di estrarre un elenco di tutti i gruppi locali a cui appartiene questo utente del dominio e quindi verificare se esiste un determinato gruppo in tale elenco. L'unica opzione che funziona ora è per me cercare determinati gruppi sul sistema e vedere se l'utente del dominio appartiene a quel gruppo.
domanda simile qui - si spera di qualche utilità - http://stackoverflow.com/questions/4809460/determine-nested-groups-of-windowsidentity-instance – dash
Ho provato a farlo in questo modo. Il metodo FindByIdentity restituisce null quando si cerca l'utente sulla macchina. Presumo questo perché non è stato creato un vero utente locale. È un utente di dominio. Ho provato a passare il nome utente con e senza il dominio anteposto. –
Scavando attraverso un vecchio codice, trovo che l'ho fatto esattamente come descritto; enumerare i gruppi di computer locali (tramite DirectorySearcher) e quindi elencarli per vedere se riesco a trovare un gruppo di cui l'utente è membro. Anche noi avevamo una gerarchia piuttosto superficiale. Spiacente non può essere di maggiore aiuto. – dash