Ответ вслух Junior Spring Security обновлено

Аутентификация и авторизация в Spring

Вопрос

Объясните разницу между аутентификацией и авторизацией и где каждая происходит в Spring Security.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Аутентификация отвечает на вопрос «кто вы»: проверка пароля, токена или сертификата. Если она не прошла, ответ 401.

Что должно прозвучать в ответе

  • Аутентификация: установить личность, 401

  • Авторизация: проверить права, 403

  • Аутентификацию делают фильтры и AuthenticationManager

  • Результат в SecurityContextHolder

  • Авторизация: AuthorizationFilter по URL и @PreAuthorize на методах

Что могут спросить следом

  • Как получить текущего пользователя в контроллере?
  • Почему проверки только на фронтенде недостаточно?

Разбор

Аутентификация отвечает на вопрос «кто вы»: проверка пароля, токена или сертификата. Если она не прошла, ответ 401. Авторизация отвечает «что вам можно»: роли и права, отказ даёт 403. В Spring Security аутентификацию выполняют фильтры цепочки, например BearerTokenAuthenticationFilter, через AuthenticationManager и провайдеры, а результат, объект Authentication с authorities, кладётся в SecurityContextHolder. Авторизацию делает AuthorizationFilter по правилам URL и методная безопасность через @PreAuthorize. В контроллере пользователя получаю через @AuthenticationPrincipal. Проверки прав всегда на сервере: фронтенд можно обойти прямым запросом.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.