/** * Finaliza la instancia única de LDAPManager. Una vez llamado a este metodo el LDAPManager no se * podrá volver a usar */ public synchronized void destroy() { String prefixLog = "destroy: "; logger.debug(prefixLog + "Finalizando LDAPManager"); connectionPool.destroy(); instance = null; logger.debug(prefixLog + "LDAPManager finalizado correctamente"); }
public Vector<LDAPUser> getUserListLDAP() throws LDAPException { LDAPConnection connection = connectionPool.getConnection(); /*patron para la busqueda de todos los usuarios*/ String attb = "(" + atributoRol + "=" + rol + ")"; /*buequeda de todos los usuarios que cumplan el patron*/ LDAPSearchResults results = connection.search(base, LDAPv3.SCOPE_SUB, attb, null, false); LDAPAttribute ldapAttribute = null; LDAPUser usuario = null; LDAPEntry ldapEntry = null; Vector<LDAPUser> listUsers = new Vector<LDAPUser>(); /*guardamos los usuarios en un array de usuarios con la información que nos interesa*/ while (results.hasMoreElements()) { usuario = new LDAPUser(); usuario = inicilizaUsuario(usuario); ldapEntry = (LDAPEntry) results.next(); ldapAttribute = ldapEntry.getAttribute("uid"); usuario.setName(ldapAttribute.getStringValues().nextElement().toString().toUpperCase()); ldapAttribute = ldapEntry.getAttribute("cn"); usuario.setNombreCompleto(ldapAttribute.getStringValues().nextElement().toString()); ldapAttribute = ldapEntry.getAttribute("sn"); usuario.setNombre(ldapAttribute.getStringValues().nextElement().toString()); ldapAttribute = ldapEntry.getAttribute("mail"); if (ldapAttribute != null) { usuario.setMail(ldapAttribute.getStringValues().nextElement().toString()); } listUsers.add(usuario); } connectionPool.close(connection); return listUsers; }
/** * Devuleve si un usuario dado con su password se autentica correctamente y posee el rol de la * aplicacion correspondiente * * @param user, usuario para validar * @param password, del usuario * @return true/false si se autentica correctamente o no * @throws LDAPException */ public boolean isValidUser(String user, String password) throws LDAPException { LDAPConnection connection = connectionPool.getConnection(); String attributeName = "uid"; String filter = "uid=" + user + "," + base; /* Se realiza la autenticacion del usuario con la password*/ connection.authenticate(filter, password); /* si es correcta se obtienen los atributos del usuario*/ LDAPSearchResults results = connection.search( base, LDAPv3.SCOPE_SUB, "(" + attributeName + "=" + user + ")", null, false); /* Se obtienen los valores para el atributo rol*/ LDAPAttribute ldapAttribute = null; LDAPEntry ldapEntry = null; while (results.hasMoreElements()) { ldapEntry = (LDAPEntry) results.next(); ldapAttribute = ldapEntry.getAttribute(atributoRol); } // ahora no vendrian en lista separadas por coma si no la lista String[] lista = ldapAttribute.getStringValueArray(); /* se cierra la conexion*/ connectionPool.close(connection); /* si comprueba si pertenece al rol correspondiente para la aplicacion*/ boolean resultado = perteneceGrupo(lista, rol); if (resultado) { logger.info("Autenticacion Ldap correcta"); } else { logger.info("Error de autenticación contra ldap"); } return resultado; }