Этап 4 из 15 · ≈ 6 ч

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

Основа с Junior

Сессии и токены, JWT, OAuth 2.0 и OpenID Connect, роли и права доступа.

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

  • Аутентификация — кто вы; авторизация — что вам можно.
  • Сессия на сервере + cookie или токен (JWT) у клиента; JWT нельзя отозвать до истечения — короткий срок и refresh-токен.
  • OAuth 2.0 — делегирование доступа; OpenID Connect — вход через внешнего провайдера (Яндекс ID, VK ID, корпоративный SSO).
  • Пароли — только медленным хешем с солью.
  • Проверка доступа к объекту: «пользователь видит только свои заказы» — частая уязвимость (IDOR), если проверяют лишь вход.
  • Роли (RBAC) и атрибуты (ABAC) для сложных правил.

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

Junior ≈ 6 ч

  • Объясняет разницу аутентификации и авторизации
  • Хранит пароли хешем bcrypt или Argon2 и реализует вход с сессией или токеном

Практика. Реализовать регистрацию и вход с хешированием паролей и защищённым эндпоинтом.

Middle ≈ 8 ч

  • Реализует JWT с коротким временем жизни и обновлением токена, объясняет компромиссы
  • Подключает вход через OAuth 2.0 и OpenID Connect
  • Проверяет права на уровне объекта, а не только эндпоинта

Практика. Добавить вход через внешнего провайдера по OIDC, обновление токенов и проверку владельца ресурса.

Senior ≈ 4 ч

  • Проектирует модель доступа (роли, атрибуты, владение) для системы с несколькими клиентами

Практика. Спроектировать модель прав для B2B-продукта с организациями, ролями и приглашениями и описать её в design doc.

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

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

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

Смотреть все
Что верно про использование JWT для аутентификации?Middle

JWT самодостаточен — сервер проверяет подпись без базы. Отсюда главный минус: его нельзя отозвать до истечения. Решение — короткий access-токен (минуты) и отзываемый refresh, хранимый на сервере.

Полный разбор
Чем аутентификация отличается от авторизации?Junior

Аутентификация — «кто ты» (проверка личности); авторизация — «что тебе можно» (проверка прав на действие и ресурс).

Полный разбор
Эндпоинт GET /orders/{id} проверяет, что пользователь аутентифицирован, и возвращает заказ по идентификатору. Что здесь не так?Middle

Проверено «кто ты» (аутентификация), но не «можно ли тебе этот заказ» (авторизация): любой вошедший пользователь читает чужие заказы, перебирая id. Это IDOR — Broken Access Control, A01 в OWASP Top 10.

Полный разбор
Как правильно хранить пароли пользователей?Junior

Не хранить пароль вовсе — только результат медленной функции с солью: argon2id, bcrypt или scrypt. При входе считаем то же самое и сравниваем.

Полный разбор
Чем cookie отличается от server-side session?Junior

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

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

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

Полный разбор
Чем аутентификация отличается от авторизации?Junior

Идентификация — кто вы (логин), аутентификация — докажите это (пароль, код), авторизация — что вам разрешено делать.

Полный разбор
Чем хеширование отличается от шифрования и кодирования?Junior

Кодирование (Base64, URL-кодирование) — смена формата, обратимо без секрета. Шифрование — обратимо только с ключом. Хеширование — необратимый отпечаток фиксированной длины.

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

Разборы темы

← Вся карта «Backend-разработчик»

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

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

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

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