Tokenを鍵へ結び付ける
Authorization ServerはClient公開鍵のthumbprintをアクセストークンへ記録し、Resource Serverが同じ鍵の証明を要求できるようにします。
Specification
アクセストークンをClientの公開鍵へ結び付け、盗まれたBearer Tokenの第三者による再利用を防ぐSender-Constrained Token仕様です。
Overview
DPoPは、OAuthアクセストークンをClientが持つ鍵ペアへ結び付ける仕組みです。通常のBearer Tokenは持っている人なら誰でも利用できますが、DPoP Tokenは対応する秘密鍵でリクエストごとの証明を作れるClientだけが利用できます。
ClientはToken EndpointとResource ServerへのリクエストごとにDPoP Proof JWTを作ります。ProofにはHTTP Method、送信先URI、発行時刻、一意なjtiなどが含まれ、Resource Serverは署名と内容、アクセストークンとの鍵Bindingを検証します。
Purpose and responsibilities
Authorization ServerはClient公開鍵のthumbprintをアクセストークンへ記録し、Resource Serverが同じ鍵の証明を要求できるようにします。
攻撃者がアクセストークンだけを取得しても、対応する秘密鍵がなければ有効なAPIリクエストを作れません。
htmとhtuでProofをHTTPリクエストへ結び付け、別Endpointや別Methodへの転用を防ぎます。
Key concepts
Security considerations
仕様を実装するときは、正常系の通信だけでなく、値のすり替え、再利用、漏えいが起きた場合も考えます。
秘密鍵はClient外へ出さず、可能ならOSのKey Storeやハードウェア保護領域へ保存します。
Resource Serverは署名、typ、jti、iat、htm、htu、athと公開鍵Bindingをまとめて検証します。
Proofのjtiと短い有効時間を利用してReplayを検出し、必要に応じてServer Nonceを要求します。
DPoPはTLSを置き換えません。TokenとProofは常にHTTPSで送信します。
Position and relationship
DPoPはOAuth 2.0のBearer TokenをSender-Constrained Tokenとして強化します。相互TLSも同じ目的を持ちますが、DPoPはアプリケーション層の鍵証明を使うため、Public Clientやプロキシを含む構成で採用しやすい特徴があります。
Other specifications