Ejemplo de uso de autenticación Basic


Esta actividad práctica corresponde a este tema.

Para ilustrar cómo implementar la autenticación Basic con Apache, vamos a poner un ejemplo sobre la web del máster que estamos usando para pruebas durante este curso. Este ejemplo consistirá en implementar en el directorio /programa de esta web una autenticación básica para personas que pertenezcan a un grupo concreto. Los pasos que vamos a dar a continuación van orientados a conseguir por tanto este fin:

Caso 1. Si tenemos acceso a los ficheros de configuración de Apache:

El primer paso es incluir las siguientes líneas en el fichero apache2.conf, que indicarán a Apache que se desea este tipo de autenticación sobre el directorio indicado.

<Directory "/var/www/programa">

AuthType Basic

AuthName "Area privada, necesaria autorización"

AuthUserFile /etc/apache2/authusers

AuthGroupFile /etc/apache2/authgroups

Require group private

# Require valid-user

Options Indexes FollowSymLinks

AllowOverride None

</Directory>


Habilitando autenticación básica (1)

Una de las cosas nuevas que tiene el contenido anterior es una referencia a un fichero authgroups. Este fichero debe contener un listado de usuarios que han sido creados expresamente para esta clase de autenticación (lo veremos a continuación) y que han sido distribuidos en una serie de grupos, que también aparecen en el mismo. Esto permite crear varias áreas de acceso en diversas partes de la web donde un mismo grupo pueda tener diferentes privilegios o bien sólo algunos puedan acceder a los contenidos. Evidentemente, cuando se comprueben las credenciales de un usuario para conceder el acceso a un lugar protegido, dicho usuario debe pertenecer a uno de los grupos autorizados. La directiva del ejemplo anterior "Require group private" hace que solo los usuarios de este grupo (que como veremos posteriormente serán alfa y bravo) tengan acceso a este directorio vía web.

El contenido del fichero authgroups se puede crear simplemente con un editor de texto como el nano, y debe hacerse en la carpeta indicada anteriormente en el apache2.conf. El contenido es muy sencillo y debe seguir el patrón <nombre de grupo>: <lista de usuarios>, tal y como se ve a continuación:

privado: alfa bravo

otros: charlie


Habilitando autenticación básica (2)

De igual forma que el fichero anterior, el fichero authusers contiene una lista de nombres de usuario y una hash de su password, que son comprobadas cada vez que se requiera autorización. La directiva "Require valid-user" se usa si no existen grupos de usuarios con accesos diferenciados, e indica que para entrar en una parte de la web protegida por este tipo de autenticación simplemente es necesario conocer las credenciales de cualquier usuario de este fichero.

Antes de continuar describiendo la implementación de autenticación básica, debemos tener en cuenta que el usuario sobre el que Apache se ejecuta por defecto se denomina www-data. Esto influye a la hora de poder acceder a los archivos con usuarios y claves que estamos usando, ya que este usuario podría no tener privilegios para ello. Para que funcione correctamente, o bien los ponemos en una localización independiente del resto de las web dedicada exclusivamente a estos fines, con unos permisos adecuados, o bien los creamos en el directorio de instalación de Apache y damos permiso de ejecución sobre el directorio /etc/apache2 a "otros" (si no lo tuviese ya), para que al menos el usuario por defecto puedan entrar (chmod o+x /etc/apache2). Por motivos de seguridad es preferible la primera opción, pero en el ejemplo usaremos la segunda al ser más sencilla.

Finalmente, debemos construir las password de los usuarios que se mencionan en el fichero de grupos. Esto se hace con la siguiente secuencia de comandos, invocando un comando htpasswd por cada usuario registrado. Al llamar a esta orden se solicitará por entrada estándar una clave para cada usuario:

  • touch /etc/apache2/authusers
  • htpasswd /etc/apache2/authusers alfa
  • htpasswd /etc/apache2/authusers bravo
  • htpasswd /etc/apache2/authusers charlie

Habilitando autenticación básica (3)

Habilitando autenticación básica (4)

Para probar la autenticación una vez terminado este proceso, es necesario reiniciar y probar a acceder desde nuestro cliente de pruebas XP con usuarios válido y no válidos para probar que está funcionando correctamente. La siguiente imagen muestra el mensaje de un navegador en el caso de que los datos introducidos no sean válidos:

Habilitando autenticación básica (5)


Caso 2. Si no tenemos acceso a los ficheros de configuración de Apache:

¿Qué ocurre si queremos establecer una autenticación de esta clase y no tenemos acceso a los ficheros de configuración de Apache? (como por ejemplo para web personales de las que describimos con mod_userdir). En este caso no nos queda mas remedio que usar archivos .htaccess. Con ellos es posible hacer exactamente lo mismo que antes, pero para este segundo ejemplo vamos a hacerlo para un solo usuario. Lo que vamos a hacer consta de los siguientes pasos:

  • Lo primero es recordar que el uso de archivos .htaccess puede estar prohibido por una configuración anterior de Apache (AllowOverride None). Si esto ocurriese, no podríamos seguir con estos pasos. Para poder hacer todo lo que se plantea a continuación, es necesario dejar que Apache permita usar estos archivos, como mínimo para fijar aspectos de autenticación. Esto puede lograrse editando el fichero 000-default (site por defecto) o apache2.conf y cambiar en la directiva <Directory /> la entrada AllowOverride de None a AuthConfig. Si hemos tenido que hacer esto, debemos reiniciar Apache posteriormente.
Habilitando autenticación básica (6)
  • Ir al directorio web personal del usuario del sistema que queramos usar para esta prueba.
  • Crear en ese directorio un fichero .htaccess con este contenido:

AuthType Basic
AuthName "This is private"
AuthUserFile /home/mainuser/public_html/ .htauthusers
Require valid-user

Habilitando autenticación básica (7)

  • Ahora simplemente debemos crear los usuarios y passwords como vimos anteriormente:

touch .htauthusers
htpasswd .htauthusers pepe

Habilitando autenticación básica (8)
  • Y solo restaría reiniciar la máquina y probar la configuración como lo hemos hecho anteriormente.

Habilitando autenticación básica (9)

Podemos encontrar más información al respecto en: http://www.brennan.id.au/13-Apache_Web_Server.html#users

Last modified: Wednesday, 25 August 2010, 2:15 AM