Tengo problemas para encontrar cómo asociar un usuario #Ldap a un grupo determinado.Asociar usuario de Ldap a un grupo con Java
Eso es lo que he intentado:
Attributes attrs = new BasicAttributes();
BasicAttribute basicAttrs = new BasicAttribute("objectclass");
basicAttrs.add("top");
basicAttrs.add("person");
BasicAttribute memberOf = new BasicAttribute("memberOf");
memberOf.add("Managers"); // Tried with distinguished name too
memberOf.add("Administrators"); // Tried with distinguished name too
attrs.put(basicAttrs);
attrs.put("cn", user.getLogin());
attrs.put("name", user.getLogin());
attrs.put("login", user.getLogin());
attrs.put("mail", user.getMail());
attrs.put("displayName", user.getDisplayName());
attrs.put("memberOf", memberOf);
try {
ctx.bind("CN=" + user.getLogin() + "," + baseDn, null, attrs);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
También probé a usar los nombres distinguidos como: "CN = Administradores, OU = < system_name>, OU = Usuarios, OU = < servidor>, DC = com ", pero no funcionó. Creo que debería ser un lugar para hacer referencia al grupo Ldap.
Pero tengo este error:
javax.naming.directory.InvalidAttributeValueException: Malformed 'memberOf' attribute value; remaining name 'CN=lcarvalho,OU=<system_name>,OU=Users,OU=<server>,DC=com'
at com.sun.jndi.ldap.LdapClient.encodeAttribute(LdapClient.java:951)
at com.sun.jndi.ldap.LdapClient.add(LdapClient.java:999)
at com.sun.jndi.ldap.LdapCtx.c_bind(LdapCtx.java:396)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_bind(ComponentDirContext.java:277)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.bind(PartialCompositeDirContext.java:197)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.bind(PartialCompositeDirContext.java:186)
at javax.naming.directory.InitialDirContext.bind(InitialDirContext.java:158)
...
Ésta es toda la traza de la pila además de mis líneas de aplicación.
No he usado JNDI para trabajar con LDAP, pero ¿ha comprobado en su servidor LDAP, si la clase de objeto 'persona' tiene el atributo 'memberOf'? ¿En qué está desarrollando el servidor LDAP? En cualquier caso, debe especificar el DN completo para el 'memberOf'. – hovanessyan
Intenté lo mismo en este momento solo por el hecho de probar esto y puedo reproducir el problema. El atributo 'memberOf' existe y el DN es correcto. Pero creo que el principal problema aquí es que agregar un usuario a un grupo debería pasar del objeto de grupo, no del objeto de usuario (como @EJP se comentó más adelante). –