Skip to main content

Preface

This article describes how to support “RFC 9449: OAuth 2.0 Demonstrating Proof-of-Possession (DPoP) ” with Authlete APIs.
This feature is available in Authlete version 2.2 or later.

Instructions

Authorization servers and resource servers support DPoP by following these steps.
  1. Receiving a request that includes a “DPoP Proof JWT”
    • A endpoint (EP) of an authorization server (e.g., Token EP, PAR EP, UserInfo EP) or a resource server receives a request, with “DPoP Proof JWT” as one of HTTP headers, from a client.
  2. Extracting DPoP-related information
    • The server extracts DPoP-related information (DPoP Proof JWT, HTTP method and HTTP target URI) from the request.
  3. Making a request to Authlete’s APIs
    • The server make a request, that includes the content of the client’s request and the above DPoP-related information as request parameters,  to Authlete APIs (/auth/token, /auth/introspection, etc.)

Example

The following is an example of how to support DPoP in an authorization server’s token EP. dpop DPoP support on token EP

1. Receiving a request that includes a “DPoP Proof JWT”

Let us assume that the authorization server’s token EP receives the following HTTP request. (wrapped for readability)
The authorization server detects a DPoP header in the request, and extracts HTTP method, HTTP target URI and DPoP Proof JWT. These values are then included in a request to Authlete’s /auth/token API, as htm, htu and dpop respectively. The following table shows the values in this example.

3. Making a request to Authlete’s APIs

The following is a request body from the authorization server to the /auth/token API.
Authlete returns the following response if the above request is successful.
The authorization server will then return a token response to the client with responseContent as its body.

Further Reading