DPoP (RFC 9449)

Ayrıca şöyle anılır DPoP, Demonstrating Proof-of-Possession, RFC 9449

Bir araya getirildiYayında

DPoP fixes a real weakness in how most OAuth 2.0 tokens work: an ordinary access token is a bearer token, whoever holds the string gets to use it, full stop, with nothing checked about whether they're the party it was originally issued to (see Bearer Token). Steal one out of a log file, a proxy, or a leaky browser extension, and it works exactly as well for the thief as for the legitimate holder, until it expires.

DPoP, "Demonstrating Proof-of-Possession", closes that gap without requiring the heavier machinery of mutual TLS. The client generates its own public/private key pair, and attaches a fresh, self-signed DPoP proof, a small JWT, to every request. That proof states the HTTP method and URL being called (htm, htu), a timestamp, a one-time-use ID (jti), and the client's own public key. When the authorization server issues an access token to that client, it binds the token to the proof's public key by embedding a hash of it, a cnf.jkt claim, inside the token itself. From then on, a resource server checking that token has to also see a fresh, valid DPoP proof, signed by the same key, before accepting the request. A stolen access token, presented without the matching private key, is worthless.

Where it comes from

DPoP is RFC 9449, published by the IETF OAuth Working Group in September 2023, genuinely recent, as internet standards go. Its authors, including Daniel Fett, Brian Campbell, John Bradley, Takahiko Kawasaki, and Aaron Parecki, come out of the same OAuth security community that spent years documenting the class of token-theft and replay attacks DPoP is designed to close (much of that documented in the OAuth 2.0 Security Best Current Practice). Solidus designed none of it.

Solidus today

auth.solidus.network implements RFC 9449 end to end for its Solid-OIDC flow: proof verification checks the signature, the htm/htu binding, a freshness window, and rejects replayed jti values via a replay guard; successful verification mints an ES256-signed access token, and, for offline_access, a DPoP-bound refresh token, carrying the client's key thumbprint in cnf.jkt. This is real, tested code (RFC section numbers are cited directly in the source comments), not a stub. What it isn't yet: universal. Solidus's other OAuth clients, the ones not doing Solid-OIDC, still get ordinary Bearer Tokens today. All of it sits on Solidus's public testnet, unaudited.

See also

OIDC and Solid-OIDC are the protocols DPoP is layered onto here. JWT is the token format a DPoP proof itself is written in. Bearer Token is the weaker default DPoP is an upgrade over. Refresh Token covers the DPoP-bound refresh variant.

Nereden geliyor

Bunu başkası belirtti. Solidus bir araya getiriyor.

DPoP, "Demonstrating Proof-of-Possession at the Application Layer", is IETF RFC 9449, published September 2023 by the OAuth Working Group. Its authors include Daniel Fett, Brian Campbell (Ping Identity), John Bradley, Takahiko Kawasaki (Authlete), and Aaron Parecki, largely the same circle behind the OAuth 2.0 Security Best Current Practice work that motivated DPoP in the first place: a lighter-weight alternative to mutual-TLS for sender-constraining tokens without requiring client certificates. Solidus wrote none of the specification. The verification and token-minting logic in auth.solidus.network's Solid-OIDC path was written from scratch against the published RFC, using the `jose` library for the underlying cryptography.

Bunu nasıl doğrularsınız

Bugün üretimde çalışıyor.

curl https://auth.solidus.network/.well-known/openid-configuration and read dpop_signing_alg_values_supported, ["ES256","EdDSA"] confirms the capability is live and advertised. Fully exercising a DPoP-bound token exchange requires acting as a real Solid-OIDC client (see Solid-OIDC for how to do that by creating a pod.solidus.network account), so this proof confirms the capability is real without claiming a stranger can drive the full proof-of-possession round trip with curl alone.

İlgili

DPoP (RFC 9449) · Solidus Lexicon