Service2Max - Die neue Service-Dimension

Mod Auth MySQL unter Apache 2 (Debian)

Erstellt von Patrick Matsumura am 16.04.2008

| Keine Kommentare

Heute will ich zeigen, wie einfach es ist mod_auth_mysql für Apache 2 einzurichten. Aber was ist mod_auth_mysql? Manche werden so schlau sein und schon wissen worum es geht. Für alle anderen: Mit mod_auth_mysql ist es möglich in einer .htaccess Datei einen Benutzer mithilfe von MySQL identifizieren und somit den Zugriff auf eine Ressource erlauben zu können. So spart man sich das mühsame Pflegen einer .htpasswd Datei.

Ich setze ab hier voraus, dass bereits ein funktionierender Apache 2 Webserver und MySQL installiert sind. Als erstes müssen wir nun mod_auth_mysql installieren. Dies machen wir einfach mit dem Installationstool von Debian, nämlich Apt. Dazu schreiben wir folgendes in die Konsole

# apt-get install libapache2-mod-auth-mysql

Jetzt wird das Modul installiert und muss nur noch aktiviert werden. Das machen wir mit dem Tool a2enmod

# a2enmod auth_mysql

Solltet ihr das Tool nicht installiert haben, dann muss man es manuell tun indem man einfach einen Link setzt. Dazu wechselt ihr in das Verzeichnis “mods-enabled” und setzt dann den Link zum Modul in “mods-available”

# cd /etc/apache2/mods-enabled
# ln -s /etc/apache2/mods-available/auth_mysql.load

Jetzt kann Apache das Modul laden, aber dazu muss er erstmal neugestartet werden. Ist doch ganz einfach.

# /etc/init.d/apache2 restart

.htaccess Datei anlegen

Nachdem das alles gemacht ist, widmen wir uns nun der .htaccess Datei. Ich führe einfach mal eine Beispiel .htaccess Datei auf.

AuthType Basic
AuthName "Geheimbereich"
AuthMySQLEnable On
AuthMySQLHost localhost
AuthMySQLDB userdb
AuthMySQLUser root
AuthMySQLPassword meinpasswort
AuthMySQLUserTable users
AuthMySQLNameField uid
AuthMySQLPasswordField password
AuthMySQLPwEncryption md5
require valid-user

Ich erkläre einfach mal, was da passiert (nur AuthMySQL spezifisch)

AuthMySQLEnable: hier wird Apache mitgeteilt, dass wir gerne AuthMySQL bentuzen wollen

AuthMySQLHost: Adresse zum MySQL Server. Kann eine Adresse, oder eine IP sein

AuthMySQLDB: Hier wird die entsprechende Datenbank ausgewählt, die dann unsere Benutzertabelle enthält

AuthMySQLUser: Der Bentuzer, der die Datenbank nutzen darf. Sollte nach Möglichkeit nicht root sein. Am besten man legt einen Benutzer an, der nur das SELECT Recht bekommt.

AuthMySQLPassword: Das Passwort zum Datenbankbenutzer

AuthMySQLUserTable: Die Tabelle, die alle Nutzerdaten enthält.

AuthMySQLNameField: Gibt die Spalte an, in der AuthMySQL nach gültigen Bentuzer-IDs suchen soll

AuthMySQLPasswordField: Gibt die Spalte an, in der AuthMySQL die Passwörter der Benutzer findet

AuthMySQLPwEncryption: Hier gibt man an wie die Passwörter in der Datenbank verschlüsselt sind. Mögliche Werte sind none | md5 | sha1 | aes | crypt | scrambled. Welche benutzt werden soll hängt von der Art der Passwörter in der Datenbank ab.

Solltet ihr noch mehr Informationen zu mod_aut_mysql benötigen, dann empfehle ich die Anleitung der Entwickler zu lesen

So… und nun einfach die .htaccess Datei in das zu schützende Verzeichnis und fertig!

Ich hoffe, dass die Erklärungen ausreichen. Sollten noch Fragen auftreten, dann benutzt doch einfach das Kommentarsystem. In diesem Sinne einen schönen Tag noch,

Patrick