Capítulo 6. Seguridad

Tabla de contenidos

6.1. Autenticación de usuarios
6.1.1. Introducción
6.1.2. Elección del método de Autenticación
6.1.3. Crear un nuevo método de Autenticación
6.2. Modulos y Roles
6.2.1. Introducción
6.2.2. Uso en el framework
6.3. Permisos

6.1. Autenticación de usuarios

6.1.1. Introducción

gvHIDRA proporciona varios mecanismos para autenticar los usuarios, y también permite crear nuevos. Se usa el PEAR::Auth, por lo que en algunos puntos en conveniente ver su documentación. Para comprender el funcionamiento, conviene distinguir dos partes:

  1. formulario para introducir las credenciales y comprobación de su validez

  2. carga de la información relativa al usuario / aplicación. Esta información se carga en la sesión, y su estructura puede verse en los ejemplos del método postLogin en igep/include/valida/AuthBasic.php, igep/custom/cit.gva.es/auth/AuthWS.php y en Autenticación imap gva.

A continuación veremos los mecanismos disponibles y como se tratan estos puntos en cada uno de ellos.

6.1.1.1. comun

Es el método usado por defecto en el tema 'cit.gva.es'. Aquí el formulario es externo, y en el framework solo se realiza la parte 2). Esta parte se implementa en comun/modulos/valida.php. En el framework se detecta por los parámetros en el GET pasados desde el formulario externo.

Al pulsar opción de salir se cierra la ventana del navegador (ya que se asume que estamos en una ventana nueva).

6.1.1.2. gvPontis

Es el método de ejemplo usado en el tema 'gvpontis'. Muestra un formulario genérico para el paso 1. Los datos para la conexión son usuario 'invitado' y contraseña '1'. En el paso 2 se carga la información necesaria de forma estática.

Para hacer uso de este método hay que copiar el fichero igep/include/valida/login.php a la raíz del proyecto (se puede renombrar), y acceder a él con el navegador.

Al pulsar la opción de salir se vuelve al formulario de conexión.

6.1.1.3. wscmn (Web Service)

Este método es similar al de comun, pero sí incluye formulario, y la comprobación se hace con el web service en wscmn. La parte 2) se inicializa haciendo uso de la información recuperada por el web service, por tanto no requiere acceso a base de datos.

Para hacer uso de este método hay que copiar el fichero igep/custom/cit.gva.es/auth/login_ws.php a la raíz del proyecto (se puede renombrar), y acceder a él con el navegador.

Al pulsar la opción de salir se vuelve al formulario de conexión.

6.1.2. Elección del método de Autenticación

Cuando accedemos a la aplicación sin indicar el fichero de inicio, normalmente el servidor web ejecuta el fichero index.php., donde se hacen una serie de comprobaciones para detectar el método que se va a usar. Hay dos formas de elección:

  • explícita: el tipo comun se activa con los parámetros pasados en el GET, y para los otros métodos hay que acceder por http al fichero de login.

  • implícita: si no hay elección implícita, se buscan los ficheros 'login*.php' en la raíz y se accede al primero, en orden alfabético.

6.1.3. Crear un nuevo método de Autenticación

A continuación se explican los pasos para crear el nuevo método. También podemos consultar la implementación de los tipos gvPontis y wscmn, ya que se han creado de esta forma. También hay disponible un ejemplo usando un servidor imap.

Excepto el fichero de indice (paso 1), los otros pueden situarse en cualquier ubicación, y normalmente vendrá determinado en función de donde necesitemos usarlos (aplicación, custom o framework).

6.1.3.1. Paso 1. Clase Principal

En primer lugar tenemos que crear el fichero php que contiene la clase a usar con PEAR::Auth. Esta clase ha de heredar de 'igep/include/valida/gvhBaseAuth.php'. Los métodos que debemos implementar son:

  • fetchData: recibe usuario y contraseña y comprueba su validez

  • autenticate: es el método llamado desde el paso 1, y si se aceptan las credenciales, llamamos al método open pasándole la URL de la clase que definimos en paso 2. Consultar los ejemplos para más detalles.

6.1.3.2. Paso 2. <DESCRIPCION>

Creamos el fichero que invoca al método autenticate anterior. Este fichero siempre ha de ir en la raiz del proyecto, y es el punto de entrada a la aplicación usando el navegador.

6.1.3.3. Paso 3. <DESCRIPCION>

Creamos la clase validacion, con el método valida (llamado desde el framework), que lo que hace es cargar la información necesaria en la sesión. Podemos llamar al método checkData (de la clase principal) que comprueba si en la sesión está toda la información que requiere gvHIDRA.