Búsqueda de usuarios en LDAP

En este ejemplo mostraré como obtener los datos de un usuario registrado en el LDAP.
La pantalla podría ser la siguiente :

Lo que primero necesitamos es conseguirnos la librería que nos permitirá a accesar al LDAP. La librería es ldapjdk.jar

Declaramos los atributos necesarios para la conexión al LDAP , como también los atributos o keys de los datos del usuario (Por ejemplo: name, e-mail, country)



public class LDAPConstants {
/*PRODUCCION*/
static String HOST = "directory.4cuatros.com";

/*PUERTO*/
static int PORT = 4444 ;

/*BASE DN*/
static String BASE_DN = "o=4cuatros.com";

static String[] attrs = {"name","mail","country"};
}



Creamos el bean LDAPUsuario


public class LDAPUsuario {

private String userId;
private String deNombre;
private String dePais;
private String deMail;


public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}

public String getDeNombre() {
return deNombre;
}
public void setDeNombre(String deNombre) {
this.deNombre = deNombre;
}
public String getDePais() {
return dePais;
}
public void setDePais(String dePais) {
this.dePais = dePais;
}
public String getDeMail() {
return deMail;
}
public void setDeMail(String deMail) {
this.deMail = deMail;
}
}



Realizamos la conexión al LDAP y obtenemos los datos del empleado





public class LDAPProvider {

public LDAPUsuario getUserLDAP(String userId){
LDAPUsuario userLDAP = null;
LDAPConnection connection = new LDAPConnection();
String userNameLDAP = "uid="+ userId;

try {
connection.connect(LDAPConstants.HOST,LDAPConstants.PORT);
String[] filters = LDAPConstants.attrs;

LDAPSearchResults results = connection.search(LDAPConstants.BASE_DN, connection.SCOPE_SUB,userNameLDAP, filters, false );

if(results.hasMoreElements()){
LDAPEntry entry = results.next();
userLDAP = new LDAPUsuario();
userLDAP.setUserId(userNameLDAP);
userLDAP = obtenerDatosUsuario(filters, entry);
}

} catch ( LDAPReferralException e ) {
// Ignore referrals
//throw new JboException(ConstantList.ERROR_LOGIN);

} catch ( LDAPException e ){
//throw new JboException(ConstantList.ERROR_LOGIN);
}

return userLDAP;
}


private LDAPUsuario obtenerDatosUsuario(String[] filtros, LDAPEntry entry ){
if(filtros == null || entry == null || filtros.length<1) usuario =" new" i =" 0;" attr =" entry.getAttribute(" enumvals =" attr.getStringValues();" val =" (String)enumVals.nextElement();">


Es importante saber el orden de los atributos, en mi caso el primer atributo es el nombre, el segundo el mail y tercero el país.

Comentarios