JSF + SpringSecurity Problem

haf_blade

Mitglied
Hallöle

ich bin jetzt seit Tagen mit einem Problem beschäftigt und finde den Fehler einfach nicht.
Hab extra en Buch, einen ganzen Haufen Tutorials und Foren zu rate gezogen aber ich weiß einfach nicht mehr weiter.

Und zwar folgendes:
Ich habe eine Web-Application mit Spring, JSF und RichFaces aufgebaut. Das Ganze läuft auf einem Tomcat. Bisher hat alles wunderbar geklappt jedoch möchte ich jetzt "Spring Security" verwenden um bestimmte Seiten für nicht angemeldete Benutzer zu blocken.

Ich habe jetzt alles konfiguriert und wenn ich eine geschützte Seite per Hand (also indem ich die URL in die Adressleiste meines Browsers eingebe) aufrufe, dann erscheint auch die Standard-Spring-Login-Seite. Klicke ich jedoch auf einer anderen Seite einen Link auf eine geschützte Seite an (das ganze läuft über JSF Navigation-Cases), dann geht die Seite direkt auf (ohne vorher die Login-Page zu zeigen) und erst wenn ich von dort aus auf eine x-beliebige (nicht) geschützte Seite zugreifen möchte dann fragt er mich nach den Login-Daten.

Beispiel:
Geschützte Seite: secure.jsp
Ungeschützte Seiten: a.jsp und b.jsp

1) Ich bin auf "a.jsp" und klicke auf den Link für "secure.jsp"
2) "secure.jsp" geht auf
3) Ich klicke nun auf der Seite "secure.jsp" auf den Link zu "b.jsp".
4) Login-Page geht auf

Ich checks einfach nicht. Eigentlich sollte ja die Login-Seite VOR der aufzurufenden Seite aufgehen aber er machts danach. Kann das an einer Reihenfolge in einer Konfigurationsdatei liegen?

EDIT:
Im übrigen ist mir aufgefallen, dass in der Adressleiste meines Browsers NIE die aktuelle Seite drin steht, sondern immer die URL zur Seite auf der ich vorher war. Könnte das damit zusammenhängen?


Hier mal die Dateien:

web.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" 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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
	
	<description></description>
	<display-name>Onlineshop with Tomcat</display-name>

	<!-- Java Server Faces parameters -->
    	<context-param>
            <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
	    <param-value>server</param-value>
	</context-param>
	<context-param>
	    <param-name>javax.faces.CONFIG_FILES</param-name>
	    <param-value>/WEB-INF/faces-config.xml</param-value>
	</context-param>

	<!-- Richfaces parameters -->
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>	
	<context-param>
		<param-name>org.richfaces.CONTROL_SKINNING</param-name>
		<param-value>enable</param-value>
	</context-param>

	<!-- Facelets parameters -->
	<context-param>
		<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
		<param-value>2</param-value>
	</context-param>
	<context-param>
		<param-name>facelets.DEVELOPMENT</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
		<param-value>com.sun.facelets.FaceletViewHandler</param-value>
	</context-param>
	
	<!-- Facelets tag libs -->
	<context-param>
		<param-name>facelets.LIBRARIES</param-name>
		<param-value>/facelets/tags/onlineshop.taglib.xml</param-value>
	</context-param>
 
	<!-- Spring parameters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/applicationContext.xml
			/WEB-INF/security.xml
		</param-value>
	</context-param>
 
	<!-- 
		Filter
	-->
	
	<!-- Richfaces filter -->
	<filter>
		<filter-name>ajax4jsf</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
	
	<!-- Spring Security Filter -->
 	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	
	<!-- Richfaces filter mapping -->
	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>FacesServlet</servlet-name>
	</filter-mapping>
	
	<!-- Spring Security Filter Mapping -->
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>

    <!-- Spring Framework Listener -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>

	<!-- Java Server Faces Listener -->
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>

    <!-- Faces Servlet -->
    <servlet>
        <servlet-name>FacesServlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup> 1 </load-on-startup>
    </servlet>

    <!-- Faces Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>FacesServlet</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>
	
	<welcome-file-list>
		<welcome-file>/jsp/user/articleList.jsp</welcome-file>
	</welcome-file-list>
    
</web-app>

faces-config.xml
Code:
<faces-config 
		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 http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
		version="1.2">
	
	
	<application>
		<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
		<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
	</application>
	
	<converter>
		<converter-id>ArticlegrouppropertyConverter</converter-id>
		<converter-class>de.daniva.javaee.jsf.converter.ArticlegrouppropertyConverter</converter-class>
	</converter>
	
	<navigation-rule>
		<navigation-case>
			<from-outcome>administration</from-outcome>
			<to-view-id>/jsp/admin/mainAdmin.jsp</to-view-id>
		</navigation-case>
		<navigation-case>
			<from-outcome>valueaddedtaxList</from-outcome>
			<to-view-id>/jsp/admin/valueaddedtaxList.jsp</to-view-id>
		</navigation-case>

... HIER KOMMEN NOCH EINEN GANZEN HAUFEN ÄHNLICHER NAVIGATIONS-CASE EINTRÄGE ...

	</navigation-rule>

	<managed-bean>
		<managed-bean-name>navigateToLastController</managed-bean-name>
		<managed-bean-class>de.daniva.onlineshop.jsf.NavigateToLastController</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	
... HIER KOMMEN NOCH EINEN GANZEN HAUFEN ÄHNLICHER MANAGED-BEAN EINTRÄGE ...

	<validator>
		<validator-id>jsfDoubleValidator</validator-id>
		<validator-class>de.daniva.javaee.jsf.validator.JsfDoubleValidator</validator-class>
	</validator>

