ID Token

Простыми словами

ID Token — подписанный набор утверждений OpenID Connect о факте аутентификации пользователя, предназначенный клиентскому приложению. Он помогает клиенту создать сеанс, но не служит универсальным пропуском к произвольному API.

Как применяется

Клиент получает ID Token от доверенного OpenID Provider, проверяет подпись, issuer, audience, срок, nonce и другие обязательные параметры. Для вызова API используют access token с подходящими полномочиями, а данные профиля берут только из доверенных claims.

Пример применения

Веб-приложение отправляет nonce в запросе входа. После возврата оно проверяет `iss`, собственный `aud`, `exp` и совпадение nonce, затем создаёт локальную сессию; ID Token не передаётся микросервису как access token.

Не путать с

  • JWTJWT — лишь возможный формат представления.
  • access tokenaccess token даёт предъявителю полномочия обратиться к ресурсу.
  • Refresh tokenRefresh token используется для получения новых токенов, а JWT — лишь возможный формат представления.

Как это работает

  1. Запросить входКлиент направляет пользователя к OpenID Provider с client_id, redirect URI, state и nonce.
  2. АутентифицироватьПровайдер проверяет пользователя и формирует утверждения для конкретного клиента.
  3. Выдать токенПодписанный ID Token возвращается через разрешённый поток вместе с необходимыми параметрами.
  4. Проверить и создать сессиюКлиент валидирует криптографию и claims, связывает ответ с запросом и только затем доверяет результату.

Частые вопросы

Можно ли отправлять ID Token в API?

Обычно нет: API ожидает access token с нужной аудиторией и полномочиями.

Нужно ли проверять подпись, если токен пришёл по TLS?

Да. TLS защищает канал, а валидация токена подтверждает издателя, аудиторию, срок и целостность объекта.

Зачем нужен nonce?

Он связывает ответ с конкретным запросом клиента и помогает предотвращать повтор и подмену результата аутентификации.

ID Token — токен OIDC с утверждениями об аутентификации и идентичности пользователя для клиентского приложения.