Skip to main content

はじめに

本記事では Authlete API を用いて “RFC 9449: OAuth 2.0 Demonstrating Proof-of-Possession (DPoP) ” に対応する方法を説明します。
本機能は Authlete バージョン 2.2 以降にて利用可能です。

対応の手順

認可サーバーおよびリソースサーバーは以下の手順で DPoP に対応します。
  1. DPoP Proof JWT を含むリクエストの受信
    • 認可サーバーの各種エンドポイント (EP)(例: トークン EP、PAR EP、UserInfo EP)や、リソースサーバーの API EP は、“DPoP Proof JWT” が HTTP ヘッダーに含まれるリクエストを、クライアントから受信します。
  2. DPoP 関連情報の抽出
    • 受信したリクエストから、DPoP 関連情報(DPoP Proof JWT、HTTP メソッド、HTTP ターゲット URI)を抽出します。
  3. Authlete API の呼び出し
    • クライアントからのリクエストの内容に併せて、上記の DPoP 関連情報をリクエストパラメーターにして、Authlete API (/auth/token や /auth/introspection など)を呼び出します。

対応例

以下は認可サーバーのトークン EP を DPoP 対応にする例です。\ dpop_ja トークン EP における DPoP 対応

1. DPoP Proof JWT を含むリクエストの受信

ここでは、認可サーバーのトークン EP が以下の HTTP リクエストを受信したとします。(読みやすさのため折り返しています)

2. DPoP 関連情報の抽出

認可サーバーは、リクエストに DPoP ヘッダーが含まれていることを受けて、メソッドとターゲット URI、 DPoP Proof JWT を抽出します。そしてこれらを、Authlete の /auth/token API のパラメーター (htm, htu, dpop) の値とします。 この場合、各パラメーターは以下のようになります。

3. Authlete API の呼び出し

認可サーバーから /auth/token API にリクエストする際のリクエストボディは以下のようになります。
上記のリクエストが成功した場合、Authlete は次のようなレスポンスを返却します。
認可サーバーはこの後、responseContent をボディとするトークンレスポンスを、クライアントに返却することになります。