Бета · редакция 2026.10-beta1 · MCP 2026-07-28

Authorization Code и PKCE

L25 · MCP 2026-07-28 · открытая бета · редакция 2026.10-beta1

Authorization Code + PKCE защищает обмен кода на токен привязкой к секрету конкретной попытки. Я генерирую новый verifier для каждой авторизации. Challenge получается через SHA-256 и base64url без padding; метод называется S256.

Предварительно: L24

Как я это использую

В authorization request отправляется challenge, в token request — исходный verifier. Redirect URI, resource и контекст попытки должны оставаться согласованными. State защищает корреляцию браузерного возврата с начатой попыткой; PKCE не заменяет state, issuer validation или проверку redirect URI. Код одноразовый и имеет небольшой срок жизни.

Привязка обмена кода

Разбираем конкретный контракт

Это учебный fixture: поля с доменом .example и идентификаторы вымышлены. Если показан фрагмент, его нужно поместить в соответствующий envelope выбранного профиля.

{
  "verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk",
  "code_challenge": "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM",
  "code_challenge_method": "S256"
}

Лаборатория · L25

Измените условия, проверьте результат и разберите ошибку. Все адреса и данные учебные.

Что легко сломать

В лаборатории используются только синтетические значения. Рассчитайте challenge кнопкой Web Crypto, затем соберите ответ и отправьте проверку на сервер. Никогда не вставляйте сюда реальный authorization code, client secret или токен. Неправильный padding и обычный base64 вместо base64url — частые ошибки.

Практика и самопроверка

Собрать S256 challenge из учебного verifier; пройти redirect и обмен кода. Сервер оценивает новый вариант задачи с неверным verifier или redirect.

Я советую сначала предсказать результат, затем изменить один параметр в лаборатории и объяснить разницу. Сохраните небольшой fixture с нормальным и ошибочным случаем для своего проекта. На этом уроке практический результат проверяется сервером: войдите в аккаунт, начните попытку и выполните условия. Без неё урок не завершится.

В конце страницы — три вопроса. После правильных ответов можно завершить урок; ошибка в следующей тренировке не стирает уже полученное подтверждение этой редакции теста.

Попробовать локально

Скачать reference-проект с lockfile и тестами (после входа). Распакуйте в отдельную папку, используйте Node.js 22.14 или новее.

npm ci
npm test
npm start

npm start запускает локальный stdio-сервер задач. Остановите его после практики. Тесты используют официальный TypeScript SDK v2.3.1, проверяют современный HTTP handler, MRTR, отказ и подмену состояния. Fake AS проверяет PKCE, issuer, audience и одноразовый code без внешнего аккаунта. Это учебный проект: production требует долговременного хранилища, настоящей проверки токенов и транзакционной идемпотентности.

На что я опирался

Профиль и ссылки проверены 15 октября 2026. Core, deprecated compatibility и extensions в этом курсе помечены отдельно. Примеры объясняют выбранные сценарии; для реализации сверяйте нормативные MUST/SHOULD и schema соответствующей версии.

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

Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.

Как вычисляется S256 challenge?

Куда передают verifier?

Заменяет ли PKCE проверку issuer и state?