Пример #1
0
  /**
   * 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;
  }