Допустим, URL-адрес входа в систему "/ login".Существует два защищенных ресурса:
- "/ protected"
- "/", который представляет собой перенаправление 302 на "/ protected"
При неаутентифицированномпользователь пытается получить доступ к «/ protected», он перенаправляется на «/ login».В фоновом режиме создается сеанс, где SPRING_SECURITY_SAVED_REQUEST сохраняется для перенаправления пользователя на URL-адрес "/ protected" после успешного входа в систему.
Это поведение по умолчанию для весенней безопасности.
Моя проблема: сеансы создаются даже тогда, когда пользователи вызывают "/".Таким образом, все боты и тесты на проникновение, которые вызывают домен без действительной информации для входа, создают сеансы в нижележащем слое redis.
Как я могу предотвратить создание этих сеансов, когда не сохранен запрос на перенаправление или, по крайней мере,ограничить их определенным списком действительных конечных точек бэкэнда?
Моя конфигурация безопасности:
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/password/forgot/**").permitAll()
.antMatchers("/password/reset/**").permitAll()
.antMatchers("/css/**").permitAll()
.antMatchers("/js/**").permitAll()
.antMatchers("/img/**").permitAll()
.antMatchers( "/favicon.ico").permitAll()
.antMatchers("/login").permitAll()
.anyRequest().fullyAuthenticated();
http
.formLogin()
.loginPage("/login")
.permitAll()
.successHandler(authSuccessHandler)
.and()
.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/login")
.deleteCookies("SESSION")
.clearAuthentication(true)
.invalidateHttpSession(true)
.permitAll();
http.sessionManagement()
.maximumSessions(1)
.and()
.sessionCreationPolicy(SessionCreationPolicy.NEVER);
http.headers().frameOptions().disable();
http.csrf().disable();
}