Что такое авторизация и аутентификация? Чем они отличаются?
Аутентификация — это проверка личности пользователя (кто вы?). Авторизация — это проверка прав доступа (что вам разрешено делать?).
Аналогия из жизни: аутентификация — это когда охранник на входе в здание проверяет ваш пропуск и убеждается, что вы — тот, за кого себя выдаёте. Авторизация — это когда система доступа определяет, на какие этажи вам разрешён проход.
| Характеристика | Аутентификация (Authentication) | Авторизация (Authorization) |
|---|---|---|
| Вопрос | Кто вы? | Что вам можно? |
| Порядок | Первая (до авторизации) | Вторая (после аутентификации) |
| Данные | Логин/пароль, токен, биометрия | Роли, права, permissions |
| Результат | Подтверждение или отказ в личности | Разрешение или запрет действия |
| HTTP-код отказа | 401 Unauthorized | 403 Forbidden |
Виды аутентификации
- По паролю — логин + пароль (Basic Auth, форма логина)
- По токену — JWT, OAuth2 Access Token
- Многофакторная (MFA) — пароль + SMS-код / TOTP
- По сертификату — TLS client certificate
- Биометрическая — отпечаток пальца, распознавание лица
Эти два процесса неразрывно связаны: без аутентификации невозможна авторизация (нельзя проверить права, не зная, кто обращается), а аутентификация без авторизации бессмысленна (нет смысла знать, кто пользователь, если не управлять доступом). В Spring Security аутентификация реализуется через AuthenticationManager, а авторизация — через AccessDecisionManager и аннотации @PreAuthorize, @Secured.
На собеседовании: ключевая разница — аутентификация отвечает на вопрос «кто?», авторизация — на вопрос «что можно?». Запомните HTTP-коды: 401 (не аутентифицирован) vs 403 (не авторизован). Частая ошибка — путать эти понятия или использовать как синонимы.