Как разрешить все перенаправления HTTP в Java Spring boot security? - PullRequest
1 голос
/ 26 марта 2020

Я пишу Java Spring Boot приложение, которое включает в себя Spring Boot Security в моем пом. xml. Однако, это работает, когда я перенаправляю из логина на мой /home. Хотя, когда я снова изменяю страницу или делаю простой вызов ajax, я получаю сообщение об ошибке 403. Я считаю, что это связано с безопасностью и тем, что страница не имеет надлежащего доступа. Я ищу лучший способ решить эту проблему, сохраняя при этом уровень безопасности.

Java Безопасность:

    @Override
      protected void configure(HttpSecurity http) throws Exception {
        http
          .authorizeRequests()
            .anyRequest().fullyAuthenticated()
            .and()
          .formLogin()
          .successHandler(new CustomAuthenticationSuccessHandler())                 // On authentication success custom handler    
          .and()
          .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/login");


    }

Java Успех Обработчик:

@Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
            Authentication authentication) throws IOException, ServletException {
        String principal = authentication.getName();

        System.out.println("Successful login: principal " + principal);
        ADID = principal;
        response.sendRedirect("/dashboard");

    }

Ошибка в контроллере:

Error 403 : http://localhost:8080/edit/ajax/doesSomething

Таким образом, /dashboard - это первая страница, на которую я попадаю при успешном входе в систему затем клиент вводит некоторые поля и перемещается на другую страницу, которая вызывает другой URL-путь. Я полагаю, что он вызывает другие пути, которые не /dashboard

Ответы [ 3 ]

2 голосов
/ 26 марта 2020

Ваша проблема - CSRF токен. Вы можете отключить его в настройках безопасности, но лучше использовать его. См. этот сайт для получения дополнительной информации.

1 голос
/ 26 марта 2020

Попробуйте это ...

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
       .authorizeRequests()
         .anyRequest().permitAll()
        .and()
       .formLogin()
       .successHandler(new CustomAuthenticationSuccessHandler())            
       .and()
       .logout().logoutRequestMatcher(new 
        AntPathRequestMatcher("/logout")).logoutSuccessUrl("/login");
 }

или отключите CSRF как быстрое исправление.

http.csrf().disable();
0 голосов
/ 26 марта 2020

Добавьте это в java безопасности. Это разрешит запросы к любой конечной точке или к указанным:

`   
   @Override
   public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/**").antMatchers("/example/endpoint");
    }
`

И вы также можете сохранить свои

protected void configure(HttpSecurity http) throws Exception
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...