Этап 5 из 10 · ≈ 10 ч

Spring Security

Основа с Middle

Цепочка фильтров, аутентификация, JWT и OAuth 2.0, авторизация методов.

Что важно знать

  • Запрос проходит цепочку фильтров; каждый отвечает за свою часть.
  • SecurityContext хранит аутентифицированного пользователя.
  • Resource server проверяет JWT по ключам провайдера.
  • @PreAuthorize с выражениями — проверка прав на уровне метода.
  • CSRF включён по умолчанию — для API с токенами его настраивают осознанно.

Критерии освоения

Middle ≈ 10 ч

  • Настраивает SecurityFilterChain для REST API с JWT
  • Подключает вход через OAuth 2.0 и OIDC и сервер ресурсов
  • Защищает методы через @PreAuthorize с проверкой владельца ресурса

Практика. Защитить API заказов JWT-токенами внешнего провайдера, разграничить роли и проверку владельца.

Senior ≈ 6 ч

  • Объясняет устройство цепочки фильтров и пишет свой фильтр аутентификации
  • Проектирует безопасность для нескольких сервисов и клиентов

Практика. Реализовать аутентификацию по API-ключу для партнёров отдельной цепочкой фильтров рядом с JWT для пользователей.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Чем cookie отличается от server-side session?Junior

Cookie — небольшие данные, которые хранит браузер и отправляет с каждым запросом к домену. Серверная сессия — данные на сервере, а в cookie лежит только её идентификатор (JSESSIONID).

Полный разбор
Как в Spring Security устроены аутентификация и авторизация — какие объекты за них отвечают?Middle

Аутентификация: фильтр извлекает учётные данные → AuthenticationManager (через AuthenticationProvider, UserDetailsService, PasswordEncoder) проверяет → готовый Authentication кладётся в SecurityContext. Авторизация: AuthorizationManager сверяет права…

Полный разбор
Как устроена SecurityFilterChain в Spring Security?Senior

Spring Security — цепочка сервлетных фильтров. В контейнер встраивается DelegatingFilterProxy → FilterChainProxy, который выбирает подходящую SecurityFilterChain по запросу и прогоняет его через её фильтры (CORS, CSRF, аутентификация, ExceptionTranslation…

Полный разбор
Почему HTTP называют протоколом без состояния (stateless)?Junior

Каждый запрос HTTP независим: сервер не помнит предыдущие. Чтобы связать запросы одного пользователя, нужен явный механизм — cookie с идентификатором сессии или токен.

Полный разбор
Когда CSRF-защита нужна в Spring Security, а когда её часто отключают?Middle

CSRF-защита нужна, когда браузер сам прикладывает учётные данные — cookie сессии. Для stateless API с токеном в заголовке Authorization её обычно отключают: браузер не подставит такой заголовок на чужом сайте.

Полный разбор
Чем JWT отличается от OAuth2/OIDC?Senior

Разные уровни: JWT — формат токена (подписанный JSON). OAuth2 — протокол делегирования доступа: как приложение получает токен доступа к API от имени пользователя. OIDC — надстройка над OAuth2 для аутентификации: ID Token (JWT) с данными о пользователе.

Полный разбор

Разборы темы

← Вся карта «Spring»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования