Device Authorization Grant
RFC 8628 for input-constrained devices — CLI, TV, IoT. The device shows a user code; the user approves it on a second screen.
The Device Authorization Grant (RFC 8628) lets input-constrained clients — CLIs, TVs, IoT — authenticate without a browser on the device itself. The device displays a short user code; the user enters it on a phone or laptop to approve.
Implemented
Device grant is fully implemented, including the hosted-login /device
page (user-code entry → approve/deny) and admin management of pending device
authorizations.
The flow
Device requests authorization
The (client-authenticated) device calls the device authorization endpoint and gets a
device_code, a human-friendly user_code (e.g. BCDF-GHJK), and verification URIs.
/v1/oauth/device_authorizationStart device authorizationcurl -X POST https://api.qeetid.com/v1/oauth/device_authorization \
-H "Content-Type: application/x-www-form-urlencoded" \
-d client_id=$CLIENT_ID -d scope="openid profile"{
"device_code": "…",
"user_code": "BCDF-GHJK",
"verification_uri": "https://login.qeetid.com/device",
"verification_uri_complete": "https://login.qeetid.com/device?user_code=BCDF-GHJK",
"expires_in": 600,
"interval": 5
}Device shows the code
"Go to login.qeetid.com/device and enter BCDF-GHJK." The user opens the URL
on another device. The hosted /device page fetches the request context (client name
- scopes) and renders an approve/deny screen.
/v1/oauth/deviceDevice verification context/v1/oauth/device/decisionApprove / denyDevice polls for the token
Meanwhile the device polls the token endpoint with the device-code grant type,
respecting interval.
/v1/oauth/token-codegrant_type=device_codecurl -X POST https://api.qeetid.com/v1/oauth/token-code \
-H "Content-Type: application/x-www-form-urlencoded" \
-d grant_type=urn:ietf:params:oauth:grant-type:device_code \
-d device_code=$DEVICE_CODE \
-d client_id=$CLIENT_IDUntil approval, the endpoint returns authorization_pending (or slow_down). After
approval it returns the token response.
Admin management
Tenant admins can list and inspect pending device authorizations.
/v1/tenants/{tenantID}/oauth/devicesList device authorizations/v1/tenants/{tenantID}/oauth/devices/{id}Inspect one