Frage

Ich habe bereits eine Benutzerdatenbankdatei unter Verwendung von Apache htpasswd Kommando erstellt. Diese Datei wird nun von mehreren anderen Anwendungen wie Apache und Subversion verwendet.

Benutzer in werden wie folgt erstellt:

htpasswd /path/to/users.htpasswd peter

Diese Benutzerdatei ist global, nicht pro Verzeichnis.

Wie kann ich Tomcat machen 6 verwenden diese gleiche Datei als Sicherheitsbereich?

War es hilfreich?

Lösung

Es gibt zwei Möglichkeiten:

  1. Verwenden Apache als Frontend zum tomcat (entweder mit oder mod_jk mod_proxy_ajp) und der Apache tun, um die Authentifizierung. Sie können Informationen finden, wie dies zu tun hier

  2. Wenn Sie die tomcat wollen die Authentifizierung tun, dann müssen Sie ot Verwendung etwas anderes als die htpasswd-Datei. Es gibt 4 Möglichkeiten, um die Anmeldeinformationen des Benutzers zu speichern - mit Datenbank, JNDI / LDAP, eine XML-Datei oder einen JAAS-Provider. Sie können über alle Optionen in der Realm-Konfiguration HOW-TO .

Andere Tipps

Die meisten ähnlich der htpasswd sein kann der MemoryRealm . Ich hatte Probleme, mir ein einfaches Beispiel zu finden, wie es zu benutzen, so dass ich einen einfachen Beispiel-Code hier posten:

  1. eine Rolle, Benutzername und Passwort in tomcat-users.xml einrichten

  2. Ihre web.xml sollte so etwas wie enthalten:

       <security-constraint>
         <web-resource-collection>
          <web-resource-name> 
            My Protected WebSite 
          </web-resource-name>
          <url-pattern> /* </url-pattern>
          <http-method> GET </http-method>
          <http-method> POST </http-method>
        </web-resource-collection>
        <auth-constraint>
        <!-- the same like in your tomcat-users.conf file -->
          <role-name> test </role-name>
        </auth-constraint>
      </security-constraint>
       <login-config>
        <auth-method> BASIC </auth-method>
        <realm-name>  Basic Authentication </realm-name>
      </login-config>
      <security-role>
        <description> Test role </description>
        <role-name> test </role-name>
      </security-role>
    
  3. Fügen Sie diese auf Ihrer server.xml-Datei:

    <Realm className="org.apache.catalina.realm.MemoryRealm"></Realm>
    

Um den Zugriff auf Tomcat Webapp zu sichern, können Sie Ihre einfache Sicherheitsbedingung (zum Beispiel in /var/lib/tomcat7/webapps/*/WEB-INF/web.xml) implementieren, wie unten (nur es hinzufügen, bevor </web-app> Endung):

<!-- This security constraint protects your webapp interface. -->
<login-config>
  <!-- Define the Login Configuration -->
  <auth-method>BASIC</auth-method>
  <realm-name>Webapp</realm-name>
</login-config>
<security-constraint>
  <web-resource-collection>
    <web-resource-name>Admin</web-resource-name>
    <url-pattern>/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>*</role-name>
  </auth-constraint>
  <!-- Specifying a Secure Connection -->
  <user-data-constraint>
    <!-- transport-guarantee can be CONFIDENTIAL (forced SSL), INTEGRAL, or NONE -->
    <transport-guarantee>NONE</transport-guarantee>
  </user-data-constraint>
</security-constraint>
<!-- Authorization, see: tomcat-users.xml --> 
<security-role>
  <role-name>*</role-name>
</security-role>
  

Das Login-config-Element enthält das auth-method Element, welches das Authentifizierungsverfahren spezifiziert, die wir verwenden, die BASIC ist. Das security-constraint Element enthält 3 Elemente: web-resource-collection, auth-constraint und user-data-constraint. Die Web-Ressource-Sammlung legt die Teile unserer Anwendung, die eine Authentifizierung erfordern. Die /* zeigt an, dass die gesamte Anwendung eine Authentifizierung erforderlich ist. Die Auth-Einschränkung gibt die Rolle, die ein Benutzer zu haben, um benötigt, um die geschützten Ressourcen zugreifen. Die Benutzer-Daten-Constraint Verkehrs-Garantie kann NONE, CONFIDENTIAL oder INTEGRAL werden. Wir setzen ihn auf NONE, was bedeutet, dass zu SSL Umleitung ist nicht erforderlich, wenn Sie versuchen, auf die geschützte Ressource zu treffen.

Auch stellen Sie sicher, dass Sie haben Zeile:

<Realm className="org.apache.catalina.realm.MemoryRealm" />

in Ihrem conf/server.xml (Engine Abschnitt).

Wenn Sie keine Konfigurationsdateien geändert haben, die Datei conf/tomcat-users.xml in Ihrer Installation (locate tomcat-users.xml) untersuchen. Diese Datei muss die Anmeldeinformationen enthalten, um Sie Tomcat Webapp verwenden zu lassen.

Um zum Beispiel die Manager-gui Rolle an einen Benutzer namens tomcat mit einem Passwort von s3cret hinzufügen möchten, fügen Sie den folgenden auf die Config-Datei oben aufgeführten:

<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>

Dann können Sie Ihre Webapps Manager zugreifen /manager/html (z nach Konfigurationsänderungen neu zu laden).

Lesen Sie mehr: -Manager-App HOW-TO <. / p>

Dann starten Sie Ihren Tomcat und wenn Ihre Webapp Zugriff, sollte es Sie für die richtigen Anmeldeinformationen fragen.

Siehe auch:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top