OAuth2 & OpenID Connect Deep Dive · Урок

Проверка стандартных утверждений ID-токена

Изучите обязательные этапы проверки утверждений iss, aud, exp, iat и nonce в ID-токене OpenID Connect.

Урок 4 из 413 шагов

«Проверка стандартных утверждений ID-токена» — бесплатный урок OAuth2 & OpenID Connect Deep Dive на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения OAuth2 & OpenID Connect Deep Dive, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс OAuth2 & OpenID Connect Deep Dive содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Signature Is Not Enough

Verifying an ID token's signature proves it came from the provider, but you must also validate its claims to ensure it was meant for you, right now, and is still valid. A valid signature on a token meant for another app is still dangerous.

Validate iss (Issuer)

The iss claim must exactly equal the issuer identifier of your trusted provider, as published in its discovery document. Reject anything else.

if (claims.iss !== 'https://op.example.com') reject();

Validate aud (Audience)

The aud claim must contain your client_id. If aud is an array with multiple values, an azp (authorized party) claim must be present and equal your client_id.

const auds = Array.isArray(claims.aud) ? claims.aud : [claims.aud];
if (!auds.includes(MY_CLIENT_ID)) reject();

Validate exp (Expiration)

The exp claim is a Unix timestamp. The current time must be before exp. Reject expired tokens; allow a small clock skew (a few minutes) at most.

const now = Math.floor(Date.now() / 1000);
if (now >= claims.exp) reject('expired');

Validate iat (Issued At)

The iat claim says when the token was issued. You can reject tokens that are unreasonably old, and use iat to enforce freshness policies.

if (now - claims.iat > MAX_AGE_SECONDS) reject('too old');

Validate nonce

If you sent a nonce in the authentication request, the token's nonce must equal the value you stored. This blocks replay.

if (claims.nonce !== session.nonce) reject('nonce mismatch');

Check azp When Present

The azp (authorized party) claim identifies which client the token was issued to when there are multiple audiences. If present, it must match your client_id.

auth_time and max_age

If you requested max_age or auth_time is essential, verify the auth_time claim shows the user authenticated recently enough; otherwise force re-authentication.

Order of Operations

A safe sequence:

  • Decode and verify the signature (correct alg + key).
  • Validate iss, aud/azp.
  • Validate exp, iat (and auth_time if needed).
  • Validate nonce.

Only after all pass do you trust the identity.

A Combined Check

Bringing the claim validations together:

function validateClaims(c, cfg, now) {
  if (c.iss !== cfg.issuer) throw 'bad iss';
  const auds = [].concat(c.aud);
  if (!auds.includes(cfg.clientId)) throw 'bad aud';
  if (now >= c.exp) throw 'expired';
  if (c.nonce !== cfg.nonce) throw 'bad nonce';
  return true;
}

Use a Vetted Library

Hand-rolling JWT validation invites subtle bugs (alg confusion, skew handling). Prefer a well-maintained OIDC/JWT library and only configure the policy; let it enforce signature and claim checks.

Quick Check

Check your claim-validation knowledge.

Recap

Validating ID token claims goes beyond the signature:

  • iss must match the trusted issuer; aud must include your client_id.
  • exp/iat enforce validity and freshness (allow small skew).
  • nonce blocks replay; check azp with multiple audiences.
  • Prefer a vetted library over hand-rolled checks.
Можно начать бесплатно

Изучай OAuth2 & OpenID Connect Deep Dive с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

Часто задаваемые вопросы

Урок «Проверка стандартных утверждений ID-токена» бесплатный?

Да — полный текст урока «Проверка стандартных утверждений ID-токена» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс OAuth2 & OpenID Connect Deep Dive, подпишись на CoddyKit PRO. Курс OAuth2 & OpenID Connect Deep Dive содержит 4 уроков всего.

Чему я научусь в уроке «Проверка стандартных утверждений ID-токена»?

Изучите обязательные этапы проверки утверждений iss, aud, exp, iat и nonce в ID-токене OpenID Connect. Ты практикуешь OAuth2 & OpenID Connect Deep Dive с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать OAuth2 & OpenID Connect Deep Dive?

Предыдущий опыт не требуется. OAuth2 & OpenID Connect Deep Dive на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Проверка стандартных утверждений ID-токена»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке OAuth2 & OpenID Connect Deep Dive?

Да. Каждый урок OAuth2 & OpenID Connect Deep Dive включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Структура и подпись токена ID
  2. JWS и наборы JWK
  3. Отзыв и интроспекция токенов
  4. Проверка стандартных утверждений ID-токена
← Назад к OAuth2 & OpenID Connect Deep Dive