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?