0

Spring Securiry ZK Integration

asked 2010-11-30 09:31:12 +0800

eugemoli85 gravatar image eugemoli85
3

I am trying to set up Spring Security 3.0.2 with ZK 5.0.4:
After login I get this error:

java.lang.RuntimeException: java.lang.RuntimeException: java.lang.NullPointerException
org.zkoss.spring.security.ui.ZkExceptionTranslationListener$1.doFilter(ZkExceptionTranslationListener.java:148)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.zkoss.spring.security.ui.ZkExceptionTranslationListener.doExceptionTranslationFiltering(ZkExceptionTranslationListener.java:135)
org.zkoss.spring.security.ui.ZkExceptionTranslationListener.cleanup(ZkExceptionTranslationListener.java:117)
org.zkoss.zk.ui.util.Configuration.newEventThreadCleanups(Configuration.java:469)
org.zkoss.zk.ui.impl.UiEngineImpl.processEvent(UiEngineImpl.java:1507)
org.zkoss.zk.ui.impl.UiEngineImpl.process(UiEngineImpl.java:1287)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:426)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:291)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:243)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:164)
javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
org.zkoss.spring.security.ui.ZkLoginOKFilter.doFilter(ZkLoginOKFilter.java:136)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.zkoss.spring.security.ui.ZkEnableSessionInvalidateFilter.doFilter(ZkEnableSessionInvalidateFilter.java:64)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:90)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.zkoss.spring.security.ui.ZkDisableSessionInvalidateFilter.doFilter(ZkDisableSessionInvalidateFilter.java:72)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.zkoss.spring.security.ui.ZkError403Filter.doFilter(ZkError403Filter.java:87)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.zkoss.spring.security.config.ZkDesktopReuseFilter.doFilter(ZkDesktopReuseFilter.java:120)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)



web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
	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">
	<display-name>expedientes-web</display-name>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/egoveris-config.xml
		</param-value>
	</context-param>
    
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
  	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
   
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	

	

	<listener>
		<description>
			Used to cleanup when a session is destroyed
		</description>
		<display-name>ZK Session Cleaner</display-name>
		<listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class>
	</listener>

	<servlet>
		<description>ZK loader for ZUML pages</description>
		<servlet-name>zkLoader</servlet-name>
		<servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
		
		<init-param>
			<param-name>update-uri</param-name>
			<param-value>/zkau</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet>
		<description>The asynchronous update engine for ZK</description>
		<servlet-name>auEngine</servlet-name>
		<servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>zkLoader</servlet-name>
		<url-pattern>*.zul</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>zkLoader</servlet-name>
		<url-pattern>*.zhtml</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>auEngine</servlet-name>
		<url-pattern>/zkau/*</url-pattern>
	</servlet-mapping>

		<mime-mapping>
		<extension>gif</extension>
		<mime-type>image/gif</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>html</extension>
		<mime-type>text/html</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>htm</extension>
		<mime-type>text/html</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>jpeg</extension>
		<mime-type>image/jpeg</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>jpg</extension>
		<mime-type>image/jpeg</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>js</extension>
		<mime-type>application/x-javascript</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>png</extension>
		<mime-type>image/png</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>txt</extension>
		<mime-type>text/plain</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>xml</extension>
		<mime-type>text/xml</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>zhtml</extension>
		<mime-type>text/html</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>zul</extension>
		<mime-type>text/html</mime-type>
	</mime-mapping>
	<welcome-file-list>
		<welcome-file>/login.zul</welcome-file>
	</welcome-file-list>
	
	<servlet>
    <servlet-name>webdav</servlet-name>
    <servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>0</param-value>
    </init-param>
    <init-param>
      <param-name>listings</param-name>
      <param-value>true</param-value>
    </init-param>

    <init-param>
      <param-name>readonly</param-name>
      <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>webdav</servlet-name>
    <url-pattern>/webdav/*</url-pattern>
  </servlet-mapping>


</web-app>


applicationContext-security.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:security="http://www.springframework.org/schema/security"
	xmlns="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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
        
	<bean id="zkDesktopReuseFilter" class="org.zkoss.spring.security.config.ZkDesktopReuseFilter">
	</bean>
	<bean id="zkDisableSessionInvalidateFilter" class="org.zkoss.spring.security.ui.ZkDisableSessionInvalidateFilter">
	</bean>
	<bean id="zkEnableSessionInvalidateFilter" class="org.zkoss.spring.security.ui.ZkEnableSessionInvalidateFilter">
	</bean>
	<bean id="zkLoginOKFilter" class="org.zkoss.spring.security.ui.ZkLoginOKFilter">
	</bean>
	<bean id="zkError403Filter" class="org.zkoss.spring.security.ui.ZkError403Filter">
	</bean>
	
	<security:http auto-config="true">
			<security:intercept-url pattern="/**" access="ROLE_SUPERVISOR" />
			<security:custom-filter ref="zkDesktopReuseFilter"
				position="FIRST" />
			<security:custom-filter ref="zkDisableSessionInvalidateFilter"
				before="FORM_LOGIN_FILTER" />
			<security:custom-filter ref="zkEnableSessionInvalidateFilter"
				before="FILTER_SECURITY_INTERCEPTOR" />
			<security:custom-filter ref="zkLoginOKFilter"
				after="FILTER_SECURITY_INTERCEPTOR" />
			<security:custom-filter ref="zkError403Filter"
				after="LOGOUT_FILTER" />
	</security:http>


	
	 <security:authentication-manager>
	        <security:authentication-provider> 
	            <security:password-encoder hash="md5"/> 
	            <security:user-service> 	
					<security:user name="rod" password="a564de63c2d0da68cf47586ee05984d7"
						authorities="ROLE_SUPERVISOR" />
					<security:user name="dianne"
						password="65d15fe9156f9c4bbffd98085992a44e"
						authorities="ROLE_USER" />	
	            </security:user-service> 
	        </security:authentication-provider> 
	  </security:authentication-manager>
</beans>


zk.xml
<?xml version="1.0" encoding="UTF-8"?>
<zk>

	<log>
		<log-base>org.zkoss</log-base>
	</log>

	<!-- Indica que el progress indicator vaya al medio en lugar de en la esquina superior izquierda -->
	<library-property>
		<name>org.zkoss.zul.progressbox.position</name>
		<value>center</value>
	</library-property>
	
	
	<library-property>
		<name>org.zkoss.zul.Button.mold</name>
		<value>trendy</value>
	</library-property>

	<!-- Ante un timeout redirige a la página de login -->
	<device-config>
		<device-type>ajax</device-type>
		<timeout-uri>/login.zul</timeout-uri>
	</device-config>
	<listener>
		<description>ZK Exception Translation Listener</description>
		<listener-class>org.zkoss.spring.security.ui.ZkExceptionTranslationListener</listener-class>
	</listener>
		<preference>
		<name>org.zkoss.zul.Window.defaultActionOnShow</name>
		<value></value>
	</preference>

</zk>


I have used as template the example of : http://docs.zkoss.org/wiki/Spring#Spring_Security
Any hint?

delete flag offensive retag edit

1 Reply

Sort by » oldest newest

answered 2010-12-05 21:28:58 +0800

henrichen gravatar image henrichen
3869 2
ZK Team

Can you try on ZK 5.0.5 ?

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2010-11-30 09:31:12 +0800

Seen: 713 times

Last updated: Dec 05 '10

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More