Чем JWT отличается от OAuth2/OIDC?
- Чем OAuth2 отличается от OpenID Connect?
Разные уровни: JWT — формат токена (подписанный JSON). OAuth2 — протокол делегирования доступа: как приложение получает токен доступа к API от имени пользователя. OIDC — надстройка над OAuth2 для аутентификации: ID Token (JWT) с данными о пользователе.
- Access token в OAuth2 может быть JWT, а может быть непрозрачной строкой
- OAuth2 сам не говорит, кто пользователь, — для входа нужен OIDC
- В Spring: oauth2Login (клиент, вход через OIDC) и oauth2ResourceServer (API проверяет токены)
А ещё Провайдеры: Keycloak, Яндекс ID, Google, Auth0
Подробно
JWT — способ упаковать утверждения (claims) в подписанный токен: header.payload.signature. Ничего не говорит о том, как токен получен.
OAuth2 — фреймворк авторизации: роли — владелец ресурса (пользователь), клиент (приложение), сервер авторизации, сервер ресурсов (API). Потоки получения токена: authorization code (+PKCE) для веб и мобильных приложений, client credentials для сервис-к-сервису, device code для ТВ. Результат — access token с областями доступа (scopes): «этому приложению можно читать календарь». OAuth2 не определяет формат токена и не предназначен для входа.
OpenID Connect добавляет аутентификацию: при scope openid сервер возвращает ID Token — JWT с sub (идентификатор пользователя), iss, aud, exp, и есть эндпоинт userinfo. Это «вход через Яндекс ID».
В Spring Security:
oauth2Login()— приложение-клиент: перенаправляет на провайдера, получает ID Token, создаёт сессию;oauth2ResourceServer().jwt()— API проверяет подпись access token по JWKS провайдера и берёт права из claims;- Spring Authorization Server — свой сервер авторизации.
Что хотят услышать
- Уровни: формат, протокол доступа, протокол аутентификации.
- Access token и ID Token.
- Потоки OAuth2 и поддержка в Spring.
Частые ошибки
- Использовать access token как доказательство личности для входа.
- Говорить «OAuth2 — это JWT».
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗JWT — протокол входа, OAuth2 — формат токена
- ✗Это названия одного стандарта
- ✗OAuth2 сам сообщает, кто пользователь, а OIDC нужен только для шифрования токенов при передаче по сети
- ✓JWT — формат токена; OAuth2 — делегирование доступа; OIDC — аутентификация поверх OAuth2
Что спросят дальше
- Что такое scope vs role?
- Когда нужен opaque token?
Разбор темы
- Аутентификация: JWT, OAuth2/OIDC и method security
Структура и валидация JWT, проблема отзыва, роли OAuth2 и authorization code flow, OIDC, и авторизация на уровне методов.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.