Hi,

I'm trying to implement spring security on a modular Spring/Hibernate
project and I'm getting the problem where the Appfuse UserDetailsService is
in the way (I use my own) as Spring Security requires a unique
UserDetailsService by default, contrary to Acegi.

Implementing the security.xml as below should solve the issue, but it
doesn't and I'm getting some kind of xfire based reference to the error.
Although I dont use xfire for my project, it is deployed by default.

Any ideas on how to solve this other than full sourcing Appfuse. 


        <http lowercase-comparisons="false">
                <intercept-url pattern="/imageuploader/*" filters="none" />
                <intercept-url pattern="/images/*" filters="none" />
                <intercept-url pattern="/css/*" filters="none" />
                <intercept-url pattern="/js/*" filters="none" />
                <intercept-url pattern="/admin/*" access="ROLE_ADMIN" />
                <intercept-url pattern="/*/bidform.html*"
                        access="ROLE_USER,ROLE_ADMIN" />
                <intercept-url pattern="/*/account/*"
                        access="ROLE_USER" />
                <intercept-url pattern="/*/account/offers/*"
                        access="ROLE_VENDOR,ROLE_ADMIN" />
                <intercept-url pattern="/admin/*" access="ROLE_ADMIN" />
                <!-- APF-737, OK to remove line below if you're not using JSF 
-->
                <intercept-url pattern="/**/*.html*"
                        access="ROLE_ADMIN,ROLE_USER" />
                <form-login login-page="/login.html"
                        authentication-failure-url="/login.html?error=true"
                        login-processing-url="/j_security_check" />
                <logout logout-success-url="/home.html" />
        </http>
        <authentication-provider user-service-ref="usorManager">
        </authentication-provider>
 
<beans:bean id="authenticationProcessingFilter"
   
class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
    <custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />
    <beans:property name="authenticationManager" ref="authenticationManager"
/>
    <beans:property name="filterProcessesUrl">
      <beans:value>/login_security_check</beans:value>
    </beans:property>
    <beans:property name="defaultTargetUrl">
      <beans:value>/home.html</beans:value>
    </beans:property>
    <beans:property name="authenticationFailureUrl">
      <beans:value>/login.html</beans:value>
    </beans:property>
    <beans:property name="rememberMeServices" ref="rememberMeServices" />
  </beans:bean>
 

        <!-- Override the default password-encoder (SHA) by uncommenting the
following and changing the class -->
        <!-- <bean id="passwordEncoder"
class="org.springframework.security.providers.encoding.ShaPasswordEncoder"/>
-->
        <!-- <global-method-security>
                <protect-pointcut expression="execution(*
*..service.UserManager.getUsers(..))" access="ROLE_ADMIN"/>
                <protect-pointcut expression="execution(*
*..service.UserManager.removeUser(..))" access="ROLE_ADMIN"/>
                </global-method-security> -->
                
        <!-- ============= Security ============= -->   
        <beans:bean id="rememberMeProcessingFilter"
        
class="org.springframework.security.ui.rememberme.RememberMeProcessingFilter">
                <custom-filter after="AUTHENTICATION_PROCESSING_FILTER" />
                
                <beans:property name="rememberMeServices" 
ref="rememberMeServices" />
                <beans:property name="authenticationManager" 
ref="authenticationManager"
/>      
        </beans:bean>
        
        <beans:bean id="rememberMeServices"
                class="nl.project.service.impl.RememberMeManagerImpl">
                <beans:property name="userDetailsService" ref="usorManager" />
                <beans:property name="key"
                        value="xyz" />
                <beans:property name="parameter" value="rememberMe" />
                <beans:property name="userDao" ref="usorDao" />
                <beans:property name="alwaysRemember" value="true" />
        </beans:bean>
        
        <beans:bean id="rememberMeAuthenticationProvider"
        
class="org.springframework.security.providers.rememberme.RememberMeAuthenticationProvider">
                <beans:property name="key"
                        value="xyz" />
        </beans:bean>

and here's the error:

