Проверка подлинности формы для пользовательского интерфейса и проверка подлинности Basi c для REST в Spring Security - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь сделать аутентификацию формы для пользовательского интерфейса и аутентификацию Basi c для REST в Spring Security в моем приложении. Я создал конфигурацию на основе одного из этого вопроса Объединение аутентификации basi c и входа в систему для того же REST Api , но оно не работало должным образом. Проверка подлинности Basi c отменяется проверкой подлинности с помощью формы для службы REST. Что касается комментариев, я вижу, что этот подход не работает, начиная с Spring Security 5. Я хочу знать, почему он сломан сейчас, и можно ли это исправить или использовать какой-то другой подход, чтобы заставить Security работать так, как я ожидаю.

Я использую Spring Boot 2.2.6, и вот моя конфигурация Spring Security

@EnableWebSecurity
public class SecurityConfiguration {

    @Bean
    public UserDetailsService userDetailsService(UserRepository userRepository) {
        return new UserAuthService(userRepository);
    }

    @Autowired
    public void authConfigure(AuthenticationManagerBuilder auth) throws Exception {
           auth.inMemoryAuthentication()
               .withUser("user")
               .password("password")
               .roles("USER").and()
               .withUser("admin")
               .password("password")
               .roles("USER", "ADMIN");
    }

    @Configuration
    @Order(1)
    public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .antMatcher("/api/**")
                    .authorizeRequests()
                    .anyRequest()
                    .hasAnyRole("ADMIN", "GUEST")
                    .and()
                    .httpBasic(Customizer.withDefaults());
        }
    }

    @Configuration
    @Order(2)
    public static class UiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers("/resources/*").permitAll()
                    .antMatchers("/person/**").permitAll()
                    .antMatchers("/user/**").hasRole("ADMIN")
                    .anyRequest().authenticated()
                    .and()
                    .formLogin(Customizer.withDefaults());
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...