Потоки OAuth 2.0 и типы токенов
Сравните потоки кода авторизации, неявный поток, поток учетных данных клиента и поток для устройств — и узнайте, когда использовать каждый из них.
«Потоки OAuth 2.0 и типы токенов» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Основные роли OAuth 2.0
OAuth 2.0 определяет четыре роли. Владелец ресурса — пользователь, которому принадлежат данные, например файлы на Google Drive. Клиент — приложение, запрашивающее доступ. Сервер авторизации выдаёт токены доступа, например сервер OAuth компании Google. Сервер ресурсов хранит защищённые данные, например API Google Drive. Понимание этих ролей помогает разобраться в назначении каждого потока.
Поток кода авторизации
Поток кода авторизации — правильный выбор для веб-приложений с серверной частью. Пользователь проходит аутентификацию на сервере авторизации, который перенаправляет его на клиент, передавая короткоживущий код авторизации. Сервер клиента обменивает этот код на токены с помощью запроса по обратному каналу. Токены никогда не проходят через браузер, что защищает их от утечки через историю браузера и реферер.
Неявный поток: устарел
Неявный поток был разработан для браузерных приложений на JavaScript, которые не могли безопасно хранить секреты клиента. Токены возвращались непосредственно во фрагменте URL, минуя обратный канал. В OAuth 2.1 неявный поток признан устаревшим, поскольку PKCE (RFC 7636) позволяет публичным клиентам безопасно использовать поток кода авторизации без секрета клиента.
Учётные данные владельца ресурса по паролю
Поток ROPC позволяет клиентам напрямую получать имя пользователя и пароль пользователя и обменивать их на токены. Он предназначался для полностью доверенных собственных клиентов, но фактически противоречит самой цели OAuth — не позволять приложениям видеть учётные данные пользователей. В OAuth 2.1 этот поток признан устаревшим, и его не следует использовать в новых приложениях.
Поток учётных данных клиента
Поток учётных данных клиента предназначен для аутентификации между машинами (M2M), когда пользователь не участвует в процессе. Клиент напрямую проходит аутентификацию на сервере авторизации с помощью своего идентификатора клиента и секрета, получая токен доступа для собственного использования. Распространённые сценарии: фоновые задания, взаимодействие микросервиса с микросервисом и доступ шлюзов программного интерфейса к внутренним сервисам.
Поток авторизации устройства
Поток авторизации устройства (RFC 8628) обеспечивает работу OAuth на устройствах с ограниченными возможностями ввода: умных телевизорах, игровых консолях, принтерах и устройствах IoT. Устройство показывает короткий код и URL. Пользователь открывает URL на телефоне или компьютере и подтверждает авторизацию. Устройство периодически опрашивает сервер авторизации, пока пользователь не завершит авторизацию.
Типы токенов доступа
OAuth 2.0 определяет два типа токенов доступа. Непрозрачные токены — это случайные строки, которые сервер ресурсов проверяет, обращаясь к конечной точке интроспекции сервера авторизации. Токены доступа JWT самодостаточны: сервер ресурсов может проверить их локально, проверив подпись. Это сокращает число обращений к программному интерфейсу интроспекции, но требует управления ключами.
Токены обновления и их замена
Токены обновления — это долгоживущие учётные данные, используемые для получения новых токенов доступа после истечения срока действия токена доступа. При замене токена обновления, обязательной в OAuth 2.1 для публичных клиентов, при каждом использовании выдаётся новый токен обновления, а старый становится недействительным. Если используется украденный токен обновления, легитимный клиент обнаруживает его недействительность, что позволяет выявить кражу токена.
Проверка токенов
RFC 7662 определяет конечную точку проверки токенов, с помощью которой серверы ресурсов могут запросить у сервера авторизации текущий статус непрозрачного токена доступа (активен или неактивен), его область действия, субъект и срок действия. Проверка токенов обеспечивает отзыв в реальном времени: после отзыва токена на сервере авторизации обращения к конечной точке немедленно возвращают active: false.
Отзыв токенов
RFC 7009 определяет конечную точку отзыва токенов, позволяющую клиентам уведомить сервер авторизации о необходимости сделать токен, токен доступа или обновления, недействительным. Это используется при выходе из системы или обнаружении клиентом подозрительной активности. Токены доступа JWT нельзя полностью отозвать без списка отзыва, поскольку серверы ресурсов проверяют их локально, не обращаясь к серверу авторизации.
Авторизация на основе областей действия
Области действия OAuth 2.0 определяют конкретные разрешения, которые запрашивает клиент. Сервер авторизации показывает запрошенные области действия пользователю для подтверждения. Серверы ресурсов применяют требования к областям действия для каждой конечной точки. Действует принцип наименьших привилегий: клиенты должны запрашивать только минимально необходимые области действия, а серверы ресурсов должны отклонять запросы с недостаточной областью действия.
Проверка потоков OAuth 2.0
Какой поток OAuth 2.0 подходит для инструмента CLI или устройства IoT, которому нужно аутентифицировать пользователя, но у которого нет браузера или клавиатуры?
Итоги урока: потоки OAuth 2.0
Поток кода авторизации подходит для приложений с серверной частью. Неявный поток устарел — вместо него следует использовать PKCE. Поток ROPC устарел, поскольку устраняет саму цель OAuth. Поток учётных данных клиента предназначен для взаимодействия между машинами (M2M). Поток авторизации устройства предназначен для устройств с ограниченными возможностями ввода. Токены доступа бывают непрозрачными или JWT. Токены обновления следует заменять. Проверка токенов (RFC 7662) и их отзыв (RFC 7009) дополняют управление токенами.
Часто задаваемые вопросы
Урок «Потоки OAuth 2.0 и типы токенов» бесплатный?
Да — полный текст урока «Потоки OAuth 2.0 и типы токенов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Потоки OAuth 2.0 и типы токенов»?
Сравните потоки кода авторизации, неявный поток, поток учетных данных клиента и поток для устройств — и узнайте, когда использовать каждый из них. Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Потоки OAuth 2.0 и типы токенов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Потоки OAuth 2.0 и типы токенов
- PKCE: защита публичных клиентов
- Утверждения OpenID Connect и токены ID
- Уязвимости OAuth и схемы атак