Бета · редакция 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 соответствующей версии.
Проверка знаний
Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.