メインコンテンツへスキップ
機密アプリケーションは、パブリックアプリケーションとは異なり、認証情報を安全に保存できます。機密アプリケーションが token endpoint からアクセストークンまたは を要求する場合、アプリケーションは に対して認証する必要があります。このトークン要求の際に、アプリケーションは自身が保持する認証情報を提示します。さらに、アプリケーション認証情報は、/authorize エンドポイントに送信されるリクエストパラメーターの真正性と完全性を保護するためにも使用できます。 機密アプリケーションとパブリックアプリケーションの違いについて詳しくは、Confidential and Public Applications を参照してください。

アプリケーションの認証方法

Auth0 からトークンを取得するには、アプリケーションが Authentication API を介して認証する必要があります。Auth0 では、アプリケーションの認証方法として以下をサポートしています。
  • : 対称認証方式です。クライアントシークレット認証では、アプリケーションの作成時に Auth0 が生成したクライアントシークレットを使用します。
  • Private Key : 非対称認証方式です。Private Key JWT では、認証情報として使用する公開鍵と秘密鍵の鍵ペアを生成します。公開鍵は Auth0 に提供し、秘密鍵は Auth0 と共有せず、自社のシステム内で安全に保管します。
  • mTLS for : 非対称認証方式です。mTLS for OAuth では、標準の X.509 クライアント証明書を Auth0 に登録します。次に、対応する秘密鍵を使用して mTLS トンネルを安全に確立し、Auth0 テナントのエンドポイントにリクエストを送信します。

クライアントシークレット認証

クライアントシークレット認証は、OAuth 2.0 仕様 で定義されている対称認証方式です。クライアントシークレット認証は、Auth0 のデフォルトの認証方式です。 この認証方式は、既存のすべてのアプリケーションとツールでサポートされています。クライアントシークレットは、アプリケーションの作成時に Auth0 によって生成される高エントロピーの値で、アプリケーションと Auth0 の両方が保持します。アプリケーションは、認可サーバーへのリクエストにクライアントシークレットを含めることで認証します。 認証情報としてクライアントシークレットを使用することには、特に高度なセキュリティが求められるシナリオでは、いくつかのセキュリティリスクがあります。
  • アプリケーションが使用するシークレットは Auth0 と共有されます。
  • シークレットはネットワーク経由で送信されるため、中間者攻撃を受けた場合に傍受される可能性があります。
セキュリティ体制を強化するため、Private Key JWT 認証方式の使用を推奨します。
アプリケーションに設定できるクライアントシークレットは 1 つだけです。新しいシークレットに合わせて実装を更新している間は、シークレットをローテーションできません。詳しくは、Rotate Client Secrets を参照してください。

Private Key JWT 認証

Private Key JWT は Enterprise プランのお客様のみご利用いただけます。アップグレードするには、Auth0 pricing にお問い合わせください。
Private Key JWT 認証は、秘密鍵と公開鍵のキーペアに基づく非対称認証方式です。詳しくは、JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants を参照してください。 または Auth0 の を使用して、テナントで Private Key JWT を使用するように設定できます。詳しくは、Private Key JWT 認証の設定. を参照してください。 Private Key JWT では、認可サーバーへのリクエストは主に次の 2 つの手順で構成されます。
  1. 公開鍵と秘密鍵を設定します。
    1. キーペアを生成 します (公開鍵 1 つと秘密鍵 1 つ) 。
    2. 認証リクエストを行うアプリケーションに秘密鍵を登録し、IDプロバイダー (IdP) に公開鍵を登録します。
  2. 認可サーバーへのリクエスト用のアサーションを作成します。
    1. 指定されたクレームを含む新しいアサーションを JWT 形式で作成し、秘密鍵で署名します。このアサーションを IdP へのリクエストの一部として含めます。
    2. IdP は公開鍵を使用してアサーションを検証します。
Auth0 で Private Key JWT を設定するには、Private Key JWT 認証の設定 を参照してください。Private Key JWT のアサーション作成の詳細については、Authenticate with Private Key JWT を参照してください。 Private Key JWT を使用する主なセキュリティ上の利点は次のとおりです。
  • 秘密鍵はネットワーク経由で送信されないため、アプリケーションの認証情報が漏えいするリスクを低減できます。Auth0 のような は秘密鍵を保持せず、秘密鍵にアクセスできるアプリケーションだけが認証リクエストを作成できます。
  • 署名付きアサーションの有効期限は短いため、リプレイ攻撃の機会を抑えられます。

