Device Code Flow (OAuth 2.0 Device Authorization Grant)
O que é Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Device Code Flow (OAuth 2.0 Device Authorization Grant)Concessão OAuth 2.0 (RFC 8628) em que um dispositivo com entrada limitada (smart TV, CLI, dispositivo IoT) mostra um código e uma URL para o utilizador se autenticar num segundo dispositivo — cómodo para CLIs mas um vetor de phishing documentado.
O OAuth 2.0 Device Authorization Grant, especificado no RFC 8628 e chamado coloquialmente de device code flow, permite que um cliente sem navegador utilizável (smart TVs, CLIs, quiosques, dispositivos IoT) obtenha tokens delegados pedindo ao utilizador que se autentique noutro dispositivo. O cliente pede ao IdP um device_code e um user_code curto e mostra o user_code junto de uma URL de verificação (p. ex. https://microsoft.com/devicelogin). O utilizador abre essa URL no telemóvel ou portátil, inicia sessão, digita o user_code e consente; entretanto o dispositivo faz polling do endpoint de tokens (respeitando interval e abrandando com slow_down) até o IdP emitir os tokens. O fluxo é a base de gh auth login, az login --use-device-code, do início de sessão da Apple TV e do emparelhamento de Roku/Google TV.
O mesmo desenho é um potente vetor de phishing, porque o utilizador se autentica numa página legítima do IdP — não há domínio falso que denuncie o ataque. O atacante inicia um fluxo de código de dispositivo contra o tenant-alvo e reencaminha o user_code recém-gerado à vítima com um engodo urgente; quando a vítima o introduz, os tokens vão para o atacante. O relatório da Microsoft de fevereiro de 2025 sobre o Storm-2372, um ator alinhado com a Rússia ativo desde agosto de 2024, documentou precisamente isto: engodos de reuniões do Teams levaram alvos de governo, defesa e ONG a introduzir códigos gerados pelo atacante, que depois usou os tokens para extrair correio via Microsoft Graph. As defesas incluem políticas de Acesso Condicional que restringem ou desativam o fluxo exceto para aplicações e grupos específicos, tempos de vida curtos dos tokens e sensibilização: um código de dispositivo só deve ser introduzido para um início de sessão que o próprio utilizador tenha iniciado.
sequenceDiagram
participant D as Dispositivo (CLI/TV)
participant I as Fornecedor de identidade
participant U as Utilizador (telemóvel/portátil)
D->>I: Pede device_code + user_code
I-->>D: device_code, user_code, verification_uri
D-->>U: Mostra "Abra a URL e introduza o CÓDIGO"
loop Polling (respeita interval / slow_down)
D->>I: Consulta o endpoint de tokens com device_code
I-->>D: authorization_pending
end
U->>I: Abre verification_uri, inicia sessão, introduz user_code e consente
I-->>D: Tokens de acesso e de atualização
Note over U,I: Risco de phishing: o atacante reencaminha o seu próprio user_code<br/>e os tokens são emitidos para o atacante● Exemplos
- 01
`gh auth login` imprime um código curto e uma URL; o utilizador inicia sessão no portátil, escreve o código e a CLI recebe os tokens.
- 02
Uma política de Acesso Condicional do Entra ID desativa o fluxo de código de dispositivo em todo o tenant, exceto para um grupo restrito de utilizadores de CLI.
● Perguntas frequentes
O que é Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Concessão OAuth 2.0 (RFC 8628) em que um dispositivo com entrada limitada (smart TV, CLI, dispositivo IoT) mostra um código e uma URL para o utilizador se autenticar num segundo dispositivo — cómodo para CLIs mas um vetor de phishing documentado. Pertence à categoria Identidade e acesso da cibersegurança.
O que significa Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Concessão OAuth 2.0 (RFC 8628) em que um dispositivo com entrada limitada (smart TV, CLI, dispositivo IoT) mostra um código e uma URL para o utilizador se autenticar num segundo dispositivo — cómodo para CLIs mas um vetor de phishing documentado.
Como se defender contra Device Code Flow (OAuth 2.0 Device Authorization Grant)?
As defesas contra Device Code Flow (OAuth 2.0 Device Authorization Grant) costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Device Code Flow (OAuth 2.0 Device Authorization Grant)?
Nomes alternativos comuns: RFC 8628, OAuth 2.0 Device Authorization Grant.