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