js-home.org, 18.05.2012
 

Apache, HTTP-AUTH, MySQL und PHPBB3
2008-06-23Jürgen Schmitz
Eine kurze Beschreibung, wie man mod_auth_mysql mit phpbb2 und phpbb3 nutzt.
1Was ist nötig?
2Was wird gemacht?
3Modul bauen
4Modul nutzen
 4.1 phpbb2
 4.2 phpbb3
  4.2.1  Modul patchen
  4.2.2  Konfigurieren
 
1 Was ist nötig?
  • Apache Web Server V2
  • mod_auth_mysql als Quellen in Version 3
  • ein laufendes phpbb Forum (Version 2 oder 3) mit MySQL
  • Development-Dateien für Apache2 und MySQL

 
2 Was wird gemacht?
Zunächste wird beschrieben wie man das Modul im Apachen einbindet. Anschließend kommt die recht simple Konfiguration.

Für PHPBB3 muß allerdings das Modul erst durch einen Patch von mir an das veränderte Passwort-Speicherverfahren angepasst werden.
 
3 Modul bauen
Zunächste gilt es das mod_auth_mysql-3.0.0.tar.gz zu besorgen, evtl. auch eine neuere Version. Unter Debian 3.1 außerdem ein Patch namens "apache22.diff".

Dann wird es auch schon wieder einfach:
  • Tar-File entpacken
  • ggf. Patch draufspielen: patch -p1 <apache22.diff im entpackten Verzeichnis
  • kompilieren: apxs -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c && apxs -i mod_auth_mysql.la


Danach sollte das Modul fertig am richtigen Ort liegen und meist auch im Apache-Konfig eingetragen sein.

Das ist je nach Distribution bzw. Installation verschieden, es muß aber irgendwo eine Zeile "LoadModule mysql_auth_module /usr/lib/apache2/modules/mod_auth_mysql.so", möglicherweise mit einem anderen Pfad, im Apache-Konfig-Bereich liegen und auch gelesen werden.
 
4 Modul nutzen
Das Modul kann auch verschiedene Arten genutzt werden, zumeist per .htaccess oder direkt in der Server Konfiguration.

Im Folgenden gehe ich davon aus, daß neben dem phpbb noch eine Tabelle vorliegen, in der die Nutzer eingetragen sind, die einen Bereich besuchen dürfen: TAB(gruppe,username)

Sauberer müßte man da 2 Tabellen haben - aber das sprengt den Rahmen.

In der Tabelle TAB steht also nun eine Zuordnung Gruppe zum Usernamen aus dem Forum. Wer will kann da aber auch gleich die Foren-Gruppen verwenden, das sind dann nur andere Tabellen.

Der Plan ist, dass ein USERNAME im Forum vorhanden ist und damit ein Passwort hat. Dieses Passwort fragen wir dann ab. Wenn das zusammenpaßt muß der User aber auch noch einer Gruppe sein, die in TAB festgelegt ist.
 
4.1 phpbb2
In phpbb2 ist das relativ einfach, die Passworte kann da sofort von mod_auth_mysql genutzt werden - als MD5 werden diese abgelegt.

<IfModule mod_auth_mysql.c>
 AuthName "JS-Home.ORG Wissen"
 AuthType Basic
 AuthBasicAuthoritative Off
 AuthMySQLHost localhost
 AuthMySQLUser mysql
 AuthMySQLPassword geheim
 AuthMySQLDB forum

 AuthMySQLUserTable phpbb_users
 AuthMySQLNameField username
 AuthMySQLPasswordField user_password
 AuthMySQLUserCondition "user_active=1"
 AuthMySQLPwEncryption md5
 AuthMySQLAuthoritative On
 AuthMySQLGroupField gruppe
 AuthMySQLGroupTable TAB
 require group wissenadmin
</IfModule>


Die meisten Parameter dürften selbsterklärend sein. Per user_active=1 prüfen wir noch, ob der User auch bereits freigeschaltet ist. Die Gruppe "wissenadmin" muß in der Spalte "gruppe" der Tabelle TAB stehen. Die Spalte "username" muß dann den Usernamen enthalten, der auch vorher in "phpbb_users" in "username" stand. "user_password" enthalt bei phpbb2 das Passwort in MD5, was über AuthMySQLPwEncryption festgelegt wird.
 
4.2 phpbb3
In phpbb2 war das relativ einfach, die Passworte konnten da sofort von mod_auth_mysql genutzt werden - MD5 waren diese abgelegt. Bei phpbb3 ist das nun anders.

Zuerst gilt es einen von mir entwickelten Patch aus den Quellcode anzuwenden und dann neu zu kompilieren.
 
4.2.1 Modul patchen
  • Patch runterladen: modauthmysql.diff (6 KB, 23-06-2008, more than 300 downloads)
  • Patch draufspielen: patch -p0 <modauthmysql.diff im entpackten Verzeichnis
  • kompilieren: apxs -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c && apxs -i mod_auth_mysql.la


Danach sollte das Modul aktualisiert am richtigen Ort liegen.
 
4.2.2 Konfigurieren

In phpbb2 ist das relativ einfach, die Passworte kann da sofort von mod_auth_mysql genutzt werden - als MD5 werden diese abgelegt.

<IfModule mod_auth_mysql.c>
 AuthName "JS-Home.ORG Wissen"
 AuthType Basic
 AuthBasicAuthoritative Off
 AuthMySQLHost localhost
 AuthMySQLUser mysql
 AuthMySQLPassword geheim
 AuthMySQLDB forum

 AuthMySQLUserTable phpbb3_users
 AuthMySQLNameField username
 AuthMySQLPasswordField user_password
 AuthMySQLPwEncryption phpbb3
 AuthMySQLAuthoritative On
 AuthMySQLGroupField gruppe
 AuthMySQLGroupTable TAB
 require group wissenadmin
</IfModule>


Die meisten Parameter dürften selbsterklärend sein. Den Schalter user_active=1 gibt es in phpbb3 so nicht mehr. Die Gruppe "wissenadmin" muß in der Spalte "gruppe" der Tabelle TAB stehen. Die Spalte "username" muß dann den Usernamen enthalten, der auch vorher in "phpbb3_users" in "username" stand. "user_password" enthalt bei phpbb3 das Passwort in irgendwas komischem, was über AuthMySQLPwEncryption festgelegt wird. Der Parameter "phpbb3" kommt durch den Patch neu hinzu.





All actions are logged, copyright © JS