Estoy usando el espacio de nombres System.DirectoryServices.AccountManagement para encontrar usuarios de dominio y sus correspondientes grupos de seguridad AD. Esto funciona bien¿Buscar grupos locales a los que pertenece un usuario de dominio?
También estoy usando ese espacio de nombres para consultar los grupos de seguridad locales en un servidor remoto. Puedo encontrar un grupo de seguridad y luego enumerar a los usuarios de ese grupo sin problema.
Lo que estoy teniendo problemas con los que se presentan grupos locales pertenece a un usuario de dominio:
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
}
Estoy intentando utilizar el método GetGroups que pasa en el LocalMachine PrincipalContext pero no se devuelven los grupos.
Los usuarios existen solo en el Dominio AD. No hay una entrada para este usuario en los usuarios locales en la máquina local. Los usuarios de dominio se agregan a grupos de seguridad locales.
¿Alguna idea? Me gustaría poder obtener una lista de todos los grupos locales a los que pertenece este usuario de dominio y luego ver si existen ciertos grupos en esa lista. La única opción que funciona ahora es que busque ciertos grupos en el sistema y vea si el usuario del dominio pertenece a ese grupo.
pregunta similar aquí - esperemos que de alguna utilidad - http://stackoverflow.com/questions/4809460/determine-nested-groups-of-windowsidentity-instance – dash
He intentado hacerlo de esa manera. El método FindByIdentity devuelve nulo al buscar al usuario en la máquina. Supongo que esto se debe a que no se creó un usuario local real. Es un usuario de dominio. Intenté pasar el nombre de usuario con y sin el dominio anterior. –
Explorando un viejo código, me parece que lo hice exactamente de la manera que describiste; enumerar los grupos de máquinas locales (a través de DirectorySearcher) y luego enumerarlos para ver si puedo encontrar un grupo del que el usuario es miembro. También teníamos una jerarquía bastante superficial. Lo siento no puede ser de más ayuda. – dash