Aprenda cómo proteger con contraseña un directorio utilizando la autenticación HTTP básica de Apache. Este método le permitirá configurar un área restringida de su sitio web que requerirá un nombre de usuario y una contraseña para acceder.
Requerimientos
- Un servidor en la nube que ejecuta Linux (CentOS 7 o Ubuntu 16.04).
- Servidor web Apache instalado y en ejecución.
Crear el archivo de contraseña
El primer paso es crear un archivo de contraseña que Apache usará para verificar el nombre de usuario y la contraseña. Este archivo se nombrará .htpasswd
y colocará en una ubicación segura: /etc/apache2
en Ubuntu 16.04 y /etc/httpd
en CentOS 7.
El htpasswd
comando se puede utilizar para crear un archivo de contraseña o agregarle una entrada. Por primera vez, usaremos la -c
bandera para crear el archivo y agregar el nombre de usuario jdoe
:
- CentOS 7:
sudo htpasswd -c /etc/httpd/.htpasswd jdoe
- Ubuntu 16.04:
sudo htpasswd -c /etc/apache2/.htpasswd jdoe
Se le solicitará que ingrese y confirme la nueva contraseña para el usuario.
Agregar un nuevo usuario a un archivo existente
Para agregar un nuevo usuario a un archivo de contraseña existente, use el mismo comando sin la -c
bandera. Por ejemplo, para agregar un usuario janedoe
el comando es:
- CentOS 7:
sudo htpasswd /etc/httpd/.htpasswd janedoe
- Ubuntu 16.04:
sudo htpasswd /etc/apache2/.htpasswd janedoe
Se le solicitará que ingrese y confirme la nueva contraseña para el usuario.
Habilitar restricción de directorio
Antes de que pueda restringir un directorio, deberá configurar Apache para permitir .htaccess
archivos.
CentOS 7
Abra el archivo de configuración principal de Apache para editarlo con el comando:
sudo nano /etc/httpd/conf/httpd.conf
Desplácese hasta la <Directory>
sección "/var/www/html"
y cambie AllowOverride
a All
.
Guardar y salir del archivo. Luego reinicie Apache para que los cambios surtan efecto:
sudo systemctl restart httpd
Ubuntu 16.04
Abra el archivo de configuración principal de Apache para editarlo con el comando:
sudo nano /etc/apache2/apache2.conf
Desplácese hasta la <Directory>
sección "/var/www"
y cambie AllowOverride
a All
.
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Guardar y salir del archivo. Luego reinicie Apache para que los cambios surtan efecto:
sudo systemctl restart apache2
Crear el área restringida
Vaya al directorio que desea proteger. Por ejemplo:
cd /var/www/html/admin
Cree un archivo llamado .htaccess
y ábralo para editarlo:
sudo nano .htaccess
Pon lo siguiente en este archivo:
CentOS 7:
AuthType Basic
AuthName "Password Required"
Require valid-user
AuthUserFile /etc/httpd/.htpasswd
Ubuntu 16.04:
AuthType Basic
AuthName "Password Required"
Require valid-user
AuthUserFile /etc/apache2/.htpasswd
Prueba la autentificación
Para probar la autenticación, visite la URL protegida por contraseña en un navegador. Aparecerá una ventana emergente que le pedirá que ingrese un nombre de usuario y contraseña para continuar.
Nota: si su navegador tiene un bloqueador de ventanas emergentes, deberá configurarlo para permitir ventanas emergentes para este dominio.