Este modulo no esta por defecto en apache2, así que tendremos que instalarlos. Esta en los repositorios así que para descargarlo y activarlo hacemos lo siguiente:
~# aptitude install libapache2-mod-auth-mysqlPara este modulo, necesitaremos crear una base de datos y unas tablas.
~# a2enmod auth_mysql
mysql> create database apache2Para encriptar las contraseñas utilizaremos el cifrado Crypt. Para ello podemos hacer dos cosas.
mysql> grant all on apache2.* to juanlu@'localhost'
identified by 'juanlu';
mysql> use apache2;
mysql> create table clientes(
nombre varchar(25) not null,
pass varchar(44) not null,
primary key (nombre));
- Al crear la base de datos, en el insert, ponemos un parámetro para que la encripte. Los insert serian así:
INSERT INTO `apache2`.`clientes`
VALUES (
'maria', ENCRYPT( 'maria' )
); - Antes de crear la base de datos utilizamos el programa htpasswd. Este programa se instala al instalar uno de los modulos de apache2. Seria de la siguiente manera.
~# aptitude install libapache2-mod-auth-pam
Ya tendriamos instalado el programa. Para usarlo simplemente:
~# htpasswd claves.txt Jose
*claves.txt, seria el fichero donde se guardan usuario y contraseña. Jose seria el usuario y la contraseña te la pediría. Después simplemente a el insertar los datos, hacemos un insert normal, y ponemos la contraseña del fichero.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName bobesponja.mysql
DocumentRoot /var/www/mysql
<Directory /var/www/mysql/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthType Basic
AuthName "Usuario y contraseña" # Texto que te aparecerá
AuthBasicAuthoritative Off
AuthUserFile /dev/null
AuthMYSQL on
AuthMySQL_Authoritative on
AuthMySQL_DB apache2 # Nombre de la base de datos
AuthMySQL_Host localhost
AuthMySQL_User juanlu # Usuario de la base de datos
AuthMySQL_Password juanlu # Contraseña del usuario
AuthMySQL_Password_Table clientes # Nombre de la tabla
AuthMySQL_Username_Field nombre # Fila de los nombres
AuthMySQL_Password_Field pass # Fila de las contraseñas
AuthMySQL_Empty_Passwords off
AuthMySQL_Encryption_Types Crypt # Tipo de cifrado
Require valid-user
</Directory>
</VirtualHost>
Las palabras en negrita, son las mas importantes, pueden cambiar dependiendo de como sea nuestra base de datos o de la encriptación en el caso de Crypt. Se podría encriptar también con otro tipo de encriptación como sha1 o md5.
Muy bueno, Juanlu, pero una "cosita": quizás estaría mejor usar el verbo autentificar que identificar en el título.
ResponderEliminarUn saludo
Gracias josedomingo, ya esta cambiado.
ResponderEliminarSaludos
Muchas gracias, muy claro y útil
ResponderEliminarsabes hacerlo para grupos???
ResponderEliminar¿A que te refieres con que si se hacerlo para grupos? Esto es una tabla en la base de datos, donde tienes a los usuarios y sus contraseñas encriptadas. Puede agregar todos los usuarios que quieras. El usuario que no este agregado, no podrá ver la pagina.
Eliminar