Uitsmijter is set to expand its OAuth 2.0 capabilities in the upcoming 0.11 release by implementing the Device Authorization Grant, as defined in RFC 8628. This addition addresses a fundamental challenge in modern authentication: how do you securely authenticate a user on a device that has no practical way to open a browser or accept keyboard input?
The Problem It Solves
Traditional OAuth 2.0 flows — Authorization Code, Implicit, and their PKCE variants — rely on the ability to redirect a user’s browser to an authorization server and back. This works perfectly on desktops and smartphones, but breaks down in a growing category of environments:
- Command-line tools (CLIs) — developer tools, deployment agents, and build pipelines running in headless terminals
- Smart TVs and set-top boxes — media applications where navigating to a URL and typing a code is cumbersome or impossible with a remote
- IoT and embedded devices — sensors, kiosks, printers, home automation hubs, and industrial controllers with limited or no display
- Gaming consoles — platforms with restrictive browser environments
- Shared or locked-down machines — environments where a full browser session cannot be initiated
These are collectively called input-constrained devices, and they need a different authentication pathway.
How the Flow Works
The Device Authorization Grant introduces an out-of-band authentication pattern, meaning authentication happens on a separate, more capable device (like a smartphone or laptop) rather than the device requesting access. The flow proceeds as follows:
1. Device Registration Request
The device (e.g. a CLI tool) sends a request to Uitsmijter’s device authorization endpoint, identifying itself with its client_id and the OAuth scopes it requires. No user involvement is needed at this point.
2. Code Issuance
Uitsmijter responds with three key values:
device_code— a long, opaque token used internally by the device to poll for a resultuser_code— a short, human-readable code (typically 8 characters, e.g.WDJB-MJHT) displayed to the userverification_uri— the URL the user should visit on another device (e.g.https://auth.example.com/device)
An optional verification_uri_complete may also be returned, embedding the user code directly in the URL so it can be encoded as a QR code for even smoother UX.
3. User Interaction (on a Secondary Device)
The user takes out their phone or opens a laptop and:
- Navigates to the verification URL
- Authenticates with Uitsmijter (username/password, SSO, MFA — whatever is configured)
- Enters the displayed user code
- Reviews and approves the authorization request (scopes, client name, etc.)
This step happens entirely within a familiar, capable browser environment.
4. Device Polling
While the user completes step 3, the original device repeatedly polls Uitsmijter’s token endpoint, presenting its device_code. Uitsmijter will respond with one of several states:
| Response | Meaning |
|---|---|
authorization_pending |
User hasn’t finished yet — keep polling |
slow_down |
Polling too fast — increase the interval |
expired_token |
The user code has expired — restart the flow |
access_denied |
The user explicitly declined |
| Token response | Authorization succeeded — tokens issued |
The polling interval and code expiry window are both communicated in the initial response (typically 5-second intervals and a 15-minute expiry).
5. Token Issuance
Once the user approves, the next poll returns a standard OAuth 2.0 token response: an access token, optionally a refresh token, and an ID token if OpenID Connect is in use. The device can now authenticate API requests on behalf of the user.
Why This Matters for Uitsmijter
Uitsmijter already handles Authorization Code + PKCE flows, client credentials, and token introspection. Adding Device Authorization Grant means it can now serve as the single identity backbone for an organization’s entire surface area — not just web apps and mobile clients, but every CLI tool, every TV app, every IoT endpoint that needs to act on behalf of a real, authenticated user.
This is particularly relevant for:
- Developer toolchains — teams using Uitsmijter for SSO can now authenticate their internal CLI tools (deployment scripts, admin utilities, data pipelines) against the same identity provider
- Media and entertainment platforms — TV and streaming applications can leverage Uitsmijter for subscription-gated content access
- Industrial and enterprise IoT — devices operating in secure environments can be tied to specific user identities with full audit trails
Release Timeline
Device Authorization Grant is planned as part of the Uitsmijter 0.11 release chain, which is targeted for launch at the beginning of Q2 2026 — around April 2026. The 0.11 milestone represents a significant expansion of Uitsmijter’s protocol surface and positions it for broader adoption in device-centric and enterprise deployment scenarios.