Базовая аутентификация, игнорирующая проверку пароля - PullRequest
0 голосов
/ 28 февраля 2019

Я настраиваю WebSecurityConfig, создаю пользователя в памяти

@Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("username")
                .password(passwordEncoder().encode("password"))
                .authorities("READ_ORDERS")
                .roles("USER");
    }

настраиваю WebSecurityConfig

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

        private final AuthenticationEntryPoint authEntryPoint;

        @Autowired
        public BasicAuthenticationAdapter(AuthenticationEntryPoint authEntryPoint) {
            this.authEntryPoint = authEntryPoint;
        }

        protected void configure(HttpSecurity http) throws Exception {
            http
                    .antMatcher("/orders**")
                    .authorizeRequests()
                    .anyRequest().hasRole("USER")
                    .and()
                    .csrf().disable()
                    .httpBasic().authenticationEntryPoint(authEntryPoint)
                    .and()
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        }
    }

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

1 Ответ

0 голосов
/ 11 июня 2019

Так работает базовая аутентификация.После успешного входа в систему всегда будут опубликованы действительные учетные данные.

Spring Security работает с SessionCreationPolicy, и по умолчанию применяется политика IF_REQUIRED.Это означает, что Spring создает сеанс, если он не имеет и требуется.

Чтобы решить вашу проблему, вы должны изменить эту политику.

http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

Перезагрузите сервер и попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...