I suspect that you are seeing duplicate SessionFixationProtectionStrategy beans because you have two http elements (ignoring those with security="none"). Normally this would not be a problem because the SessionFixationProtectionStrategy is an anonymous bean that is injected into the parent filter. This is what the namespace effectively does:
Code:
<bean id="formLoginFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager" />
<property name="authenticationSuccessHandler">
<bean class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<property name="defaultTargetUrl" value="/index.jsp" />
</bean>
</property>
<property name="sessionAuthenticationStrategy">
<bean class="org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy" />
</property>
</bean>
However in your case you have a loginCommandPostProcessor which uses autowiring and as a consequence it falls over when it finds two beans of type SessionFixationProtectionStrategy.
I would suggest that you merge the two http elements i.e. something like:
Code:
<security:http entry-point-ref="samlEntryPoint" auto-config="true">
<security:intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY"/>
<security:custom-filter before="FIRST" ref="metadataGeneratorFilter"/>
<security:custom-filter after="BASIC_AUTH_FILTER" ref="samlFilter"/>
<security:anonymous/>
<security:intercept-url pattern="/**"/>
<security:form-login login-page="/index.jsp"/>
</security:http>
Alternatively you could try creating the SessionFixationProtectionStrategy yourself and passing it into both http elements:
Code:
<beans:bean id="sas"
class="org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy"/>
<security:http entry-point-ref="samlEntryPoint">
<session-management session-authentication-strategy-ref="sas"/>
...
</security:http>
Or you could disable session fixation protection completely:
Code:
<security:http>
<session-management session-fixation-protection="false" />
...
</security:http>