apache: An einer mySQL Datenbank authentifizieren

Die Methode mit .htaccess/.htpasswd ist vielen bekannt um ein Verzeichnis per passwort zu schützen – Und dies geht mit dem apache-modul: mod_auth_mysql auch über eine mysql Datenbank!

Die Möglichkeiten dieser Methode sind fast unerschröpflich, so kann z.B. ein Forum einen Verzeichnisschutz implementiert haben, bei dem man sich automatisch mit seinem normalen Foren-Login anmelden kann, usw.

Und so gehts:

Erst mal muss das mod_auth_mysql installiert werden, z.B. bei CentOS mittels:

yum install mod_auth_mysql

Dann legt man im zu schützenden Verzeichnis einfach ein normales .htaccess file an mit folgendem Inhalt:

AuthName "SeitenName"
AuthType Basic
AuthMySQLHost <DB_HOST>
AuthMySQLUser <DB_USER>
AuthMySQLPassword <DB_PASSWORT>
 
AuthMySQLDB <DB>
AuthMySQLUserTable <USER_TABELLE>
AuthMySQLNameField <FELD_NAME>
AuthMySQLPasswordField <FELD_PASSWORT>
AuthMySQLPwEncryption <passwort Verschlüsselung, z.B. md5>
AuthMySQLEnable On
AuthMySQLUserCondition "<ggf. weitere Kontitionen>"
require valid-user

Hier ist noch ein Beispiel, wie man das ganze auch auf Gruppenberechtigungen ausdehnen kann:

AuthName "YourSite"
AuthType Basic
 
# Database settings:
AuthMySQLHost localhost
AuthMySQLUser dbuser
AuthMySQLPassword dbpass
AuthMySQLDB dbname
 
# User table
AuthMySQLUserTable users
AuthMySQLNameField users.name
AuthMySQLPasswordField users.pass
 
# User Roles tables
AuthMySQLGroupTable "users, users_roles"
AuthMySQLGroupField users_role.rid
 
# Where clauses
AuthMySQLUserCondition "users.status = 1 and users.access <> 0"
AuthMySQLGroupCondition "users.uid = users_roles.uid AND users_roles.rid > 2"
 
# Do it to it!
AuthMySQLPwEncryption md5
AuthMySQLEnable On
require valid-user

Und wenn alles klappt kann man sich dann mit den Login-Daten aus der Datenbank anmelden! 😉

Quelle: [http://drupal.org/node/156547|drupal.org: Sharing authentication with HTTP-Auth]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert