← Назад к вопросам
Как происходит базовая авторизация в Spring Security
1.0 Junior🔥 251 комментариев
#Spring Framework#Безопасность
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Базовая авторизация в Spring Security
Базовая авторизация (Basic Authentication) — это простой механизм аутентификации, встроенный в HTTP протокол. В Spring Security это реализуется с помощью фильтра BasicAuthenticationFilter (или HttpBasic в более новых версиях).
Как это работает
- Кодирование учётных данных: Клиент кодирует логин и пароль в формате Base64 (username:password)
- Отправка заголовка: Клиент отправляет HTTP заголовок:
Authorization: Basic base64(username:password) - Обработка на сервере: Spring Security перехватывает запрос и извлекает учётные данные
- Проверка credentials: Сравнивает пароль с хранилищем (UserDetailsService)
- Создание токена: При успехе создаёт 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.