Перейти к содержанию

Единый вход: OAuth, OIDC и passkeys

Построим «Пропуск» — локальное приложение с входом через Keycloak. Проследим OIDC Discovery, authorization code и PKCE, callback, серверную сессию и роли. Добавим защищённую редакторскую заявку, второе приложение, разные виды выхода и обновление токенов. Завершим регистрацией passkey у провайдера, сценарием восстановления доступа и границами реального выпуска.

Закреплены Node.js 22.14.0, openid-client 6.8.8, Keycloak 26.5.2. Это выбранный учебный профиль, а не утверждение о самых новых версиях. Перед реальной публикацией нужны актуальные исправления, HTTPS и отдельная эксплуатационная подготовка. В архиве нет Docker-образов, npm-зависимостей, действующих аккаунтов или токенов.

Предполагается понимание HTTP, cookies, JavaScript, асинхронных функций и локальных контейнеров. Учебные пользователи вымышлены. Каждый снимок содержит полный realm; новый импорт не обновляет уже существующий realm. README объясняет отдельные compose-проекты и ручной перенос изменений. Passkeys требуют поддерживаемого браузера, ОС и аутентификатора; восстановление в курсе использует второй ключ и заранее оставленный локальный пароль, без SMTP и recovery codes.

В серии 14 уроков. Каждая lesson-NN в архиве исходников является самостоятельным состоянием. Команды, серверы, модели, вход, WebAuthn и сценарии оценки при подготовке не запускались. Тесты и публикация учебных приложений не выполнялись.

Оглавление

  1. Keycloak и OIDC: идентичность, полномочия и проект «Пропуск» — Разделить приложение, провайдера идентичности и браузер.
  2. Локальный Keycloak и учебный realm — Создать декларативный realm, пользователей и клиент приложения.
  3. OIDC Discovery и проверка провайдера — Получить конфигурацию строго заданного издателя.
  4. Вход через OIDC: state, nonce и PKCE — Связать попытку входа с браузером и создать одноразовые параметры.
  5. Keycloak и OIDC: обмен кода и проверенный профиль — Обменять code с verifier и получить подтверждённые claims.
  6. Keycloak и OIDC: серверная сессия и cookie браузера — Заменить временную попытку входа новой локальной сессией.
  7. Keycloak и OIDC: роли пользователя и доступ к операциям — Передавать роли в проверенных claims и защищать серверную операцию.
  8. Keycloak и OIDC: изменение данных и защита от CSRF — Проверять метод, Origin и токен перед сохранением заявки.
  9. Keycloak и OIDC: два приложения и единый вход — Добавить второй клиент с отдельными redirect URI и cookie.
  10. Keycloak и OIDC: локальный выход и завершение SSO — Разделить удаление локальной сессии и RP-initiated logout.
  11. Keycloak и OIDC: обновление токенов и срок полномочий — Обновить токены по серверному сроку и сохранить границу отзыва.
  12. Passkey в Keycloak: регистрация ключа доступа — Включить passwordless-политику и направить пользователя на регистрацию.
  13. Keycloak и OIDC: восстановление доступа и запасной ключ — Описать второй passkey, резервный пароль и отзыв утраченного ключа.
  14. Keycloak и OIDC: эксплуатационный контракт единого входа — Зафиксировать HTTPS, внешнюю сессию, конфигурацию и журнал событий.

Продолжение маршрута

AI-помощник по документам показывает пример будущего защищённого сервиса. Другие серии новой партии собраны в маршрутах веб-приложений.