LDAP: ¿Cómo añadir un nuevo usuario a un grupo dentro de una unidad organizativa
-
28-09-2019 - |
Pregunta
Tengo algo de código usando DirectoryEntry
para manipular el local de Active Directory a través de LDAP. Actualmente me encuentro con una OU
específica, añadir un usuario a la misma, actualizar las propiedades del usuario y luego confirmar todos los cambios:
DirectoryEntry ldapRoot = new DirectoryEntry(ldapString, user, password);
DirectoryEntry userGroup = ldapRoot.Children.Find("OU=OUGroup");
DirectoryEntry newUser = userGroup.Children.Add("CN=" + userName, "user");
newUser.Properties["displayName"].Value = displayName;
...
newUser.CommitChanges();
userGroup.Close();
ldapRoot.Close();
LDAPString es algo parecido a LDAP:\\DC=company,DC=local
, básicamente es sólo ir a buscar la entrada de la raíz.
cambiar varias propiedades, pero es todo lo fino de trabajo. Sin embargo, tengo otra llamada OU
SharePoint_Groups, que tiene un grupo llamado el interior Internal
. Quiero añadir el nuevo usuario como miembro de este grupo, pero estoy en una pérdida de cómo hacerlo. He intentado lo siguiente:
DirectoryEntry spGroup = ldapRoot.Children.Find("OU=Sharepoint_Groups");
DirectoryEntry internal = spGroup.Children.Find("CN=Internal");
No funciona y no estoy seguro de cómo debería abordar Internal
- es CN = correcta o debería usar alguna otra especificación
Y, una vez que tenga el grupo correcto, ¿cómo puedo añadir el usuario existente a ella?
Gracias de antemano
Solución
Básicamente, para agregar un usuario a un grupo existente, es necesario que se unen al grupo y actualizarlo de propiedad member
, utilizando el nombre distinguido completo del usuario:
DirectoryEntry deGroup = new DirectoryEntry("LDAP://CN=Internal,OU=Sharepoint_Groups,DC=Company,DC=local");
string userDN = newUser.Properties["distinguishedName"][0].ToString();
deGroup.Properties["member"].Add(userDN);
deGroup.CommitChanges();
Un gran recurso para este tipo de cosas es el artículo CodeProject Cómo hacer casi todo en Active Directory usando C # - un montón de ejemplos de código útiles