Я на самом деле обнаружил, что Spring security имеет встроенную поддержку безопасности с предварительной аутентификацией. В частности, я посмотрел на org.springframework.security.ui.preauth.AbstractPreAuthenticatedProcessingFilter, который поставляется с рядом реализаций, из которых
RequestHeaderPreAuthenticatedProcessingFilter показался наиболее полезным. В качестве альтернативы можно также написать собственный фильтр, расширив AbstractPreAuthenticatedProcessingFilter. После того, как это будет сделано, вам также потребуется определить пользовательскую точку входа в контексте приложения, а также другие зависимости, требуемые Spring Security. Я извиняюсь, что спешу и не успеваю правильно отформатировать. Надеюсь, это поможет.
<bean id="customEntryPoint"
class="org.springframework.security.ui.preauth.PreAuthenticatedProcessingFilterEntryPoint" />
и это
<bean id="preauthAuthProvider"
class="org.springframework.security.providers.preauth.PreAuthenticatedAuthenticationProvider">
<security:custom-authentication-provider />
<property name="preAuthenticatedUserDetailsService">
<bean id="userDetailsServiceWrapper"
class="org.springframework.security.userdetails.UserDetailsByNameServiceWrapper">
<property name="userDetailsService" ref="userDetailsService" />
</bean>
</property>
</bean>
и это
<bean id="userDetailsService" class="yourimplementation.CustomUserDetailsService" />
и это
<security:http auto-config="false"
access-decision-manager-ref="accessDecisionManager"
entry-point-ref="customEntryPoint">
<security:intercept-url pattern="/*" access="permitAll" />
</security:http>
<security:authentication-manager alias="authenticationManager" />