メインコンテンツへスキップ
送信者制約は、および Connect (OIDC) のセキュリティメカニズムであり、アクセストークンとを、それらを取得した特定のクライアントアプリケーションに暗号学的に結び付けることで、トークンの盗難や不正利用を防ぎます。 Auth0は、mTLSによる送信者制約とDemonstrating Proof-of-Possession (DPoP) をサポートしています。クライアントアプリケーションで送信者制約を有効にする場合は、API呼び出し先のに対しても、送信者制約を強制する必要があります。 Auth0で送信者制約を設定するには、次の操作が必要です。

仕組み

が Auth0 で送信者制約されるかどうかは、クライアントアプリケーションとリソースサーバーの送信者制約の設定方法によって決まります。
  1. 要求されたオーディエンス: トークンリクエストで、要求されたオーディエンスが /userinfo のみか、/userinfo エンドポイントでのみ使用することを意図しているか、または openid スコープも要求した場合に /userinfo を含む可能性があるカスタム API かどうかによって、アクセストークンが送信者制約されるかどうかが決まります。
  2. クライアントアプリケーション: クライアントアプリケーションで送信者制約を required に設定しているかどうか。
  3. リソースサーバー: リソースサーバーに送信者制約を設定しているかどうか。
    1. none: リソースサーバーに送信者制約を設定していません。
    2. allowed: 送信者制約方式を設定して、リソースサーバーに送信者制約を構成しています。
    3. required: リソースサーバーに送信者制約を必須として設定しています。つまり、アクセストークンはアプリケーションに対して送信者制約されている必要があります。すべてのアプリケーション、またはパブリックアプリケーションのみに対して送信者制約を必須にできます。送信者制約方式が必要です。
送信者制約方式として mTLS を使用する場合、送信者制約は常にすべてのアプリケーションで必須です。mTLS はパブリックアプリケーションをサポートしていないため、mTLS 送信者制約をパブリッククライアントのみに限定することはできません。
  • 所有証明: クライアントアプリケーションがトークンリクエストで所有証明アサーションを送信したかどうか。
    • mTLS 送信者制約: 所有証明は、TLS ハンドシェイク中にクライアントが特定の秘密鍵 (クライアント証明書に関連付けられたもの) を正常に提示することで証明されます。
    • DPoP: 所有証明は、クライアントが秘密鍵で暗号学的に署名した DPoP Proof JWT を作成し、関連付けられたアクセストークンを使用するすべてのリクエストの DPoP HTTP ヘッダーに DPoP Proof JWT を含めることで実現されます。
次の表は、さまざまなクライアントリクエストパラメーターと Auth0 リソースサーバーの構成に基づいて、アクセストークンがどのように発行されるか、および送信者制約されるかどうかを示しています。
要求されたオーディエンスタイプクライアントで PoP が必須かクライアントが Proof-of-Possession (PoP) を送信したかAuth0 リソースサーバーポリシー: NoneAuth0 リソースサーバーポリシー: Allowed (必須ではない)Auth0 リソースサーバーポリシー: Required
Userinfo のみいいえいいえ発行される、送信者制約なし該当なし該当なし
Userinfo のみいいえはい発行される、送信者制約あり該当なし該当なし
Userinfo のみはいいいえ発行されない該当なし該当なし
Userinfo のみはいはい発行される、送信者制約あり該当なし該当なし
カスタムオーディエンス (Userinfo を含む可能性あり)いいえいいえ発行される、送信者制約なし発行される、送信者制約なし発行されない
カスタムオーディエンス (Userinfo を含む可能性あり)いいえはい発行される、送信者制約なし発行される、送信者制約あり発行される、送信者制約あり
カスタムオーディエンス (Userinfo を含む可能性あり)はいいいえ発行されない発行されない発行されない
カスタムオーディエンス (Userinfo を含む可能性あり)はいはい発行されない発行される、送信者制約あり発行される、送信者制約あり

クライアントアプリケーションの送信者制約を設定する

クライアントアプリケーションに送信者制約を必須にすると、アクセストークンはそのアプリケーションに紐付けられます。Auth0 はリクエストを検証し、トークンを要求したアプリケーションだけが、そのトークンを使用して関連するリソースにアクセスできるようにします。 クライアントアプリケーションで送信者制約を必須に設定すると、リソースサーバーの設定時に、送信者制約方式として mTLS または DPoP を指定できます。 クライアントアプリケーションの送信者制約は、 または で設定できます。
  1. Dashboard > Applications > Applications に移動し、設定するアプリケーションを選択します。
  2. SettingsToken Sender-Constraining までスクロールします。
  3. Require Sender Constraining をオンにします。アプリケーションの送信者制約の必須設定を解除するには、オフにします。

リソースサーバーの送信者制約を設定する

Auth0 が発行するアクセストークンは、リソースサーバー上の API へのアクセスに使用するクライアントアプリケーション (送信者) に制約できます。 Auth0 Dashboard または Management API を使用して、リソースサーバーの送信者制約を設定できます。
トークンバインディングまたは送信者制約を有効にするには、API の API Settings で設定を行います。
  1. Auth0 Dashboard > Applications > APIs に移動します。
  2. 設定する API を選択します。
  3. Settings タブで、Token Sender-Constraining セクションを探します。
  4. 次の項目を設定します。
    1. 送信者制約方式:
      1. なし: リソースサーバーに送信者制約方式を設定しません。
      2. mTLS: リソースサーバーの送信者制約方式として mTLS を有効にします。
      3. DPoP: リソースサーバーの送信者制約方式として DPoP を有効にします。
    2. トークン送信者制約を必須にする: この API に適用する送信者制約ポリシーを選択します。
      1. 常に: すべてのアプリケーションで送信者制約を必須にします。mTLS を使用する場合に選択できるのはこのオプションのみです。
      2. パブリックアプリケーションの場合: パブリックアプリケーションでのみ送信者制約を必須にします。このオプションは mTLS を使用する場合は選択できません。
      3. しない: 送信者制約は必須ではありません。
Auth0 Dashboard > APIs > Settings > トークンバインディング