Hallo,
Ich hoffe mir kann hier jemand helfen, da ich zur Zeit nicht mehr weiterkomme...
Mein Ziel ist über ein LoginModule in Kombination mit einem JAASRealm user für den Zugriff auf eine Webapplikation(JSP) zu authentifizieren.
Als Entwicklungsumgebung benutzte ich Eclipse 3.0 in Kombination mit Tomcat 5.0.30
Ich kann über den local Host bereits auf die Seiten der Webapp zugreifen und die Authentifizierung an sich funktioniert grundsätzlich auch. (User sind in DB vorhanden und ich kann mich über ein Startupservlet direkt authentifizieren.)
Das Login über die Oberfläche der Webapp an sich funktioniert jedoch leider nicht.
Der Ablauf ist dabei wie folgt vorgesehen:
Nach Aufruf der index.jsp soll sich ein user als customer oder admin einloggen können, indem er entweder einen Link für customer oder den Link für admin betätigt.
(Diese Links würden ohne den Einsatz des Login Modules bzw. eines Filters direkt zu der entsprechenden Seite führen.)
Da aber in der web.xml Security constraints festgelegt sind, muss der User sich erst über eine Loginform identifizieren.
Diese Loginform dient als Eingabe zur Ausführung der "j_security_check" action welche die Identifizierung übernimmt und anschliessend an die ursprünglich angefragte Seite weiterleiten soll bei erfolgreicher Identifizierung.
Mein Problem ist nun, dass ich nach Betätigung des links und Eingabe der gültigen Daten in das Form nicht mehr auf die ursprünglich angeforderte Seite weitergeleitet werde. (Wenn ich die security constraints auskommentiere klappt dieses).
Da die "j_security_check action" ja standardmäßig definiert ist hab ich keine Idee wie mein Einfluß auf die Weiterleitung zur richtigen Seite nehmen kann. Das Mapping gemaess Web.xml besteht ja bereits in richtiger Form, sonst würde es ohne Security constraints ja auch nicht hinhauen....?
Nachfolgender der relevante Code:
WEB.XML
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>jaas-book</display-name>
<description>JAAS Book, Chapter 9</description>
<filter>
<filter-name>authentication-filter</filter-name>
<filter-class>model.AuthenticationFilter</filter-class>
<init-param>
<param-name>app-name</param-name>
<param-value>chp09</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>authentication-filter</filter-name>
<url-pattern>/j_security_check</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>controller.StartupServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<servlet-name>Login</servlet-name>
<jsp-file>/view/login.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>Customer</servlet-name>
<jsp-file>/view/customer/index.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>Admin</servlet-name>
<jsp-file>/view/admin/index.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>Index</servlet-name>
<jsp-file>/view/index.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>Logout</servlet-name>
<jsp-file>/view/logout.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Customer</servlet-name>
<url-pattern>/customer</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Logout</servlet-name>
<url-pattern>/logout</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Index</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/view/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>403</error-code>
<location>/access-denied.jsp</location>
</error-page>
<taglib>
<taglib-uri>auth-tags</taglib-uri>
<taglib-location>/WEB-INF/tlds/auth-tags.tld</taglib-location>
</taglib>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin Page (Chp09)</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Customer Page (Chp09)</web-resource-name>
<url-pattern>/customer/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>customer</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>chp09 Realm</realm-name>
<form-login-config>
<form-login-page>/view/login.jsp</form-login-page>
<form-error-page>/view/login-error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>
Role required to see admin pages.
</description>
<role-name>admin</role-name>
</security-role>
<security-role>
<description>
Role required to see customer pages.
</description>
<role-name>customer</role-name>
</security-role>
</web-app>
JAASREALM:
<Realm className="org.apache.catalina.realm.JAASRealm"
appName="chp09"
userClassNames="model.UserPrincipal"
roleClassNames="model.UserGroupPrincipal"
useContextClassLoader="false"/>
</Context>
INDEX.JSP:
<%@ taglib uri="auth-tags" prefix="auth" %>
<html>
<head><title>Index</title></head>
<body>
<a href="admin">Admin Page</a> |
<a href="customer">Customer Page</a> |
<a href="logout">Logout</a>
<auth:roles roles="customer">
<p>Only the <b>customer</b> role sees this.</p>
</auth:roles>
<auth:roles roles="admin,superadmin">
<p>Only the <b>admin</b> role sees this.</p>
</auth:roles>
<p>Principals: <%= request.getUserPrincipal() %>.</p>
</body>
</html>
LOGIN.JSP (FORM)
<html>
<head><title>Login</title></head>
<link rel="stylesheet" href="<%= request.getContextPath() %>/style.css"/>
<body>
<form method="POST" action="<%= request.getContextPath() %>/j_security_check">
<p>Username: <input type="text" name="j_username"/></p>
<p>Password: <input type="password" name="j_password"/></p>
<input type="submit" value="Login"/>
</form>
</body>
</html>
Ich hoffe mir kann hier jemand helfen, da ich zur Zeit nicht mehr weiterkomme...

