Aktuell bin ich damit beschäftigt, ein (oder mehrere) Verzeichnisse, die unterhalb eines Apache-DocumentRoot liegen, mit einem Password zu schützen.
Es handelt sich hierbei, wie in den vorherigen Artikeln beschrieben (Teil 1 und Teil 2), um gemountete Windows-Freigaben.
Da ich nicht möchte, dass in den Freigaben selbst eine .htaccess zur Authentifizierung liegt, habe ich nach einer Möglichkeit gesucht, einen Passwortschutz auf Apache-Konfigurationslevel zu erstellen.
Die Lösung nennt sich Digest Authentification.
Probleme während des SetUps
Ich bin bei der Durchführung auf mehrere Probleme gestoßen, die ich nachfolgend erläutern werde:
- Invalid command ‚AuthDigestFile‘, perhaps misspelled or defined by a module not included in the server configuration
- Trotz (gedacht) korrekten Einstellungen, ist eine Authentifizierung mit hinterlegten Benutzerdaten am Share per Browser nicht möglich; die Anmeldedaten scheinen falsch.
Vorraussetzungen
Es wird ein Apache Webserver (in meinem Fall Version 2.2.3) mit korrekter Konfiguration benötigt.
auth_digest Modul laden
Das Modul „auth_digest“ muss am Webserver aktiviert werden. Bei Debian funktioniert das mit dem Programm „a2enmod“ sehr einfach:
1 |
a2enmod auth_digest |
Erstellen von Benutzerdatei
Zur Authentifizierung muss eine Datei (ähnlich der .htpasswd) angelegt werden, die die Benutzer beinhaltet, die Zugriff auf ein „Browser-Share“ erhalten sollen. Diese lässt sich wie folgt erstellen:
1 2 |
htdigest -c pfadzurdatei realm benutzer htdigest -c /var/www/htdocs/website/.authfile wiki testnutzer |
Das Realm bezeichnet in diesem Fall eine Zugehörigkeit zur Website. Es ist darauf zu achten, diese Angabe sinngemäß zu treffen!
Konfigurationsdatei der Website anpassen
Nun muss die entsprechende Apache2-Konfigurationsdatei der Website editiert werden. Diese liegen bei Debian unter:
1 |
/etc/apache2/sites-available |
Die bestehende Datei sah bei mir folgendermaßen aus:
1 2 3 4 5 |
<VirtualHost wiki> ServerName wiki DocumentRoot /var/www/htdocs/wiki IndexOptions +FancyIndexing +FoldersFirst </VirtualHost> |
Sie wurde um den Eintrag zur Digest-Protection folgendermaßen abgeändert:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost wiki> ServerName wiki DocumentRoot /var/www/htdocs/wiki IndexOptions +FancyIndexing +FoldersFirst <Location /Puffer> AuthType Digest AuthName "wiki" AuthDigestDomain /Puffer/ /Info/ AuthDigestProvider file AuthUserFile /var/www/htdocs/.authfile Require valid-user </Location> </VirtualHost> |
Wichtig ist hierbei, dass:
- „AuthName“ = dem beim Benutzer angegebenem „Realm“ entspricht. Sonst schlägt die Authentifizierung fehl!
- AuthUserFile anstatt AuthDigestFile verwendet wird – ansonsten tritt der initial genannte Fehler auf. Hier nachzulesen.
- Wie oben zu sehen, kann bei „Require“ auch ein oder mehrere einzelne Benutzer angegeben werden. Bei valid-user sind alle Benutzer in der Passwortdatei für den Zugriff freigeschaltet.
- AuthDigestDomain kann mit mehreren Angaben umgehen – wie oben zu sehen. Zusätzlich könnten auch Angaben wie „/Puffer/ /Info/ http://wiki/Puffer“ gelten.
Nach einem Neustart des Apache’s greifen die getätigten Einstellungen und können bei einem ersten Test überprüft werden:
1 |
/etc/init.d/apache2 force-reload |
Wirft der Indianer hierbei Fehlermeldungen aus, sollte man zum einen die Fehlermeldung genauer analyieren oder einen Blick in die Apache-Logs werfen, die äußerst Hilfreich bei Problemen sind !!
Diese finden sich unter Debian hier:
1 2 3 |
tail -f /var/log/apache2/access.log # oder tail -f /var/log/apache2/error.log |