Uso de htpasswd para autenticación básica en Apache

En esta oportunidad explicaremos el uso de htpasswd para crear cuentas que puedan acceder a un directorio o archivo restringido. Luego de haber presentado el concepto de autenticación básica en un post anterior, este es el tema natural a tratar.

Uso de htpasswd

Según lo configuramos en su momento, guardaremos los pares usuario / contraseña encriptada en el archivo /etc/apache2/passwd/passwords. Recordemos que si dicho archivo no existe, tendremos que crearlo o elegir otro destino.

mkdir /etc/apache2/passwd
cd /etc/apache2/passwd

Para crear el archivo y agregar la cuenta alumno, haremos uso de htpasswd de la siguiente manera:

htpasswd -Bc passwords alumno

La opción -c indica que crearemos el archivo de usuarios y contraseñas, mientras que -B hará que las contraseñas se guarden encriptadas utilizando bcrypt.

De hecho, no es estrictamente necesario que utilicemos una cuenta de usuario del sistema en el comando anterior. En síntesis, podríamos haber utilizado cualquier «usuario» que se nos ocurra – siempre y cuando luego lo usemos con su correspondiente contraseña para acceder al directorio o archivo compartido más adelante.

Cuando queramos agregar otro «usuario», no será necesario que utilicemos la opción -c (de otra manera reescribiremos el archivo). Sin embargo, tendremos que emplear -B para utilizar el mismo tipo de cifrado. En la Fig. 1 vemos el uso de htpasswd con dos ejemplos, y el archivo passwords luego de realizar los mismos:

Uso de htpasswd para crear pares de usuarios y contraseñas para autenticación
Figura 1 – Uso de htpasswd para crear pares de usuarios y contraseñas para autenticación

A continuación, aseguremos el archivo /etc/apache2/passwd/passwords:

chmod 640 /etc/apache2/passwd/passwords
chgrp www-data /etc/apache2/passwd/passwords

Aunque no lo hicimos en el post anterior, el archivo de usuarios y contraseñas podría estar oculto. Es decir que podríamos haberlo creado como .passwords.

Finalmente, en la Fig. 2 vemos el formulario de autenticación que nos permitirá acceder al contenido restringido dentro de aguantecla.com/documentos. Si ingresamos credenciales no válidas, el formulario se reseteará y nos impedirá el ingreso, mientras que si lo cancelamos se nos dirá que no estamos autorizados para acceder al contenido.

Uso de htpasswd - Formulario de acceso
Figura 2 – Formulario de acceso

Es importante aclarar que no solamente podemos configurar este tipo de restricción para directorios enteros, sino para archivos individuales de la misma manera. En ese caso deberíamos utilizar la directiva Files en vez de Directory.

¡Eso es todo! Ya hemos configurado y testeado la autenticación básica en nuestro servidor web. ¡Nos leemos en breve!