Spring security всегда возвращает 200, хоте не должен?

Кто хорошо знаком со спринг секурити(stateless rest авторизация стоит), почему-то на каждый запрос отдает 200, даже на не существующий урл, я так полагаю дело в фильтрах или в SecurityProblemSupport

private final SecurityProblemSupport problemSupport;

.exceptionHandling()
.authenticationEntryPoint(problemSupport)
.accessDeniedHandler(problemSupport)


https://github.com/baimurzin/platform-backend/blob...

я отправляю любой запрос и всегда возвращается 200:
GET/POST localhost:8010/api/authenticate
GET/POST localhost:8010/api/authenticate123123
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 1
Так у вас стоит antMatchers("/api/authenticate").permitAll()
Поэтому и 200 всегда отдает.
Конфигурация неправильная.
Вот пример моей:
@Autowired
    @Qualifier("securityUserDetailsService")
    private UserDetailsService userDetailsService;

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/resources/**").permitAll()
            .antMatchers("/template/**").permitAll()
            .antMatchers("/user/**").permitAll()
            .anyRequest()
            .authenticated()
            .and()
            .formLogin()
            .defaultSuccessUrl("/")
            .loginProcessingUrl("/authenticate")
            .usernameParameter("username")
            .passwordParameter("password")
            .successHandler(new AjaxAuthenticationSuccessHandler(new SavedRequestAwareAuthenticationSuccessHandler()))
            .loginPage("/")
            .and()
            .httpBasic()
            .and()
            .logout()
            .logoutUrl("/logout")
            .logoutSuccessUrl("/")
            .permitAll()
            .and()
            .csrf()
            .csrfTokenRepository(csrfTokenRepository())
            .and()
            .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);
    }

    private CsrfTokenRepository csrfTokenRepository() {
        HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
        repository.setHeaderName("X-XSRF-TOKEN");
        return repository;
    }

    private Filter csrfHeaderFilter() {
        return new OncePerRequestFilter() {
            @Override
            protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
                CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class.getName());

                if (csrf != null) {
                    Cookie cookie = WebUtils.getCookie(request, "XSRF-TOKEN");
                    String token = csrf.getToken();
                    if (cookie == null || token != null && !token.equals(cookie.getValue())) {
                        cookie = new Cookie("XSRF-TOKEN", token);
                        cookie.setPath("/");
                        response.addCookie(cookie);
                    }
                }

                filterChain.doFilter(request, response);
            }
        };
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Innopolis City Москва
от 80 000 до 170 000 руб.
Expload Москва
от 150 000 до 250 000 руб.
8BIT GROUP Москва
от 180 000 до 280 000 руб.
22 марта 2019, в 09:52
20000 руб./за проект
22 марта 2019, в 06:30
10000 руб./за проект
22 марта 2019, в 03:12
20000 руб./за проект