У меня есть устаревший проект. где у нас уже есть аутентификация с помощью Openam, теперь мы переходим на Spring Security. мы хотим поддерживать как Spring Security, так и аутентификацию Openam, прежде чем мы переведем всех клиентов на Spring Security. Итак, теперь я могу добавить пружинную безопасность. Я хочу, чтобы фильтры пружинной безопасности выполнялись на основе флага true или false, установленного в пользовательском фильтре, значение которого извлекается из базы данных.
Предположим, у меня есть такая цепочка фильтров
Код: Выделить всё
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http,AuthenticateValidateFilter authenticateValidateFilter) throws Exception {
OpenSaml4AuthenticationProvider authenticationProvider = new OpenSaml4AuthenticationProvider();
authenticationProvider.setResponseAuthenticationConverter(groupsConverter());
return http.
authorizeHttpRequests((authorize) -> authorize
.requestMatchers("/api/v1").authenticated()
)
.saml2Login(Customizer.withDefaults())
.saml2Logout(Customizer.withDefaults())
.securityContext(securityContext -> securityContext.
securityContextRepository(new HttpSessionSecurityContextRepository())
)
.build();
}
Я хочу создать новый пользовательский фильтр, в котором на основе флага true или false должны выполняться фильтры аутентификации Spring. Если флаг имеет значение false, то к запрошенной конечной точке должен быть доступен прямой доступ, как если бы не была настроена безопасность Spring. Если для него установлено значение true, то должны быть выполнены остальные фильтры пружинной безопасности. Я не уверен, возможно ли это без пружинной загрузки. Может кто-нибудь помочь?
Подробнее здесь:
https://stackoverflow.com/questions/791 ... e-flag-set