Sender Constraining用にリソースサーバーを構成する
APIのSender Constrainingを有効にすると、リソースサーバーは、クライアントが証明書バウンドアクセストークンでリソースサーバーを呼び出した時はいつでもSender Constrainingを強制しなければなりません。以下により、リソースサーバーがこれを強制します。
確率されたmTLS接続にクライアント証明書を要求する
クライアント証明書のサムプリントがアクセストークンのサムプリントと一致するか検証
Sender Constraining用にリソースサーバーを構成するには、「リソースサーバーのSender Constrainingを有効にする」をご覧ください。
クライアント証明書の検証
認可サーバーまたはカスタマーエッジとは異なり、リソースサーバーは、証明書チェーン全体の代わりに、クライアント証明書のサムプリントのみを検証する必要があります。mTLS Sender Constrainingのために、リソースサーバーは、アクセストークンの cnf
クレームを確認します。
"cnf":{"x5t#S256":"A4DtL2JmUMhAsvJj5tKyn64SqzmuXbMrJa0n761y5v0"}
Was this helpful?
上記のcnf
クレームの例では、x5t#S256
は、アクセストークンがA4DtL2JmUMhAsvJj5tKyn64SqzmuXbMrJa0n761y5v0
のサムプリントのmTLSクライアント証明書にバインドされていることを示します。クライアント証明書の検証に合格するには、リソースサーバーは、クライアント証明書にA4DtL2JmUMhAsvJj5tKyn64SqzmuXbMrJa0n761y5v0
と一致するサムプリントがあることを検証しなければなりません。サムプリントの計算方法の詳細については、RFC 8705の「 JWT証明書サムプリント確認方法」のセクションをご覧ください。
クライアント証明書が送信されなかった場合、またはクライアント証明書のサムプリントが一致しなかった場合、リソースサーバーは、 HTTP 401
ステータスコードおよびinvalid_token
エラーコードを使用して、要求を拒否します。詳細については、RFC 8705の「相互TLSクライアント証明書バウンドアクセストークン」および「リソースサーバー」のセクションをご覧ください。
mTLSを使用するためにクライアントを徐々に移行するリソースサーバーについては、2つのドメインにAPIを公開することを検討するといいでしょう。1つは、非mTLSクライアントのための非mTLSドメイン、そしてもう1つはmTLS対応クライアントのためのmTLS有効ドメインです。または、mTLS有効ドメインにまったく別のmTLSのみのリソースサーバーを作成することもできます。
Auth0でリソースサーバー用にSender Constrainingを構成する
Auth0が発行するアクセストークンは、リソースサーバーのAPIにアクセスする必要がある送信者(つまり、クライアントアプリケーション)に制限できます。
Auth0 DashboardまたはManagement APIを使用して、リソースサーバーのSender Constrainingを有効にできます。
トークンバインディングまたは送信者制約を有効化するには、APIの[API Settings(API設定)]を構成します。
[Auth0 Dashboard] > [Applications(アプリケーション)] > [APIs]に移動します。
構成したいAPIを選択します。
[Settings(設定)]タブで、[Token Sender-Constraining(トークン送信者制約)]セクションを見つけます。
以下を構成します。
[Sender Constraining Method(送信者制約メソッド)]:[None(なし)]または[mTLS]。
[Require Token Sender Constraining(トークン送信者制約が必須)]:このAPIでアプリケーションに発行されたすべてのアクセストークンは、そのアプリケーションの制約を受けます。
Management APIで送信者制約を有効化するには、PATCH要求をリソースサーバーの更新に送信します。proof_of_posession
のパラメーターを以下のように設定します:
パラメーター | 説明 |
---|---|
mechanism |
送信者制約の方法をnone またはmtls に設定します |
required |
true に設定すると、このAPIに対してアプリケーションに発行されたすべてのアクセストークンは、そのアプリケーションに制約されます。false に設定すると、アプリケーションに送信者制約は必要ありません。 |
以下のコードサンプルは、mTLS送信者制約でリソースサーバーを構成する要求本文の例です:
"proof_of_possession": {
"mechanism": "mtls",
"required": true
}
Was this helpful?