Before you start
まず、Auth0 Dashboardで新しいアプリケーションを作成するか、既存のアプリケーションを変換する必要があります。詳細については、「秘密鍵JWTの認証を構成する」をお読みください。
private_key_jwt:
で認証をするには、2つの手順を完了する必要があります。
- クライアントアサーションを構築します。このアサーションはキーペアを生成した際に秘密鍵で署名されたJWTです。キーペア生成の詳細については、「秘密鍵JWTの認証を構成する」をお読みください。
- Auth0に対してアサーションを使用して認証します。
アサーションを構築する
Auth0のSDKのいずれかを使用して、アサーションを自動的に構築できます。SDKを使用しない場合、ご自身でアサーションを構築する必要があります。 アサーションとは、以下のプロパティとクレームを含む必要がある(JWT)のことです。特に記載のない限り、クレームはすべて必須です。JWTクレームの詳細については、「JSON Web Tokenクレーム」をお読みください。
-
ヘッダー
alg
:アサーションの署名に使用されるアルゴリズム。アルゴリズムはアプリケーションの資格情報を作成した際に指定されたアルゴリズムと一致している必要があります。kid
:(任意)Auth0が生成した資格情報のkid
。kid
は、資格情報を作成する際に作られます。
-
ペイロード
-
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分以内に設定することをお勧めします。
-
例
以下の例では、Node.jsスクリプトがjoseパッケージを使用してアサーションを生成しています。
アサーションをアクセストークンと交換する
以下の例では、クライアントの資格情報フローを使用しています。秘密鍵JWTでの認証は、
client_secret
をclient_assertion
で置き換えることを許可している他の付与タイプにも使用できます。$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文字