2016-04-15 4 views
0

Kann mir jemand helfen, dieses Problem zu diagnostizieren?Tomcat 7: falscher Realm wird benutzt?

In server.xml, ich habe zwei Bereiche

definiert
<Engine name="Catalina" defaultHost="localhost"> 
    <Realm className="org.apache.catalina.realm.LockOutRealm"> 
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> 
    </Realm> 
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployIgnore="^welcome.*"> 
    <Realm className="org.apache.catalina.realm.LockOutRealm" failureCount="3" lockOutTime="3600"> 
     <Realm className="org.apache.catalina.realm.JDBCRealm" driverName="org.postgresql.Driver" connectionURL="jdbc:postgresql://localhost:5432/tomcat" connectionName="tomcat" connectionPassword="xxxxx" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name"/> 
    </Realm> 
    </Host> 
</Engine> 

Ich erwarte die JDBCRealm Vorrang vor der UserDatabaseRealm zu nehmen. Eine Webanwendung mit einem Verzeichnis direkt innerhalb von Webapps ohne die Datei META-INF/context.xml authentifiziert sich jedoch gegenüber UserDatabaseRealm.

Der entsprechende Abschnitt der genannten WEB-INF/web.xml sieht die Anwendung wie folgt aus:

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>public</web-resource-name> 
    <url-pattern>/public/*</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>My Realm</web-resource-name> 
    <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>test_role</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
    <form-login-page>/public/login.xhtml</form-login-page> 
    <form-error-page>/public/login-failed.xhtml</form-error-page> 
    </form-login-config> 
</login-config> 

Die JDBCRealm funktioniert für bestimmte Anwendungen, wenn ich es in dieser Anwendung der META-INF/context.xml erklären

Stimmt etwas nicht?

Antwort

0

Nicht wirklich eine Antwort, aber meine Tomcat-Installation funktioniert jetzt so, wie ich es erwarten würde, in Bezug darauf, welchen Realm jede Webanwendung verwendet.

Für was es wert ist, das einzige, was ich anders gemacht habe, war das Projekt lokal in Eclipse bearbeiten & den Krieg erneut hochladen. Zuvor hatte ich in-situ auf dem Tomcat-Server & bearbeitet und dann den Dienst neu gestartet.

Ich gehe davon aus, dass alle Tomcat-Konfiguration von Null auf einen Dienst neu gestartet wird, so weiß ich nicht, warum ich das vorherige Verhalten sah.