Получить доступ

Как Spring Security встраивается в обработку запроса?

JuniorSpring Security
Ещё спрашивают так:
  • Где Spring Security проверяет доступ?
Коротко

Через цепочку сервлетных фильтров до DispatcherServlet: аутентификация и проверка доступа происходят до контроллера. Неаутентифицированный — 401, без прав — 403.

  • Цепочка настраивается бином SecurityFilterChain
  • Результат аутентификации — в SecurityContext
  • Права на методы — @PreAuthorize

А ещё Контроллер получает пользователя через @AuthenticationPrincipal

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

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

Что хотят услышать

  • Фильтры до контроллера.
  • Коды ответа и SecurityContext.

Частые ошибки

  • Полагаться только на аннотации на методах.
  • Игнорировать порядок правил при настройке доступа.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Цепочкой сервлетных фильтров, которая срабатывает до попадания запроса в контроллер
  • ✗Аннотацией на каждом методе контроллера, без которой защиты нет
  • ✗Проверкой прав на уровне базы данных
  • ✗Отдельным сервером-шлюзом перед приложением

Что спросят дальше

  • Почему порядок правил авторизации важен?
  • Что хранится в контексте безопасности?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем