Conexión a Servidor LDAP desde JAVA

Mayo 26, 2009 at 4:00 pm (Java, Linux, NetBeans, ldap) (, , )

Hola en en trabajo me pidieron realizar una conexión a un servidor LDAP desde una aplicación java, esto me pareció algo difícil en un principio ya que no tenía idea de como realizar algo parecido, con algunas sugerencias de parte de mi jefe decidimos usar la librería de novell para java jLDAP, esta librería es muy completa y permite realizar todas las posibles transacciones dentro de un servidor LDAP, novell también tiene bien documentado esto hasta con ejemplos todo el API esta aquí, una ves que te familiarizas con el código vas a ver que todo es muy fácil, pero es esta serie de posts vamos a ejemplificar como se podría hacer un CRUD dentro de nuestro servidor.

Para realizar la conexión aremos lo siguiente:


/*
* Clase de Conexion Servidor LDAP
*/

package conexionldap;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPException;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* @author christian
*/

public class Conexion {

     private int ldapPort;
     private int ldapVersion;
     private LDAPConnection lc;
     private String login;
     private String ldapHost = "172.16.30.162";

     public Conexion() {
     }

     /**
     * Este método permite realizar la conexión al servidor de LDAP
     * Para el usuario manager
     * @param strManager
     * @param strPassword
     */

     public LDAPConnection ConexionManager(String strManager, String strPassword) {
          login = "cn=" + strManager + ",o=utpl,c=ec";
          System.out.println("" + login);
          ldapPort = LDAPConnection.DEFAULT_PORT;
          System.out.println("puerto: " + ldapPort);
          ldapVersion = LDAPConnection.LDAP_V3;
          System.out.println("Vesion: " + ldapVersion);
          System.out.println("HOST: " + ldapHost);
          try {
               lc = new LDAPConnection();
               lc.connect(ldapHost, ldapPort);
               System.out.println("====Conectado al Servidor LDAP====");
               lc.bind(ldapVersion, login, strPassword.getBytes("UTF8"));
               System.out.println("Autenticado en el servidor....");
          } catch (UnsupportedEncodingException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          } catch (LDAPException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          }
          return lc;
     }

     /**
     * Este metodo permite realizar la conexion al servidor de LDAP
     * Para el usuario manager
     * @param strUser
     * @param strPassword
     */

     public LDAPConnection ConexionUser(String strUser, String strPassword) {
          login = "uid=" + strUser + ",ou=People,o=utpl,c=ec";
          System.out.println("" + login);
          ldapPort = LDAPConnection.DEFAULT_PORT;
          System.out.println("puerto: " + ldapPort);
          ldapVersion = LDAPConnection.LDAP_V3;
          System.out.println("Vesion: " + ldapVersion);
          System.out.println("HOST: " + ldapHost);
          try {
               lc = new LDAPConnection();
               lc.connect(ldapHost, ldapPort);
               System.out.println("====Conectado al Servidor LDAP====");
               lc.bind(ldapVersion, login, strPassword.getBytes("UTF8"));
          } catch (UnsupportedEncodingException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          } catch (LDAPException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          }
          return lc;
     }

     public void CerrarConLDAP(LDAPConnection lc) {
          try {
               lc.disconnect();
               System.out.println("Conexion Cerrada Correctamente...");
          } catch (LDAPException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          }

     }

}

Continuar:

Busqueda de usuarios en el servidor LDAP

CRUD de usuarios en el servidor LDAP

Descargar Proyecto JAVA – Netbeans

4 comentarios

  1. Busqueda de Usuarios en el Servidor LDAP + JAVA « christmo’s Blog dijo:

    [...] Conexión a Servidor LDAP desde JAVA « christmo’s Blog dijo: [...]

  2. Trabajando con un servidor LDAP con JAVA « Programa en Java y disfruta de un café lojano dijo:

    [...] Conexión al servidor LDAP desde JAVA [...]

  3. CRUD de usuarios en el servidor LDAP + JAVA « christmo’s Blog dijo:

    [...] Conexión al servidor LDAP desde JAVA [...]

  4. Laura dijo:

    Hola,

    estoy mirando tu código para insertar un usuario en el ldap, el usuario se inserta en el ldap pero tengo un problema. En el código de insertar los datos del

    usuario, este código:

    LDAPAttributeSet setAtr = new LDAPAttributeSet();
    setAtr.add(new LDAPAttribute(“objectClass”, new String(“person”)));
    setAtr.add(new LDAPAttribute(“objectClass”, new String(“organizationalPerson”)));
    setAtr.add(new LDAPAttribute(“objectClass”, new String(“inetOrgPerson”)));
    setAtr.add(new LDAPAttribute(“objectClass”, new String(“top”)));

    Solo inserta el primer objectClass, es decir, person, los demás no los inserta. Tienes idea cual puede ser el problema?.

    Muchas gracias.

    Un saludo.

    Laura.

Escribe un comentario