2009-07-06 2 views
6

Ich versuche, eine Ressource in Tomcat zu schützen, so dass nur "gültige Benutzer" (diejenigen mit einem gültigen Login und Passwort im Realm) darauf zugreifen können. Sie gehören nicht unbedingt zu einer Gruppe im Bereich. Ich habe mit vielen Kombinationen die <security-constraint> Direktive ohne Erfolg ausprobiert. Irgendwelche Ideen?Tomcat Sicherheitsbeschränkung für gültigen Benutzer

Antwort

1

Es gibt mehrere Realmimplementierungen in Tomcat - Speicher, Datenbank, JAAS und mehr. Die am einfachsten zu konfigurieren (wenn auch nicht die sichersten) der Speicher ein, die eine einzelne XML-Datei enthält, in der Regel unter conf/tomcat-users.xml:

<tomcat-users> 
    <user name="tomcat" password="tomcat" roles="tomcat" /> 
    <user name="role1" password="tomcat" roles="role1" /> 
    <user name="both" password="tomcat" roles="tomcat,role1" /> 
</tomcat-users> 

Der Bereich Konfiguration ist in dem Kontext, Host oder Motorkonfigurationen, wie folgt aus:

<Realm className="org.apache.catalina.realm.MemoryRealm" 
     pathname="conf/tomcat-users.xml" /> 

Dann wird in der web.xml setzen Sie die folgende Definition:

<security-constraint> 
      <web-resource-collection> 
        <web-resource-name>MRC Customer Care</web-resource-name> 
        <url-pattern>/protected/*</url-pattern> 
      </web-resource-collection> 
      <auth-constraint> 
        <role-name>role1</role-name> 
      </auth-constraint> 
    </security-constraint> 

    <!-- Define the Login Configuration for this Application --> 
    <login-config> 
      <auth-method>DIGEST</auth-method> 
      <realm-name>YOUR REALM NAME</realm-name> 
    </login-config> 

    <security-role> 
      <description> 
       The role that is required to access the application. 
       Should be on from the realm (the tomcat-users.xml file). 
      </description> 
      <role-name>role1</role-name>     
    </security-role> 

der web.xml Teil (mit geringfügigen Änderung) genommen von einem unserer Web ap ps.

+0

In meinem speziellen Umgebung Ich bin Verbindung zu einem LDAP mit dem JNDIRealm. Das Problem ist, dass ich keine Gruppen in die LDAP aufnehmen kann und nur auf der Basis des Benutzernamens und des Passworts ohne jede Rolle authentifizieren muss. Ich habe '' und ' *' ohne Erfolg versucht. – rmarimon

12

Neben der Auth-Constraint Sie auf die Sicherheitseinschränkungs Hinzufügen sind:

<auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 

Sie müssen die Sicherheitsrolle in der Web-App angeben:

<security-role> 
     <role-name>*</role-name> 
    </security-role> 
+0

Ich werde dies versuchen und melden. – rmarimon

+0

Das Hinzufügen des Sicherheitsrollen-Tags war die Lösung für uns. Vielen Dank. –

+0

Gibt es eine Möglichkeit, die Einschränkung außerhalb der web.xml hinzuzufügen? Z.B. Hinzufügen einer Einschränkung für alle Web-Apps zusätzlich zu Realm/Valve in context.xml? – cschooley