Pregunta

Cuando intento actualizar el campo de nombre (corresponde al CN) en UserPriPal (principal, realmente), recibo un error "El servidor no está dispuesto a procesar la solicitud" en la llamada a UserPrincipal.save ().

He verificado para asegurarme de que no haya otro objeto en el mismo OU con el mismo nombre (CN).

El principal en el que estoy operando es la raíz del dominio (no exactamente en el nivel de OU donde existe la cuenta de usuario).

¿Qué razón podría haber para este error? ¿Es algo que podría estar relacionado con la política de seguridad (aunque pueda actualizar todos los demás campos)?

using (var context = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["domain"], ConfigurationManager.AppSettings["rootDN"], ContextOptions.Negotiate, ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"])) {
    var user = UserPrincipal.FindByIdentity(context, IdentityType.Sid, "..."); // SID abbreviated

    user.Name = "Name, Test";

    user.Save();
}

El usuario que estoy utilizando para crear el principalcontext tiene los derechos de seguridad para modificar los objetos AD. Si actualizo cualquier otro de los otros campos (por ejemplo, apellido, nombre de dada), todo funciona bien.

EDITAR:

He podido lograr lo que necesito hacer (usando ADSI), pero tengo que ejecutar el siguiente código bajo suplantación. El código de suplantación es feo, y el siguiente código se aleja de la otra forma en que estoy actualizando los datos de anuncios (usando DirectoryServices. AccountManagement), por lo que me gustaría obtener una mejor solución.

using (var companyOU = new DirectoryEntry("LDAP://" + company.UserAccountOU)) {
    companyOU.Invoke("MoveHere", "LDAP://" + user.DistinguishedName, "cn=Name\, Test");
}

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top