org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'handlerMapping' defined in ServletContext resource
[/WEB-INF/xfire-servlet.xml]: Initialization of bean failed; nested
exception is org.springframework.beans.factory.BeanCreationException: Error
creating bean with name '_filterChainProxy': Initialization of bean failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '_filterChainList': Cannot resolve reference
to bean '_rememberMeFilter' while setting bean property 'filters' with key
[6]; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name '_rememberMeFilter': Cannot resolve reference to bean
'_rememberMeServices' while setting bean property 'rememberMeServices';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '_rememberMeServices': Initialization of bean
failed; nested exception is
org.springframework.security.config.SecurityConfigurationException: More
than one UserDetailsService registered. Please use a specific Id in your
configuration
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:478)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
        at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
        at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
        at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
        at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
        at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
        at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)
        at
org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
        at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
        at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
        at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at 
org.apache.catalina.core.StandardService.start(StandardService.java:516)
        at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name '_filterChainProxy': Initialization of bean failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '_filterChainList': Cannot resolve reference
to bean '_rememberMeFilter' while setting bean property 'filters' with key
[6]; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name '_rememberMeFilter': Cannot resolve reference to bean
'_rememberMeServices' while setting bean property 'rememberMeServices';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '_rememberMeServices': Initialization of bean
failed; nested exception is
org.springframework.security.config.SecurityConfigurationException: More
than one UserDetailsService registered. Please use a specific Id in your
configuration
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:478)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:881)
        at
org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping.processBeans(Jsr181HandlerMapping.java:114)
        at
org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping.initApplicationContext(Jsr181HandlerMapping.java:65)
        at
org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119)
        at
org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:69)
        at
org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73)
        at
org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:70)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1329)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
        ... 38 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name '_filterChainList': Cannot resolve reference to bean
'_rememberMeFilter' while setting bean property 'filters' with key [6];
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '_rememberMeFilter': Cannot resolve reference
to bean '_rememberMeServices' while setting bean property
'rememberMeServices'; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name '_rememberMeServices': Initialization of bean failed; nested
exception is
org.springframework.security.config.SecurityConfigurationException: More
than one UserDetailsService registered. Please use a specific Id in your
configuration
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:287)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:126)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1244)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1008)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:470)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.security.config.FilterChainProxyPostProcessor.postProcessBeforeInitialization(FilterChainProxyPostProcessor.java:52)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1329)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
        ... 56 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name '_rememberMeFilter': Cannot resolve reference to
bean '_rememberMeServices' while setting bean property 'rememberMeServices';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name '_rememberMeServices': Initialization of bean
failed; nested exception is
org.springframework.security.config.SecurityConfigurationException: More
than one UserDetailsService registered. Please use a specific Id in your
configuration
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1244)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1008)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:470)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
        ... 74 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name '_rememberMeServices': Initialization of bean
failed; nested exception is
org.springframework.security.config.SecurityConfigurationException: More
than one UserDetailsService registered. Please use a specific Id in your
configuration
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:478)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
        ... 87 more
Caused by:
org.springframework.security.config.SecurityConfigurationException: More
than one UserDetailsService registered. Please use a specific Id in your
configuration
        at
org.springframework.security.config.UserDetailsServiceInjectionBeanPostProcessor.getUserDetailsService(UserDetailsServiceInjectionBeanPostProcessor.java:111)
        at
org.springframework.security.config.UserDetailsServiceInjectionBeanPostProcessor.injectUserDetailsServiceIntoRememberMeServices(UserDetailsServiceInjectionBeanPostProcessor.java:53)
        at
org.springframework.security.config.UserDetailsServiceInjectionBeanPostProcessor.postProcessBeforeInitialization(UserDetailsServiceInjectionBeanPostProcessor.java:36)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:350)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1329)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
        ... 96 more


Cheers,

Marc
-- 
View this message in context: 
http://www.nabble.com/Custom-rememberMe-on-spring-security-fails%3A-xfire--tp21115643s2369p21115643.html
Sent from the AppFuse - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net

Reply via email to