Направления / API, мобильные приложения и современные интерфейсы

OAuth 2.1, OIDC и токены в сервисах

API, мобильные приложения и современные интерфейсы

Как правильно делегировать доступ, не создавая дыр: потоки, токены, области действия и типовые ошибки.

продвинутый~50 минOAuthOIDCтокеныделегирование

Зачем это нужно

  • Ошибки в OAuth — одна из самых частых причин серьёзных утечек в современных приложениях.
  • Правильное делегирование доступа снижает объём хранимых секретов.
  • Понимание потоков необходимо для проверки любых интеграций.

Теория

OAuth 2.1 — протокол делегирования доступа: клиент получает разрешение у владельца ресурса и обменивает его на токен доступа. Для веб-приложений с серверной частью применяется код авторизации с обязательным подтверждением ключа (PKCE); для одностраничных и мобильных приложений — также код с PKCE; для сервисов без пользователя — доверенные учётные данные клиента. Неявный поток исключён как небезопасный.

OpenID Connect добавляет аутентификацию поверх OAuth: идентификатор-токен, сведения о пользователе и стандартные механизмы выпуска. Важна корректная проверка подписи, издателя, аудитории, срока и одноразового значения. Токены доступа должны быть узкими по областям действия, короткоживущими и привязанными к аудитории; токены обновления — защищёнными, с возможностью отзыва и ротации.

Типовые ошибки: отсутствие проверки значения состояния и одноразового значения при входе; открытые перенаправления после авторизации; хранение токенов в местах, доступных скриптам страницы; слишком широкие области действия; проверка только подписи без проверки аудитории и издателя; отсутствие отзыва; доверие к токену, выпущенному для другого сервиса. Защита строится на строгой проверке всех полей, узких областях, коротких сроках и явном управлении клиентами.

Ключевые концепции

Код авторизации с PKCE
Рекомендуемый поток: подтверждение ключа защищает от перехвата кода.
Области действия
Границы разрешений, которые запрашивает клиент: должны быть минимально необходимыми.
Аудитория токена
Сервис, для которого выпущен токен: обязательная проверка при приёме.
Токен обновления и его ротация
Долгоживущий токен с ограничениями, ротацией и возможностью отзыва.
Открытое перенаправление
Неконтролируемая передача данных авторизации на чужой адрес.
Согласие и его отзыв
Пользователь должен видеть запрашиваемые права и иметь возможность их отозвать.

Инструменты

  • Библиотеки и провайдеры удостоверений, поддерживающие современные потоки.
  • Средства анализа токенов: проверка подписи, полей, сроков действия.
  • Тестовые окружения для проверки интеграций OAuth.
  • Инструменты отладки интеграций: инспекторы запросов в своей лаборатории.
  • Сканеры конфигурации провайдеров удостоверений.

Практика в легальных лабораториях

  • Настройте в лаборатории провайдера удостоверений и подключите к нему тестовое приложение.
  • Проверьте, что приложение отклоняет токен с неверной аудиторией или издателем.
  • Настройте минимальные области действия и убедитесь, что расширенные операции недоступны.
  • Смоделируйте отзыв доступа и проверьте, что приложение реагирует корректно.
  • Составьте чек-лист проверки интеграции OAuth и OIDC.

Защита, детект и защитные меры

  • Применяйте только рекомендованные потоки и обязательное подтверждение ключа.
  • Проверяйте все поля токена: подпись, издателя, аудиторию, сроки, одноразовые значения.
  • Выдавайте узкие области действия и короткие сроки; настраивайте ротацию и отзыв.
  • Регистрируйте точные адреса перенаправления и запрещайте подстановочные.

Правовая рамка и этика

  • Проверка интеграций выполняется на своих приложениях и в тестовых окружениях провайдеров.
  • Не используйте чужие идентификаторы клиентов и секреты, найденные в открытых источниках.

Типичные ошибки

  • Использовать неявный поток или доверять токену без проверки аудитории.
  • Хранить токены обновления в местах, доступных клиентскому коду.
  • Запрашивать широкие области действия «на будущее».

Чек-лист «умею»

  • Знаю рекомендованные потоки и почему они безопаснее.
  • Проверяю все обязательные поля токена.
  • Настраиваю области действия по минимуму.
  • Умею организовать отзыв и ротацию.
  • Понимаю разницу между OAuth и аутентификацией по OIDC.

Вопросы на интервью

  • Почему неявный поток исключён из рекомендаций?
  • Какие поля токена обязательно проверять и почему?
  • Как вы ограничите ущерб от утечки токена обновления?

Источники и первоисточники

CyberPath — обучение пентесту, кибербезопасности и сетевой грамотности