Seleccionar página

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.

Share