ハイリーレギュレーテッドアイデンティティ機能を使用するには、エンタープライズプランとハイリーレギュレーテッドアイデンティティアドオンが必要です。詳細については、「Auth0の価格設定」を参照してください。
アクセストークンが証明書にバインドされる仕組み
機密クライアントのみがmTLSのトークンバインディングに対応しています。
cnf
)を含めることによって、クライアント証明書を発行されたアクセストークンにバインドします。このcnf
には、クライアント証明書のサムプリントを表すハッシュが含まれています。
以下のコード例は、証明書にバインドされたアクセストークンのペイロードを示しています。
トークンの検証
mTLSトークンバインディングが有効になると、アクセストークンは、これらを要求したアプリケーション(つまり「送信者」アプリケーション)の制約を受けることになります。リソースサーバーは、要求で送信されたクライアント証明書がアクセストークントークンに含まれるものと同じサムプリントを持っていることを検証する責任があります。これは「Proof-of-possession(所有の証明)」の検証とも呼ばれています。 アプリケーションが証明書にバインドされたアクセストークントークンを使用する権限があることを検証するために、リソースサーバーは要求で使用されたクライアント証明書のサムプリントを生成し、それをcnf
クレームのサムプリントと比較する必要があります。cnf
クレームの形式と証明書のサムプリントの生成方法に関する詳細は、RFC 8705の「JWT Certificate Thumbprint Confirmation Method(JWT証明書サムプリント確認方法)」に関するセクションを参照してください。
アプリケーションが要求にクライアント証明書を送信しなかった場合、またはクライアント証明書のサムプリントが一致しなかった場合、リソースサーバーは、HTTP 401
ステータスコードおよびinvalid_token
エラーコードを使用して、その要求を拒否します。
以下の表は、アプリケーション(クライアント)とAPI(OAuthリソースサーバー)のmTLS設定に基づいて、発行されたトークンが送信者制約を受けているかどうかを説明したものです。この表は、以下のシナリオに対応しています。
-
要求されたオーディエンスのタイプ:
userinfo
のみ、またはuserinfo
を含むカスタムオーディエンス -
送信者制約がクライアントによって
required
とされているかどうか -
リソースサーバーに対して送信者制約が設定されているかどうか:
none
:リソースサーバーに対して送信者制約が設定されていません。allowed
:mTLSを送信者制約メソッドとして設定することで、リソースサーバーに対して送信者制約が構成されています。required
:リソースサーバーに対して送信者制約が必須とされています。つまりアクセストークンは、アプリケーションに対する送信者制約を受けている必要があります。送信者制約メソッドが必要です。
- クライアントアプリケーションが、トークン要求にProof-of-Possession(所有の証明)アサーションを送信したかどうか。
