En vez de utilizar el .htpasswd para controlar el acceso a los recursos de la web, he utilizado el módulo mod_auth_mysql (desde Fedora, yum install mod_auth_mysql).
En este caso, la BD está en otro servidor (172.16.17.11) y para ello necesitamos al menos instalar mysql (yum install mysql) pero no el servidor (mysql-server).
En este servidor creamos la database, las tablas, el usuario y rellenamos con los datos:
mysql>create database auth;
mysql>
CREATE TABLE `groups` (
`user_name` char(30) NOT NULL,
`user_group` char(20) NOT NULL,
PRIMARY KEY (`user_name`,`user_group`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> INSERT INTO `groups` VALUES (’fsolans’,’developer’);
mysql> CREATE TABLE `users` (
`user_name` char(30) NOT NULL,
`user_passwd` char(20) NOT NULL,
PRIMARY KEY (`user_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> INSERT INTO `users` VALUES (’fsolans’,’8YxEAwDYwL5r6′);
mysql> grant select on auth.* to ‘authuser’@’172.16.17.%’ identified by ’secreto’;
En el servidor donde queremos introducir la autentificación vía MySQL (172.16.17.69) comprobamos lo siguiente:
mysql -u authuser -h 172.16.17.11 -p secreto
y desde la consola probamos a hacer:
mysql> use authuser;
… y ver si podemos conectar a la BD y de paso probar si podemos hacer select…
mysql> select * from users;
En el fichero de configuracion de Apache (en mi caso es un XX.conf en /etc/httpd/conf.d), he añadido esta parte:
...
# Autentificacion
AuthType Basic
AuthName "CruiseControl Access"
#AuthUserFile /var/trac/.htpasswd
#AuthUserFile /etc/svn-auth-file
AuthMySQLEnable on
AuthMySQLHost 172.16.17.11
AuthMySQLUser authuser
AuthMySQLPassword secreto
AuthMySQLDB auth
AuthMySQLUserTable users
AuthMySQLNameField user_name
AuthMySQLPasswordField user_passwd
AuthMySQLGroupTable groups
AuthMySQLGroupField user_group
Require valid-user
...
Mejor que usar el engorroso .htpasswd sobre todo a la hora de gestionar las contraseñas.
0 comentarios