mTLS for OAuth

Highly Regulated Identity 機能を使用するには、Highly Regulated Identity アドオンを含む Enterprise Plan が必要です。詳細については、Auth0 Pricing を参照してください。
mTLS for OAuth は、自己署名証明書または公開鍵基盤 (PKI) に基づく相互 TLS を使用して、認可サーバーへのリクエストを認証します。Auth0 における mTLS 認証の仕組みについて詳しくは、mTLS を使用した認証 を参照してください。 Auth0 の mTLS for OAuth は、主に金融や医療などの厳しい規制を受ける業界で、すでに mTLS を導入している可能性が高い顧客を対象としています。導入を簡素化するため、この mTLS 機能は custom domains を基盤とし、証明書のプロビジョニングと検証には顧客の既存の mTLS インフラストラクチャを活用します。mTLS による認証とエッジネットワークの設定について詳しくは、mTLS を使用した認証 および Set up your customer edge を参照してください。
mTLS endpoint aliases を設定すると、mTLS for OAuth に特定のサブドメインを使用できます。
mTLS の設定方法については、Configure mTLS Authentication を参照してください。エッジネットワークを設定して mTLS を構成したら、Call the authorization server で説明されているように、アプリケーションは Auth0 にリクエストを送信するために mTLS トンネルを確立する必要があります。 mTLS では、クライアント証明書の秘密鍵がネットワーク経由で送信されないため、アプリケーション認証情報が漏えいするリスクを低減できます。Auth0 のような IDプロバイダーは秘密鍵にアクセスできません。認証できるのは、秘密鍵にアクセスできるアプリケーションだけです。
mTLS は、アクセストークンを攻撃者から保護するための Sender Constraining や Token Binding もサポートしています。詳しくは、Configure Sender Constraining を参照してください。Token Binding では、mTLS で使用するクライアント証明書のような事前登録済みのアプリケーション認証情報は必要ありません。

JWT で保護された認可リクエスト (JAR)

Highly Regulated Identity 機能を利用するには、Highly Regulated Identity アドオンを含む Enterprise Plan が必要です。詳細については、Auth0 Pricing を参照してください。
JWT-Secured Authorization Request (JAR) は、認可リクエストのセキュリティを強化する OAuth2 のプロトコル拡張です。これは、JSON Web Token (JWT) のリクエストパラメーターを使用して、認可リクエストパラメーターの完全性と機密性を保護する仕組みです。 アプリケーションの JAR は、Auth0 Management API を使用して設定できます。Auth0 の JAR 実装では非対称暗号方式を使用します。公開鍵を登録し、秘密鍵はお客様側で安全に保管します。詳細については、JWT で保護された認可リクエストを設定する を参照してください。 JAR を使用する場合、クライアントは認可リクエストパラメーターを含む JWT を作成し、秘密鍵で署名して認可サーバーに送信します。認可サーバーは、クライアントの公開鍵を使用して署名を検証し、署名が有効であれば JWT から認可リクエストパラメーターを抽出して、通常どおりリクエストを処理します。JAR の使用方法の詳細については、JWT-Secured Authorization Requests (JAR) を使用した認可コードフロー を参照してください。

鍵と証明書の登録

認証情報の用途ごとに、別々の鍵ペアを生成する必要があります。たとえば、JAR と Private Key JWT Authentication の両方に同じ鍵ペアを使い回さないでください。
1 つのアプリケーションに対して、2 つの公開鍵を同時に登録できます。Auth0 は適切な鍵で検証を行うため、ダウンタイムなしでローテーションできます。古い鍵を削除または無効化すると、対応する秘密鍵で署名されたすべてのリクエストは無効化されます。 注: Auth0 は、アプリケーション認証および認可リクエストの署名について、次のアルゴリズムをサポートしています: RS256、RS384、PS256。各アルゴリズムに対応した適切な鍵を指定してください。詳細については、Configure Private JWT AuthenticationConfigure JWT-Secured Authorization Requests を参照してください。 同様に、mTLS クライアント証明書についても、1 つのアプリケーションに対して 2 つのクライアント X.509 証明書 (自己署名、または CA 証明書の Subject DN を持つもの) を同時に登録できます。Auth0 は両方のクライアント証明書で検証を行うため、ダウンタイムなしで証明書をローテーションできます。

アプリケーションの認証方法を更新する

アプリケーションの認証方法は、Auth0 Dashboard で更新できます。詳しくは、認証情報の設定を参照してください。

詳しくはこちら