Mein Ziel ist über ein LoginModule in Kombination mit einem JAASRealm user für den Zugriff auf eine Webapplikation(JSP) zu authentifizieren.
Als Entwicklungsumgebung benutzte ich Eclipse 3.0 in Kombination mit Tomcat 5.0.30
Ich kann über den local Host bereits auf die Seiten der Webapp zugreifen und die Authentifizierung an sich funktioniert grundsätzlich auch. (User sind in DB vorhanden und ich kann mich über ein Startupservlet direkt authentifizieren.)
Das Login über die Oberfläche der Webapp an sich funktioniert jedoch leider nicht.
Der Ablauf ist dabei wie folgt vorgesehen:
Nach Aufruf der index.jsp soll sich ein user als customer oder admin einloggen können, indem er entweder einen Link für customer oder den Link für admin betätigt.
(Diese Links würden ohne den Einsatz des Login Modules bzw. eines Filters direkt zu der entsprechenden Seite führen.)
Da aber in der web.xml Security constraints festgelegt sind, muss der User sich erst über eine Loginform identifizieren.
Diese Loginform dient als Eingabe zur Ausführung der "j_security_check" action welche die Identifizierung übernimmt und anschliessend an die ursprünglich angefragte Seite weiterleiten soll bei erfolgreicher Identifizierung.
Mein Problem ist nun, dass ich nach Betätigung des links und Eingabe der gültigen Daten in das Form nicht mehr auf die ursprünglich angeforderte Seite weitergeleitet werde. (Wenn ich die security constraints auskommentiere klappt dieses).
Da die "j_security_check action" ja standardmäßig definiert ist hab ich keine Idee wie mein Einfluß auf die Weiterleitung zur richtigen Seite nehmen kann. Das Mapping gemaess Web.xml besteht ja bereits in richtiger Form, sonst würde es ohne Security constraints ja auch nicht hinhauen....?
Nachfolgender der relevante Code:
WEB.XML
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>jaas-book</display-name>
<description>JAAS Book, Chapter 9</description>
<filter>
<filter-name>authentication-filter</filter-name>
<filter-class>model.AuthenticationFilter</filter-class>
<init-param>
<param-name>app-name</param-name>
<param-value>chp09</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>authentication-filter</filter-name>
<url-pattern>/j_security_check</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>controller.StartupServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<servlet-name>Login</servlet-name>
<jsp-file>/view/login.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>Customer</servlet-name>
<jsp-file>/view/customer/index.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>Admin</servlet-name>
<jsp-file>/view/admin/index.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>Index</servlet-name>
<jsp-file>/view/index.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>Logout</servlet-name>
<jsp-file>/view/logout.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Customer</servlet-name>
<url-pattern>/customer</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Logout</servlet-name>
<url-pattern>/logout</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Index</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/view/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>403</error-code>
<location>/access-denied.jsp</location>
</error-page>
<taglib>
<taglib-uri>auth-tags</taglib-uri>
<taglib-location>/WEB-INF/tlds/auth-tags.tld</taglib-location>
</taglib>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin Page (Chp09)</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Customer Page (Chp09)</web-resource-name>
<url-pattern>/customer/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>customer</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>chp09 Realm</realm-name>
<form-login-config>
<form-login-page>/view/login.jsp</form-login-page>
<form-error-page>/view/login-error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>
Role required to see admin pages.
</description>
<role-name>admin</role-name>
</security-role>
<security-role>
<description>
Role required to see customer pages.
</description>
<role-name>customer</role-name>
</security-role>
</web-app>
JAASREALM:
<Realm className="org.apache.catalina.realm.JAASRealm"
appName="chp09"
userClassNames="model.UserPrincipal"
roleClassNames="model.UserGroupPrincipal"
useContextClassLoader="false"/>
</Context>
INDEX.JSP:
<%@ taglib uri="auth-tags" prefix="auth" %>
<html>
<head><title>Index</title></head>
<body>
<a href="admin">Admin Page</a> |
<a href="customer">Customer Page</a> |
<a href="logout">Logout</a>
<auth:roles roles="customer">
<p>Only the <b>customer</b> role sees this.</p>
</auth:roles>
<auth:roles roles="admin,superadmin">
<p>Only the <b>admin</b> role sees this.</p>
</auth:roles>
<p>Principals: <%= request.getUserPrincipal() %>.</p>
</body>
</html>
LOGIN.JSP (FORM)
<html>
<head><title>Login</title></head>
<link rel="stylesheet" href="<%= request.getContextPath() %>/style.css"/>
<body>
<form method="POST" action="<%= request.getContextPath() %>/j_security_check">
<p>Username: <input type="text" name="j_username"/></p>
<p>Password: <input type="password" name="j_password"/></p>
<input type="submit" value="Login"/>
</form>
</body>
</html>