Skip to main content
機密アプリケーションは、パブリックアプリケーションとは異なり、資格情報を安全に保管できます。機密アプリケーションが token endpoint にアクセスを要求したり、をリクエストしたりする場合、アプリケーションは に対して認証を行う必要があります。トークンをリクエストする際、アプリケーションは自身のみが知る資格情報を提示します。さらに、アプリケーションの資格情報は、/authorize endpoint に送信されるリクエストパラメーターの真正性と完全性を保護するためにも使用できます。 機密アプリケーションとパブリックアプリケーションの違いについて詳しくは、Confidential and Public Applications を参照してください。

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

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

Client Secret 認証

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

Private Key JWT 認証

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

OAuth向けmTLS

Highly Regulated Identity 機能を利用するには、Highly Regulated Identity add-on を含む Enterprise Plan への加入が必要です。詳しくは、Auth0 Pricing を参照してください。
OAuth向けmTLS では、自己署名証明書または公開鍵基盤 (PKI) に基づく相互TLSを使用して、認可サーバーへのリクエストを認証します。Auth0 における mTLS 認証の仕組みについて詳しくは、mTLS で認証する を参照してください。 Auth0 の OAuth向けmTLS は、主に金融や医療など、すでに mTLS を導入している可能性が高い高度な規制業界の顧客を対象としています。導入を簡単にするため、この mTLS 機能は カスタムドメイン を基盤とし、証明書のプロビジョニングと検証には顧客の既存の mTLS インフラストラクチャを活用します。mTLS による認証やエッジネットワークの設定について詳しくは、mTLS で認証するcustomer edge を設定する を参照してください。
mTLS endpoint aliases を設定すると、OAuth向けmTLS で特定のサブドメインを使用できます。
mTLS の設定方法については、mTLS 認証を設定する を参照してください。エッジネットワークの設定と mTLS の構成が完了したら、認可サーバーを呼び出す で説明されているように、Auth0 にリクエストを送信するため、アプリケーションで mTLS トンネルを確立する必要があります。 mTLS では、クライアント証明書の秘密キーがネットワーク上を送信されないため、アプリケーションの資格情報が漏えいするリスクを低減できます。Auth0 のようなアイデンティティプロバイダーは、この秘密キーにアクセスできません。認証できるのは、秘密キーにアクセスできるアプリケーションのみです。
mTLS は、攻撃者からアクセストークンを保護するための 送信者制約 や Token Binding もサポートしています。詳しくは、送信者制約を設定する を参照してください。Token Binding では、mTLS で使用するクライアント証明書のような、事前登録済みのアプリケーション資格情報は必要ありません。

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

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

キーと証明書の登録

認証情報の用途ごとに、個別のキーペアを生成してください。たとえば、JAR と Private Key JWT 認証 の両方で同じキーペアを使い回さないでください。
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 でアプリケーションの認証方法を更新できます。詳しくは、資格情報の設定を参照してください。

詳細はこちら