Passwortgeschützte Verzeichnisse
Wir haben ja bereits Content vor neugierigen Usern durch Sessionobjekte und Filter geschützt. Dieses Verfahren ist zu empfehlen, wenn Sie eine Vielzahl von Usern mit unterschiedlichen Benutzernamen und Kennwörtern haben.
Wir lernen nun einen Passwortschutz kennen, der im Wesentlichen dem entspricht, was Sie bei Apache mit .htaccess machen können, also einen Zugriff für dem System bekannte User oder Gruppen von Usern. Bei diesem Verfahren sendet der Browser mit jedem Request einen Authorization-Header.
Die dem Tomcat bekannten User werden in der Datei CATALINA_HOME/conf/tomcat-users.xml gespeichert, was ungefähr so aussieht:
tomcat-users.xml
Wie Sie sehen, werden zunächst einige Roles, das sind im Grunde Usergruppen, definiert. Angegeben wird der Name, wobei die Namen hier Schall und Rauch sind. Die Definition der Rechte der roles geschieht implizit über die Rechte, die wir ihnen zuteilen. Die Rolle „admin“ hat hier also nicht mehr Rechte als die Rolle „tomcat“.
Es folgen dann einige Usernamen mit Passwort (im Klartext) und der Rolle, die man ihnen zubilligt. Sie können diese Einträge editieren und ihren Bedürfnissen anpassen; damit Änderungen wirksam werden, sollten Sie anschliessend den Server neu starten.
Passwortgeschützte Bereiche definieren wir im Deployment-Descriptor am Ende der Datei nach der error-page. Die Direktive nennt sich security-constraint:
/WEB-INF/web.xml
users org.apache.catalina.UserDatabase
/WEB-INF/web.xml
Protected Area /bsp/kap4/secret/* admin
Sie erkennen drei Element: Zunächst wird mit <resource-env-ref> der Bezug zu der oben gezeigten tomcat-useres.xml hergestellt. Die <web-resource-collection> beschreibt das geschütze Verzeichnis. Hier geben Sie einen obligatorischen Namen an sowie das Verzeichnis, das Sie schützen wollen. Das zweite Element auth-constraint nennt die role, die ein User haben muss, damit ihm Zutritt gewährt wird.
Als zweites konfigurieren wir den Login. BASIC ist die einfache Methode, die den Browser veranlasst, das bekannte Popup zur Abfrage von Username und Passwort zu öffnen. Der realm ist eine Bezeichnung des geschützten Bereichs, der dem User angezeigt wird:
WEB-INF/web.xm
BASIC Unser Secret Bereich
Wenn Ihnen das zu spartanisch erscheint, können Sie auch eine JSP als Eingabeseite bestimmen. Ersetzen Sie dazu den <login-config> Eintrag durch:
WEB-INF/web.xml
FORM /bsp/kap4/passwd.jsp /bsp/kap4/passwd_error.jsp
Das HTML Formular muss hierzu bestimmte Namen und Actionen ausführen. Bitte beachten Sie dazu: passwd.jsp passwd_error.jsp. Dieses Beispiel ist nicht installiert. Wenn Sie dieses Beispiel ausprobieren möchten, ersetzen Sie den login-conf -Eintrag in der web.xml durch den oben gezeigten, starten Sie den Server neu.