WebDAV mit Apache

Seite 2: Benutzerverwaltung

Inhaltsverzeichnis

Die Digest-Authentifizierung ist in der Dokumentation derzeit noch als experimentell gekennzeichnet, funktioniert aber trotzdem schon sehr zuverlässig. Bei diesem Verfahren wird ein MD5-Hash des Kennwortes übertragen; leider unterstützen die meisten WebDAV-Clients es nicht.

Damit bleibt die Basic-Authentifizierung als universelles Verfahren übrig. Da es bereits in HTTP 1.0 spezifiziert wurde, kommen alle Web-Browser und WebDAV-Clients damit zurecht.

Bei der Basic-Authentifizierung fordert der Webserver vom Browser Benutzerkennung und Kennwort an. Sie werden unverschlüsselt als BASE64-kodierter String übertragen. Damit den nicht jeder Interessierte mitlesen und dekodieren kann, sollte man unbedingt SSL einsetzen, um die Authentifizierung sowie die Nutzdaten verschlüsselt zu übertragen. Dazu später mehr.

Die einfachste Form der Basic-Authentifizierung bietet das Modul mod_auth, das Benutzernamen und Passwörter aus einer Textdatei entnimmt. Sie sollte sich aus Sicherheitsgründen nicht unterhalb von DocumentRoot oder in einem Verzeichnis befinden, das über Apache im Zugriff ist. Das Konfigurationsverzeichnis /etc/apache2 eignet sich gut.

Zum Apache2-Paket gehört auch das Programm htpasswd (oder htpasswd2) zum komfortablen Bearbeiten der Passwörter. Mit

htpasswd2 -c /etc/apache2/htpasswd je

legt man die Datei an und trägt dabei gleich den User je ein. Das Programm fragt ein Passwort ab und legt es verschlüsselt ab; unter Windows und Netware als MD5-Hash, unter Unix crypt-verschlüsselt. Zum Anlegen weiterer User oder zum Ändern eines Passwortes in der bestehenden Datei lässt man einfach den Schalter -c (wie create file) weg.

Will man mehrere Verzeichnisse mit unterschiedlichen Berechtigten definieren, so sollte man die Benutzer in Gruppen organisieren. Hierzu ist nur eine einfache Textdatei notwendig, die pro Zeile eine Gruppendefinition im Format "gruppenname: user1 user2 user3" enthält.

Aktiviert wird die Basic-Authentifikation über den Eintrag "AuthType Basic" im Directory- oder Location-Block. Mit der Direktive AuthName definiert man einen Text, den die meisten WebDAV-Clients dem Benutzer in der Anmeldedialogbox anzeigen.

"AuthUserFile pfad/datei" und "AuthGroupFile pfad/datei" legt die Benutzer/Kennwort- und Gruppendefinitionsdateien fest. Relative Pfade bei diesen Direktiven beziehen sich auf das Verzeichnis ServerRoot. Da die Auth-Direktiven im Directory-Block stehen, beziehen sie sich nur auf diese eine Freigabe. Prinzipiell kann der Webmaster für jede Freigabe unterschiedliche Zugriffsrechte setzen. Um mehrere denselben Benutzern zugänglich zu machen, gibt er einfach dieselben Benutzer- und Gruppendateien an.

Ein Nachteil von mod_auth und der Speicherung von Benutzern in einer Textdatei ist, dass die Performance dieses Moduls bei mehreren hundert Einträgen massiv einbricht. Dann bietet sich das Modul mod_auth_dbm an, welches die Benutzer und Gruppen in einer Datenbank ablegt.

Unabhängig von der Authentifizierungsmethode werden Zugriffsberechtigungen innerhalb der Directory-Direktive festgelegt. Dazu dient das Schlüsselwort Require: "Require valid-user" legt fest, dass alle definierten Benutzer nach erfolgreicher Anmeldung zugreifen dürfen. Um nur ausgewählten Benutzern Zugriff zu gewähren, trägt der Admin sie statt valid-user in die Require-Direktive ein, zum Beispiel "Require user je sfi". Entsprechend gewährt er mit "Require group editors users" den beiden genannten Gruppen WebDAV-Zugriff auf das Verzeichnis.

Soll jeder auf ein Verzeichnis lesend zugreifen können und nur diejenigen sich authentifizieren müssen, die in das Verzeichnis schreiben, verpackt man die Require-Anweisung in eine LimitExcept-Direktive:

<LimitExcept GET>
Require valid-user
</LimitExcept>

Das ist beispielsweise für Verzeichnisse auf einem öffentlichen Webserver sinnvoll, in die der Webdesigner per WebDAV seine Seiten schreiben soll.