Ich habe Zugriff auf den Tomcat-Manager und kann Kriegsdateien hochladen. Einer dieser Kriege ist ein statisches Webprojekt (gezipptes HTML + Mediendateien, umbenannt in * .war). Ich möchte eine Web-INF / web.xml-Datei zu diesem Krieg hinzufügen, um den Inhalt mit grundlegenden HTTP-Auth zu schützen.
Ich weiß, wie man das tut, indem man globale Benutzer hinzufügt und Rollen in tomcat-users.xml
zuweist, aber ich möchte, dass alle Benutzernamen und Passwörter in meiner WAR-Datei definiert sind.
tomcat-users.xml
? web.xml
? Thx, Juve
Ich habe hier eine Lösung gefunden: Ссылка
Die Seite beschreibt, wie Sie Ihre eigene META-INF/context.xml
definieren, die auf Ihre eigene WEB-INF/users.xml
verweist. Leider muss die Verbindung zur Datei users.xml absolut sein, und ich möchte keine Annahmen über die OS / Dateisystempfade in meinen Konfigurationsdateien machen.
Hier ist meine aktuelle WEB-INF/web.xml
:
Ein passendes META-INF/context.xml
würde so aussehen:
Wenn Sie das Verzeichnis kennen, in dem tomcat alle bereitgestellten Anwendungen ablegt, können Sie relative Pfade verwenden (weil sie in Bezug auf catalina.base env.variable, d. h. tomcat home, aufgelöst werden).
Wenn Sie z. B. mit der Eclipse-IDE bereitstellen, werden Apps normalerweise in wtpwebapps bereitgestellt. Sie können also Folgendes verwenden:
%Vor%Noch nicht perfekt, aber zumindest benutzt du keine vollständigen Pfade.
Eine Alternative wäre, ein eigenes Realm zu implementieren, das MemoryRealm erweitert und den Pfadnamen vor dem Aufruf von super.setPathname ();
vorverarbeitetSie können auch einen DataSourceRealm verwenden, der dieses Problem nicht aufweist und für die Produktion geeignet ist.
Für den Servlet-Container-unabhängigen Ansatz können Sie ein Sicherheits-Framework verwenden, das auf Filtern basiert (z. B. Spring-Sicherheit, ...)
Tags und Links tomcat http-authentication web.xml