A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

2.9. Autenticación HTTP

En ocasiones necesitamos permitir el acceso a nuestro sitio web a determinados usuarios. Por ejemplo, cuando mostramos el sitio web a nuestro jefe podemos darle un nombre de usuario y una contraseña para que inicie sesión en nuestro sitio.

Para permitir el acceso a nuestro sitio web mediante un usuario y su contraseña podemos modificar el sitio virtual de la siguiente manera:

...
<Directory /home/username/helloworld/public/>
    DirectoryIndex index.php
    AllowOverride All
    AuthType Basic
    AuthName "Authentication Required"
    AuthUserFile /usr/local/apache/passwd/passwords
    Require valid-user
</Directory>
...

La línea 5 define el método de autenticación, Basic. El método más común es Basic. Es importante ser cuidadosos porque este método de autenticación envía la contraseña desde el cliente al servidor sin codificar. Por esta razón este método no se usa para datos altamente sensibles. Apache soporta otro método de autenticación: AuthType Digest. Este método es mucho más seguro. Los navegadores más recientes soportan este último tipo de autenticación.

La línea 6 define el texto que se mostrará al usuario cuanto intente iniciar sesión.

La línea 7 define el archivo donde se guardan las contraseñas. Este archivo se debe crear con la herramienta htpasswd.

La línea 8 permite iniciar sesión a cualquiera que este en el archivo de contraseñas y que ingrese correctamente su contraseña.

Para crear el archivo passwords escribimos el siguiente comando:

htpasswd -c /usr/local/apache/passwd/passwords <username>

En el comando de arriba debemos reemplazar el comodín <username> con el nombre del usuario. Podemos elegir un nombre arbitrario, por ejemplo, «admin». El comando pedirá la contraseña del usuario y la guardará en el archivo:

# htpasswd -c /usr/local/apache/passwd/passwords <username>
New password:
Re-type new password:
Adding password for user <username>

Cuando el usuario intente visitar el sitio web verá un dialogo de autenticación HTTP. Para iniciar sesión en el sitio, el visitante debe ingresar el nombre de usuario y la contraseña correcta.

Para información adicional sobre la autenticación HTTP podemos revisar el tema Authentication and Authorization en la documentación de Apache.


Top