hydra icon indicating copy to clipboard operation
hydra copied to clipboard

Support dPoP (OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer)

Open damooo opened this issue 3 years ago • 5 comments

Preflight checklist

Describe your problem

DPoP (for Demonstrating Proof-of-Possession at the Application Layer) is an application-level mechanism for sender-constraining OAuth access and refresh tokens. It enables a client to prove the possession of a public/private key pair by including a DPoP header in an HTTP request.

New w3c standards like solid-oidc mandates dPoP, to enable decentralized and secure identities. It will be great if hydra supports it.

Describe your ideal solution

Supporting dpop

Workarounds or alternatives

Is it possible to layer over hydra for it? Any little guidance will be appreciated.

Version

Current

Additional Context

No response

damooo avatar Aug 28 '22 18:08 damooo

Yes to this! Hydra and its admin have almost everything to be a headless solid-oidc provider. (referring to the rfc, and an implementation).

The missing parts are these two steps:

  1. Validates DPoP Token Signature The OP extracts the client’s public key from the DPoP header (at header.jwk). It confirms that the DPoP token has a valid signature. If not, the OP must reject the request with a 400 HTTP status and invalid_dpop_proof error code.
  1. Converts the DPoP public key to a JWK thumbprint Currently the DPoP token contains a JWK public key, but before we place it inside the access token, it needs to be converted into a JWK thumbprint. Our JWK thumbprint looks more like: 9XmwK8mQ3H5-PnzAt3lFHzWBW_v5QhYynezbbit4kC8

So adding dPoP support would be greatly appreciate, I can not really help on the implementation… So hope these references are helpful to do triage.

Thanks

froger avatar Jan 26 '23 10:01 froger

DPoP support would indeed be a great addition. A PR would be highly appreciated!*

*Given the complexity and security relevance here, a short design doc to outline the planned changes will be needed as a first step.

kmherrmann avatar Jan 26 '23 10:01 kmherrmann

DPoP is now an rfc.

damooo avatar Nov 15 '23 16:11 damooo

Worth noting that there was a ory/fosite#641, closed as stale.

rektide avatar Jun 13 '24 22:06 rektide