</faces-config>

security.xml
Code:
<beans:beans xmlns="http://www.springframework.org/schema/security" 
		xmlns:beans="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
			http://www.springframework.org/schema/security
			http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">
	
	<http>
		<intercept-url pattern="/jsp/admin/articleDetail.jsp*" access="ROLE_ADMIN" />
		<form-login />
		<logout />
	</http>
	
	<authentication-manager>
		<authentication-provider>
			<user-service>
				<user name="admin" password="secret" authorities="ROLE_ADMIN,ROLE_USER" />
				<user name="user" password="secret" authorities="ROLE_USER" />
			</user-service>
		</authentication-provider>
	</authentication-manager>
	
</beans:beans>

Ich checks einfach nicht, woran es liegt.
Mit Sicherheit ists nur ne Banalität aber das ists ja meistens.
Habt ihr eine Idee?
 
Zuletzt bearbeitet:

haf_blade

Mitglied
Ich habe mittlerweile herausgefunden, dass es wohl scheinbar nicht an SpringSecurity liegt.

Ich habe mir mal einfach einen kleinen Filter geschrieben.

Code:
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest httpRequest = (HttpServletRequest)request;
		
		String pathToAnalyse = httpRequest.getServletPath() + httpRequest.getPathInfo();
		if(pathToAnalyse.contains("/jsp/admin/")) {
			log.info("ZU BLOCKENDE SEITE: " + pathToAnalyse);
		}
		
		chain.doFilter(request, response);
	}

Wenn ich den zu den Filtern meiner Web-Anwendung hinzufüge, wird erst "ZU BLOCKENDE SEITE" ausgegeben, wenn ich von der zu blockenden Seite weiter auf eine andere Seite wechsle.

Es sieht für mich aus als wäre das Problem aus dem selben Grund vorhanden wie die Tatsache, dass in der Adressleiste immer die URL der vorhergehenden Seite in JSF angezeigt wird.

Kann man da irgendwie etwas machen?

Danke schon mal für eure Hilfe.
 

haf_blade

Mitglied
Ha!!!!! Ich habs :)

Man kann JSF sagen, dass es die Seiten per "redirect" anfordern soll. Da führt dazu, dass die URLs der aktuellen Seite im Browser auftauchen und dass die Filter die richtige URL abrufen können.

Dazu geht man einfach hin und fügt ein <redirect /> in jeden NavigationCase der Anwendung ein.

Code:
	<navigation-rule>
		<navigation-case>
			<from-outcome>administration</from-outcome>
		           <to-view-id>jsp/admin/main.jsp</to-view-id>
		           <redirect />
	           </navigation-case>
           </navigation-rule>

Und schon arbeitet auch SpringSecurity korrekt. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
NoXiD SpringSecurity Problem Frameworks - Spring, Play, Blade, Vaadin & Co 3
W Spring-Beans nach Einbindung von SpringSecurity null Frameworks - Spring, Play, Blade, Vaadin & Co 3
Phash JSF - SpringSecurity zeigt Dinge an ohne es zu dürfen Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Problem beim Mocken Frameworks - Spring, Play, Blade, Vaadin & Co 9
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
Z Versuch mit Rest-Api-Tester geben offenbar ein lib Problem Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
D Backtracking (Springer-Problem) Frameworks - Spring, Play, Blade, Vaadin & Co 6
B Java Spring Boot - POM-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 8
J Spring Boot Autowired Problem Frameworks - Spring, Play, Blade, Vaadin & Co 2
E Tomcat mit Hibernate und Spring - Problem mit Connection Pool Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring property problem Frameworks - Spring, Play, Blade, Vaadin & Co 2
E Springerproblem - Problem Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Problem bei Velocity und Spring Validation Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Problem mit Spring LTW Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Axis2 1.6 + Spring -> ClassLoader Problem Frameworks - Spring, Play, Blade, Vaadin & Co 0
M Problem mit spring und log4j Frameworks - Spring, Play, Blade, Vaadin & Co 0
M Problem mit spring security Frameworks - Spring, Play, Blade, Vaadin & Co 0
B SpringMVC-EntityManagerFactory-Hibernate-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Problem mit Hibernate und Spring Frameworks - Spring, Play, Blade, Vaadin & Co 0
M Problem mit Gilead und Spring Frameworks - Spring, Play, Blade, Vaadin & Co 1
B SpringLayout Problem Frameworks - Spring, Play, Blade, Vaadin & Co 3
tfa Problem mit Maven, Tomcat, Spring und XML-Schema Frameworks - Spring, Play, Blade, Vaadin & Co 0
A Problem mit Spring-WS und Marshalling Frameworks - Spring, Play, Blade, Vaadin & Co 0
H file upload problem mit spring Frameworks - Spring, Play, Blade, Vaadin & Co 33
H Spring: Problem mit CommandClass in SimpleFormController (aus Step-by-Step Tutorial) Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring: Problem beim ausführen eines JUnit Tests. Frameworks - Spring, Play, Blade, Vaadin & Co 4
dunhillone Problem mit Spring & Hibernate Sessions Frameworks - Spring, Play, Blade, Vaadin & Co 2
dunhillone Problem mit Spring & Hibernate Sessions Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Spring DM: Problem mit Tomcat als OSGI-Service Frameworks - Spring, Play, Blade, Vaadin & Co 2
chik Spring ACEGI Problem Frameworks - Spring, Play, Blade, Vaadin & Co 1
M JSF Navigation - Spring Security Logout Problem Frameworks - Spring, Play, Blade, Vaadin & Co 5

Ähnliche Java Themen

Neue Themen


Oben