DPoP Support for Thunder (RFC 9449) #2302
nandhu-kumar
started this conversation in
Design
Replies: 1 comment
-
|
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
DPoP Support for Thunder (RFC 9449)
1. Problem Summary
Thunder currently issues bearer access tokens and refresh tokens. Bearer tokens can be used by any party that possesses them, making them vulnerable to token theft, replay, and exfiltration attacks. RFC 9449 (Demonstrating Proof of Possession) defines an application-level mechanism to sender-constrain tokens by binding them to a client's public/private key pair, so stolen tokens alone are unusable.
2. Scope
This document identifies the areas of Thunder affected by DPoP, highlights design questions and edge cases, and surfaces decisions that need to be made before implementation.
3. RFC 9449 Summary
DPoP works by having the client:
DPoPHTTP header) to token requestsjktthumbprint in the token'scnfclaim)Key RFC sections relevant to Thunder:
cnf.jktin JWT tokens, introspection)dpop_jktparameter)4. Affected Areas in Thunder
token/handler.go,token/service.goDPoPheader, validate proof, bind tokensgranthandlers/(all grant types)tokenservice/builder.gocnf.jktclaim to issued JWTsintrospect/handler.go,introspect/service.gocnf.jktandtoken_type: DPoPin responsesauthz/handler.go,authz/service.godpop_jktauthorization request parametersecurity/jwt_authenticator.go,security/middleware.godiscovery/model.go,discovery/service.godpop_signing_alg_values_supporteddcr/handler.go,dcr/service.godpop_bound_access_tokensclient metadatadpop_jktparam andDPoPheader per Section 10.15. Open Questions
5.1 Scope of Implementation
cnf.jkt), or should the authorization code also be bound todpop_jkt(Section 10)? Token-level binding alone leaves a window where a stolen authorization code can be exchanged without the private key, which is especially risky for public clients.DPoPheader and bind the authorization code/access token to the client's key?5.2 Token Format and Storage
5.3 DPoP Proof Validation
iatvalidation be? The RFC recommends seconds to minutes. Should this be configurable?5.4 Nonce Mechanism
5.5 Refresh Token Binding
5.6 Client Registration and Enforcement
dpop_bound_access_tokensbe a per-application setting in Thunder? Iftrue, token requests without a DPoP proof are rejected.5.7 Key Management
Beta Was this translation helpful? Give feedback.
All reactions