← Назад к вопросам

Как происходит базовая авторизация в Spring Security

1.0 Junior🔥 251 комментариев
#Spring Framework#Безопасность

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Базовая авторизация в Spring Security

Базовая авторизация (Basic Authentication) — это простой механизм аутентификации, встроенный в HTTP протокол. В Spring Security это реализуется с помощью фильтра BasicAuthenticationFilter (или HttpBasic в более новых версиях).

Как это работает

  1. Кодирование учётных данных: Клиент кодирует логин и пароль в формате Base64 (username:password)
  2. Отправка заголовка: Клиент отправляет HTTP заголовок: Authorization: Basic base64(username:password)
  3. Обработка на сервере: Spring Security перехватывает запрос и извлекает учётные данные
  4. Проверка credentials: Сравнивает пароль с хранилищем (UserDetailsService)
  5. Создание токена: При успехе создаёт Authentication объект и сохраняет в SecurityContext

Базовая конфигурация

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .httpBasic() // Включаем базовую авторизацию
            .and()
            .authorizeRequests()
                .antMatchers("/public/**").permitAll()
                .anyRequest().authenticated()
            .and()
            .csrf().disable(); // Отключаем CSRF для простоты
        
        return http.build();
    }
    
    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails user = User.builder()
            .username("admin")
            .password("{noop}password") // {noop} = no operation (plain text)
            .roles("ADMIN")
            .build();
        
        return new InMemoryUserDetailsManager(user);
    }
}

Пример запроса с curl

# Отправляем логин и пароль
curl -u admin:password http://localhost:8080/api/protected

# Результат в заголовках:
# Authorization: Basic YWRtaW46cGFzc3dvcmQ=

Важные особенности

Недостатки базовой авторизации:

  • Учётные данные отправляются при каждом запросе (нужен HTTPS)
  • Нет логаута (logout) — браузер хранит credentials
  • Нет защиты от CSRF атак без дополнительных мер
  • Невозможно управлять сессией

Когда использовать:

  • Простые REST API с HTTPS
  • Service-to-service коммуникация
  • Development и тестирование
  • Внутренние системы с высокой степенью доверия

Spring Security 6.0+:

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests(auth -> auth
            .requestMatchers("/public/**").permitAll()
            .anyRequest().authenticated())
        .httpBasic(Customizer.withDefaults());
    
    return http.build();
}

Базовая авторизация — это фундамент для понимания более сложных механизмов, таких как OAuth2 и JWT.