Apache Authentisierung mit MySQL

überall die dämlichen .htaccess Dateien zu verteilen war mir lästig. Viel hübscher ist es, die Authentisierung mit einer eleganten mySQL Tabelle zu machen.

Installation

apt-get install libapache2-mod-auth-mysql
cd /etc/apache2/mods-enabled/
ln -s /etc/apache2/mods-available/auth_mysql.load .

Datenbank anlegen

mysql -uroot -p  

mysql> grant all on apache2.* to auth_user@localhost identified by ‘<password>’;

mysql> flush privileges;

mysql> create database apache2;

mysql> use apache2;

CREATE TABLE clients (
username varchar(25) NOT NULL default ”,
passwd varchar(25) NOT NULL default ”,
groups varchar(25) NOT NULL default ”,
PRIMARY KEY (username),
KEY groups (groups) );

INSERT INTO clients VALUES (‘meinBuntzer’, ‘besondersGeheim’, ‘meineGruppe’);

Apache-Config

  • /etc/apache2/apache.conf
Auth_MySQL_Info localhost <auth_user> <password>
  • /etc/apache2/sites-available/default
<Directory “<web directory>”>
Options +Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig Options FileInfo Limit
Order allow,deny
Allow from all
</Directory>  

<location />
AuthMYSQL on
AuthMySQL_Authoritative on
AuthMySQL_DB apache2
AuthMySQL_Password_Table clients
AuthMySQL_Group_Table clients
AuthMySQL_Empty_Passwords off
AuthMySQL_Encryption_Types Plaintext Crypt_DES

AuthName “Mein Hausserver”
AuthType Basic
AuthBasicAuthoritative Off
AuthUserFile  /dev/null
require group <meineGruppe>
</location>