Paßwortschutz für Webseiten mit PostgreSQL
Die einzige Möglichkeit, eine Website mit einem Paßwortschutz zu versehen
bestand früher darin, mit htpasswd
Paßwort-Dateien anzulegen
und die Berechtigungen in Dateien zu konfigurieren. Das ist schon lange
nicht mehr state-of-the-art. Heutzutage liegen die Berechtigungen
in einer Datenbank und werden dort bequem online verwaltet.
Für den Webserver Apache gibt es dazu die Module
mod_auth_mysql
und mod_auth_pgsql
. Beide Module
funktionieren ähnlich. In der Datei ».htaccess« bzw. in der Konfiguration
des Webservers werden jeweils die Datenbank, die Tabellen und die Spalten
sowie ggf. WHERE-Klauseln definiert.
AuthName NAME AuthType BasicAuth_PG_user USER Auth_PG_pwd PASS Auth_PG_database DB Auth_PG_pwd_table htpasswd Auth_PG_grp_table htgroup Auth_PG_uid_field login Auth_PG_pwd_field passwd Auth_PG_pwd_whereclause "AND enabled = 'true'" Auth_PG_grp_user_field login Auth_PG_grp_group_field gid
<Limit GET POST PUT HEAD> require group webaccess </Limit>
Prinzipiell sieht die Konfiguration für die Authentifizierung gegen eine PostgreSQL-Datenbank wie oben aus. Mit Hilfe der WHERE-Klauseln lassen sich die Berechtigungen leichter regeln als über Dateien. Accounts müssen nicht gleich gelöscht werden, sondern können erst einmal deaktiviert werden, wenn ein Nutzer keinen Zugriff mehr auf bestimmte Bereiche erhalten soll.
AuthBasicAuthoritative Off AuthUserFile /dev/null
Leider pfuscht in das System allerdings der herkömmliche Mechanismus für
die Authentifizierung von Webseiten und die Paßwörter werden immer noch mit
einer Datei vergleichen. Bei beiden Modulen ist es daher erforderlich
diese beiden Zeilen ebenfalls in die Konfigurationsdatei zu schreiben und
damit den bisherigen Mechanismus zu deaktivieren. Die Paßwortdatei muß
zudem unbedingt auf /dev/null
gesetzt werden.
Eigentlich sollte die Option Auth_PG_authoritative
(bzw. Auth_MySQL_Authoritative
beim Modul für MySQL), die auch
voreingestellt ist, ausreichen. Das ist leider nicht der Fall und die
Dokumentation schweigt sich dazu auch aus. Wenn man das nicht weiß, sucht
man sich leicht einen Wolf.