# Tomcat j_security_check Weiterleitung zur angeforderten Seit



## markus_r (2. Jun 2008)

Guten Morgen,

ich hoffe mir kann hier jemand helfen.
Ich hab einen Teil meiner Website mit j_security_check geschüzt. Das funktioniert auch super.

Das Szenario ist folgendes :
Eine geschüzte Resource wird angefordert, Tomcat merkt ich bin nicht eingelogt und verweist mich auf "Login.jsp", nach erfolgreichen anmelden werde ich weitergeleitet.

Nur sehe ich keine Seite  hier in dem Beispiel wäre die richtige Url
"http://localhost:8080/jstl/pages/01kundenbereich/"

Ich werde jedoch immer zu:
"http://localhost:8080/jstl/pages/01kundenbereich/img/header.jpg"   geleitet und erhalte einen Fehler, lösche ich
"/img/header.jpg" aus der URL heraus habe ich ganz normal Zugriff auf alle Resourcen.

Meine Web-XML sieht so aus:


```
<security-constraint>
 		<display-name>A Configuration Security Constraint</display-name>
 		
 		<web-resource-collection>
 			  <web-resource-name>Protected Area</web-resource-name>
 	  		  <url-pattern>/pages/01kundenbereich/*</url-pattern>
 		</web-resource-collection>
 	
 		<auth-constraint>
 			  <role-name>kunde</role-name>
 		</auth-constraint>
   </security-constraint>
```


Weiß jemand wie ich das Problem umgehen kann? Das ich nach dem einlogen auf die richtige Site verwiesen werde?

Wenn mehr angaben nötig sind, werd ich die gerne posten

gruß


----------



## ms (2. Jun 2008)

Das ist nur ein Teil der web.xml.
Zeig doch bitte komplette web.xml.

ms


----------



## markus_r (2. Jun 2008)

hier ist die gesamte web.xml



```
?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	      version="2.5">
	<context-param>
		<param-name>javax.faces.CONFIG_FILES</param-name>
		<param-value>/WEB-INF/faces-config.xml</param-value>
	</context-param>
	
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.faces</url-pattern>
	</servlet-mapping>
	s
	<servlet> 
		<servlet-name>Kundendaten_servlet</servlet-name> 
		<servlet-class>de.japanimport.kundenbereich.Kundendaten_servlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Kundendaten_servlet</servlet-name>
		<url-pattern>/pages/01kundenbereich/Kundendaten_servlet</url-pattern>
	</servlet-mapping>
	
	
	
	
	<security-constraint>
 		<display-name>A Configuration Security Constraint</display-name>
 		
 		<web-resource-collection>
 			  <web-resource-name>Protected Area</web-resource-name>
 	  		  <url-pattern>/pages/01kundenbereich/*</url-pattern>
 		</web-resource-collection>
 	
 		<auth-constraint>
 			  <role-name>kunde</role-name>
 		</auth-constraint>
   </security-constraint>
   
   
   <login-config>
 		<auth-method>FORM</auth-method>
 		<realm-name>A Server Configuration Form-Based Authentication Area</realm-name>
 	
 		<form-login-config>
 			 <form-login-page>/login.jsp</form-login-page>
 	 		 <form-error-page>/error.jsp</form-error-page>
 		</form-login-config>
 		
   </login-config>
	
	
	<security-role>
 	<description>
 	  The role that is required to log in to the A Application
 	</description>
 	<role-name>kunde</role-name>
   </security-role>
	
	
</web-app>
```


----------



## ms (2. Jun 2008)

Sieht gut aus.
Ich vermute mal, dass du dieses Image auf einer öffentlichen Seite eingebunden hast.
Eventuell sogar auf der login.jsp?

ms


----------



## markus_r (2. Jun 2008)

ja genau, das image liegt auf einer öffentlichen Seite...
Das Image wird im öffentlichen als auch im privaten Bereich verwendet,.

Ist es möglich das so einzustellen das dies klappt?
Oder muss ich das Image zweimal benutzen?


----------



## maki (2. Jun 2008)

Lege deine Bilder, CSS, JavaScript etc. in einen ungeschützten Bereich.


----------



## ms (2. Jun 2008)

markus_r hat gesagt.:
			
		

> ja genau, das image liegt auf einer öffentlichen Seite...


Nachdem was du oben geschrieben hast es liegt im geschützten Bereich.



			
				markus_r hat gesagt.:
			
		

> "http://localhost:8080/jstl/pages/01kundenbereich/"
> 
> Ich werde jedoch immer zu:
> "http://localhost:8080/jstl/pages/01kundenbereich/img/header.jpg"   geleitet und erhalte einen Fehler, lösche ich
> "/img/header.jpg" aus der URL heraus habe ich ganz normal Zugriff auf alle Resourcen.



ms


----------



## markus_r (2. Jun 2008)

@maki

das bild liegt ja in einem ungeschüzten bereich

@ms
du hast recht, das kann man falsch verstehen, das bild liegt in
"<hauptverzeichnis>/img/"

j_security_check leitet mich auf
"http://localhost:8080/jstl/pages/01kundenbereich/img/header.jpg" um. Dort liegt kein image und den Ordner gibt es auch nicht, ich erhalte also ein 404.


----------



## maki (2. Jun 2008)

> @maki
> 
> das bild liegt ja in einem ungeschüzten bereich


Nö, tut es dank deiner Konfiguration eben nicht:

```
<security-constraint>
      <display-name>A Configuration Security Constraint</display-name>
      
      <web-resource-collection>
           <web-resource-name>Protected Area</web-resource-name>
             <url-pattern>/pages/01kundenbereich/*</url-pattern>
      </web-resource-collection>
   
      <auth-constraint>
           <role-name>kunde</role-name>
      </auth-constraint>
   </security-constraint>
```
Alles unter /pages/01kundenbereich ist geschützt.

Nachtrag: Du setzt bestimmt deine URL falsch zusammen, so das der Browser versucht unter /pages/01kundenbereich/img dein Bild zu laden.


----------



## Gast (2. Jun 2008)

Der Ordner "/pages/01kundenbereich/*" soll auch geschüzt sein.
Die JSP die in dem Ordner sind greifen aber auf ein Image zu, welches außerhalb dieses geschüzten Bereichs liegt.

Wenn ich auf die Seiten inerhalb von "/pages/01kundenbereich/" zugreife seh ich die Site, wie sie sein soll, mit diesem eingebundenen Image.


----------

