Device Code Flow (OAuth 2.0 Device Authorization Grant)
Что такое Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Device Code Flow (OAuth 2.0 Device Authorization Grant)Грант OAuth 2.0 (RFC 8628), при котором устройство с ограниченным вводом (смарт-ТВ, CLI, IoT-устройство) показывает код и URL для проверки, чтобы пользователь прошёл аутентификацию на втором устройстве — удобно для CLI, но является задокументированным вектором фишинга.
OAuth 2.0 Device Authorization Grant, описанный в RFC 8628 и неформально называемый device code flow, позволяет клиенту без пригодного браузера (смарт-ТВ, CLI, киоски, IoT-устройства) получить делегированные токены, попросив пользователя пройти аутентификацию на отдельном устройстве. Клиент запрашивает у IdP device_code и короткий user_code и показывает user_code вместе с URL проверки (например, https://microsoft.com/devicelogin). Пользователь открывает этот URL на телефоне или ноутбуке, входит, вводит user_code и даёт согласие; тем временем устройство опрашивает токен-эндпоинт (соблюдая interval и замедляясь по slow_down), пока IdP не выдаст токены. На этом флоу построены gh auth login, az login --use-device-code, вход в Apple TV и сопряжение Roku/Google TV.
Та же схема — мощный вектор фишинга, потому что пользователь проходит аутентификацию на легитимной странице IdP: нет поддельного домена, который выдал бы атаку. Злоумышленник запускает device code flow против целевого тенанта и пересылает жертве только что сгенерированный user_code в приманке с нажимом на срочность; как только жертва его вводит, токены выдаются злоумышленнику. Отчёт Microsoft за февраль 2025 года о группе Storm-2372 (связанной с интересами России и активной с августа 2024 года) задокументировал именно это: приманки с приглашениями на встречи в Teams побуждали цели в госсекторе, оборонке и НКО вводить сгенерированные атакующим коды, после чего тот использовал токены для выгрузки почты через Microsoft Graph. К мерам защиты относятся политики условного доступа, ограничивающие или отключающие флоу для всех приложений и групп, кроме выбранных, короткое время жизни токенов и обучение пользователей: код устройства следует вводить только для входа, который пользователь начал сам.
sequenceDiagram
participant D as Устройство (CLI/ТВ)
participant I as Поставщик идентификации
participant U as Пользователь (телефон/ноутбук)
D->>I: Запрос device_code + user_code
I-->>D: device_code, user_code, verification_uri
D-->>U: Показывает "Откройте URL и введите КОД"
loop Опрос (соблюдая interval / slow_down)
D->>I: Опрос токен-эндпоинта с device_code
I-->>D: authorization_pending
end
U->>I: Открывает verification_uri, входит, вводит user_code и соглашается
I-->>D: Токены доступа и обновления
Note over U,I: Риск фишинга: злоумышленник пересылает свой user_code<br/>и токены выдаются ему● Примеры
- 01
`gh auth login` выводит короткий код и URL; пользователь входит на ноутбуке, вводит код, и CLI получает токены.
- 02
Политика условного доступа Entra ID отключает device code flow во всём тенанте, кроме узко ограниченной группы пользователей CLI.
● Частые вопросы
Что такое Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Грант OAuth 2.0 (RFC 8628), при котором устройство с ограниченным вводом (смарт-ТВ, CLI, IoT-устройство) показывает код и URL для проверки, чтобы пользователь прошёл аутентификацию на втором устройстве — удобно для CLI, но является задокументированным вектором фишинга. Относится к категории Идентификация и доступ в кибербезопасности.
Что означает Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Грант OAuth 2.0 (RFC 8628), при котором устройство с ограниченным вводом (смарт-ТВ, CLI, IoT-устройство) показывает код и URL для проверки, чтобы пользователь прошёл аутентификацию на втором устройстве — удобно для CLI, но является задокументированным вектором фишинга.
Как защититься от Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Защита от Device Code Flow (OAuth 2.0 Device Authorization Grant) обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Распространённые альтернативные названия: RFC 8628, OAuth 2.0 Device Authorization Grant.