メインコンテンツへスキップ

Before you start

まず、Auth0 Dashboardで新しいアプリケーションを作成するか、既存のアプリケーションを変換する必要があります。詳細については、「秘密鍵JWTの認証を構成する」をお読みください。
private_key_jwt:で認証をするには、2つの手順を完了する必要があります。
  1. クライアントアサーションを構築します。このアサーションはキーペアを生成した際に秘密鍵で署名されたJWTです。キーペア生成の詳細については、「秘密鍵JWTの認証を構成する」をお読みください。
  2. Auth0に対してアサーションを使用して認証します。

アサーションを構築する

Auth0のSDKのいずれかを使用して、アサーションを自動的に構築できます。SDKを使用しない場合、ご自身でアサーションを構築する必要があります。 アサーションとは、以下のプロパティとクレームを含む必要がある(JWT)のことです。
特に記載のない限り、クレームはすべて必須です。JWTクレームの詳細については、「JSON Web Tokenクレーム」をお読みください。
  • ヘッダー
    • alg:アサーションの署名に使用されるアルゴリズム。アルゴリズムはアプリケーションの資格情報を作成した際に指定されたアルゴリズムと一致している必要があります。
    • kid(任意)Auth0が生成した資格情報のkidkidは、資格情報を作成する際に作られます。
  • ペイロード
    • iss:アプリケーションのクライアントID。この値はアプリケーション設定にあり、[Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション]に移動して、[Settings(設定)] タブを選択すると見つかります。
    • sub:アプリケーションのクライアントID。この値もアプリケーション設定で見つけることができます。[Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション]に移動して、[Settings(設定)] タブを選択します。
    • aud:アサーションを受け取るAuth0テナントのURLまたはカスタムドメイン。例:https://{yourTenant}.auth0.com/。末尾のスラッシュを含めます。
      Auth0テナントに対してカスタムドメインを構成した場合は、これをaudクレームとして使用できます。その場合は、カスタムドメインの使用をお勧めします。
    • iat(任意)とexp:「発行日時」と「有効期限」クレームを正しいタイムスタンプで設定します。クライアントのアサーションは、一度限り使用できるトークンで、可能な限り短い有効期限の設定をお勧めします。Auth0はトークンのライフタイムとして最長5分間をサポートします。
    • jti:クライアントが作成した一意のクレームID。Universally Unique Identifier(UUID)フォーマットの使用をお勧めします。
      このJWTは1回のみ使用可能なトークンで、有効期限を短くすることによって有効性にそのような制約を設けます。1分以内に設定することをお勧めします。
そしてトークンは、秘密鍵JWT認証のためにアプリケーションを作成または構成した際に生成された秘密鍵で署名される必要があります。その方法については、「JSON Web Tokenの仕様」をご確認ください。 標準ツールやこの機能をサポートするサードパーティライブラリを使用してトークンを構築することを推奨します。ゼロから独自に実装するのは避けてください。サポートしているライブラリの詳細については、JWT.ioのリストを参照してください。

以下の例では、Node.jsスクリプトがjoseパッケージを使用してアサーションを生成しています。
秘密鍵で署名したクライアントアサーションの例
private key example
以下に対応しています。
必要な情報でJWTを生成したら、Auth0に対してアプリケーションを認証する準備が整います。

アサーションをアクセストークンと交換する

以下の例では、クライアントの資格情報フローを使用しています。秘密鍵JWTでの認証は、client_secretclient_assertionで置き換えることを許可している他の付与タイプにも使用できます。
JWTアサーションをアクセストークンと交換するには、以下のパラメーターで認証APIのトークンエンドポイントを呼び出します。
  • $client_assertion:JWTアサーション
  • $resource_server_identifier:リソースサーバーの識別子。詳細については、「APIを登録する」お読みください。

サポートされているエンドポイント

https://$tenant/oauth/tokenエンドポイントに加え、以下のAuth0 Authentication APIエンドポイントは、構成済みアプリケーションのprivate_key_jwt認証をサポートしています。

アサーションの制限

JWTアサーションの最大長は2048バイトです。 アサーション内のクレームには次の制限があります。
  • iss:64文字
  • sub:64文字
  • jti:64文字
  • alg:16文字