Как Spring Security встраивается в обработку запроса?
- Где Spring Security проверяет доступ?
Через цепочку сервлетных фильтров до DispatcherServlet: аутентификация и проверка доступа происходят до контроллера. Неаутентифицированный — 401, без прав — 403.
- Цепочка настраивается бином SecurityFilterChain
- Результат аутентификации — в SecurityContext
- Права на методы — @PreAuthorize
А ещё Контроллер получает пользователя через @AuthenticationPrincipal
Подробно
Каждый фильтр отвечает за свою задачу — разбор данных аутентификации, проверка CSRF, установка контекста безопасности, проверка прав на запрос — и решает, пропускать ли запрос дальше по цепочке. Из этого следуют два практических вывода. Порядок фильтров и порядок правил авторизации значим: применяется первое подошедшее правило. И защита работает независимо от контроллеров, поэтому не может быть обойдена забытой аннотацией; аннотации на методах — дополнительный уровень поверх, а не единственный.
Что хотят услышать
- Фильтры до контроллера.
- Коды ответа и SecurityContext.
Частые ошибки
- Полагаться только на аннотации на методах.
- Игнорировать порядок правил при настройке доступа.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Аннотацией на каждом методе контроллера, без которой защиты нет вообще
- ✗Проверкой прав на уровне базы данных через представления и триггеры
- ✗Отдельным сервером-шлюзом, который запускается перед приложением
- ✓Цепочкой сервлетных фильтров, которые срабатывают до контроллера
Что спросят дальше
- Почему порядок правил авторизации важен?
- Что хранится в контексте безопасности?
Разбор темы
- Spring Security: фильтр-цепочка и авторизация
SecurityFilterChain, аутентификация (UserDetailsService/PasswordEncoder), SecurityContext, авторизация запросов и CSRF/CORS/сессии.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.