| Apache, HTTP-AUTH, MySQL und PHPBB3 |
| 2008-06-23 | Jürgen Schmitz |
| Eine kurze Beschreibung, wie man mod_auth_mysql mit phpbb2 und phpbb3 nutzt. |
|
| 1 | Was ist nötig? |
| 2 | Was wird gemacht? |
| 3 | Modul bauen |
| 4 | Modul 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.
|
|
|