-
Notifications
You must be signed in to change notification settings - Fork 10
Description
I am very glad to see that the draft is progressing and, in particular, that there is traction to make things better for DPoP.
Could I ask you to consider the problem from the perspective of OAuth profiles already built on RFC9449 (DPoP) and RFC7523 (JWT client assertions)?
When both are in use, the AS already processes payloads of the following shape:
POST /token.oauth2 HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6Ik\
VDIiwieCI6Imw4dEZyaHgtMzR0VjNoUklDUkRZOXpDa0RscEJoRjQyVVFVZldWQVdCR\
nMiLCJ5IjoiOVZFNGpmX09rX282NHpiVFRsY3VOSmFqSG10NnY5VERWclUwQ2R2R1JE\
QSIsImNydiI6IlAtMjU2In19.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIj\
oiUE9TVCIsImh0dSI6Imh0dHBzOi8vc2VydmVyLmV4YW1wbGUuY29tL3Rva2VuIiwia\
WF0IjoxNTYyMjYyNjE2fQ.2-GxA6T8lP4vfrg8v-FdWP0A0zdrj8igiMLvqRMUvwnQg\
4PtFLbdLXiOSsX0x7NVY-FNyJK70nfbV37xRZT3Lg
grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&
client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3A
client-assertion-type%3Ajwt-bearer&
client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0.\
eyJpc3Mi[...omitted for brevity...].\
cC4hiUPo[...omitted for brevity...]
These AS already implement DPoP header verification and client_assertion JWT validation. In that context, binding the client assertion to the DPoP key can be as simple as embedding the DPoP key thumbprint in the cnf.jkt claim of the client assertion. This is essentially a one-line spec change and a minimal implementation.
The current draft introduces a new token_endpoint_auth_method and a new OAuth-Client-Attestation header with semantics that largely overlap with mechanisms already defined in RFC7523 and RFC9449. The result is an additive design that diverges from existing primitives rather than composing with them.
Starting from those existing RFCs instead would, I believe:
- lower the barrier to adoption, since implementations already handling DPoP and JWT client assertions require minimal changes,
- allow simpler partial adoption (e.g. the DPoP binding alone, without a new auth method),
- reduce the overall complexity added to the OAuth ecosystem.