Documentation Index Fetch the complete documentation index at: https://auth0-feat-ionic-capacitor-quickstart-modernization.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
秘密鍵JWTは、エンタープライズプランでのみ使用できます。アップグレードするには、「Auth0の価格設定 」からご連絡ください。
秘密鍵JWT 認証は、非対称鍵ペアで署名されたJWTアサーションを使用して、OIDC Connect Core Client Authentication 1.0 によるクライアント認証をサポートします。新しいアプリケーションを作成してprivate_key_jwtを使用するか、既存のアプリケーションで認証に秘密鍵ペアを使用するように設定することができます。
前提条件
秘密鍵JWTを使用するようにアプリケーションを構成する前に、RSA鍵ペアを生成する 必要があります。
秘密鍵JWTを構成する
Auth0 Dashboard
Management API
Auth0 Dashboardを使用して、新しいアプリケーションを作成することができ、資格情報の構成や既存アプリケーションの更新にも使用できます。 秘密鍵JWTにアプリケーション資格情報方法を設定する前に、現在のclient_secretパラメーターを安全に保存することをお勧めします。client_secretパラメーターは、秘密鍵JWTの構成が完了すると非表示になります。 private_key_jwtに対する新しいアプリケーションの構成
[Auth0 Dashboard] > [Applications(アプリケーション)] > [Application(アプリケーション)] に移動します。
[Create Application(アプリケーションの作成)] を選択します。
アプリケーションタイプを選択します。
アプリケーション設定の下にある、[Credentials(資格情報)] タブを選択します。
[Authentication Methods(認証方法)] の下にある、[Private Key JWT(秘密鍵JWT)] を選択します。
資格情報の詳細を構成します。
資格情報の名前を入力します。
PEMフォーマットまたはX.509証明書をアップロードします。
アサーションに署名するアルゴリズムを選択します。
任意:カスタム有効期限を有効にします。[Set an explicit expiry date for this Credential(この資格情報への明確な有効期限の設定)] を選択し、未来の日付を設定します。
不正な形式のキーマテリアルを送信すると、無効な証明書のエラーを受け取る可能性があります。問題を回避するには、opensslで作成したファイルを直接アップロードしてください。
[Add Credential(資格情報の追加)] を選択します。
既存のアプリケーションの構成
[Auth0 Dashboard] > [Applications(アプリケーション)] に移動します。
更新したいアプリケーションを選択します。
[Credentials(資格情報)] タブを選択します。
[Private Key JWT(秘密鍵JWT)] を選択します。
資格情報の詳細を構成します。
資格情報の名前を入力します。
PEMフォーマットまたはX.509証明書をアップロードします。
アサーションに署名するアルゴリズムを選択します。
任意:カスタム有効期限を有効にします。[Set an explicit expiry date for this Credential(この資格情報への明確な有効期限の設定)] を選択し、未来の日付を設定します。
[Add Credential(資格情報の追加)] を選択します。
クライアントシークレット認証の使用のためのアプリケーションの構成
[Auth0 Dashboard] > [Applications(アプリケーション)] > [Applications(アプリケーション)] に移動し、更新したいアプリケーションを選択します。
[Credentials(資格情報)] タブを選択します。
クライアントシークレット(Post) またはクライアントシークレット(Basic) を選択します。
[Save(保存)] を選択します。
資格情報の有効期限の更新 Auth0 Dashboardで、既存の資格情報の有効期限を更新できます。
[Auth0 Dashboard] > [Applications(アプリケーション)] > [Applications(アプリケーション)] に移動し、更新したいアプリケーションを選択します。
[Credentials(資格情報)] タブを選択します。
更新したい資格情報を選択し、[Edit Credential(資格情報の編集)] を選択します。
[Set an explicit expiry date for this Credential(この資格情報への明確な有効期限の設定)] を選択し、未来の日付を設定します。
[Update Credential(資格情報の更新)] を選択します。
private_key_jwtに対する新しいアプリケーションの構成Management APIを使用して、認証方法をprivate_key_jwtに設定し、新しいアプリケーションを作成できます。次のペイロードでクライアントの作成 エンドポイントにPOSTを呼び出します。 curl --location --request POST 'https://{domain}/api/v2/clients' \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"name" : "{clientName}",
"app_type" : "non_interactive",
"client_authentication_methods" : {
"private_key_jwt" : {
"credentials" : [
{
"name" : "{credentialName}",
"credential_type" : "public_key",
"pem" : "{credentialublicKey}",
"alg" : "{algorithm}",
"expires_at" : "{expiresAt}"
}
]
},
"jwt_configuration" : {
"alg" : "RS256"
}
}
}'
パラメーター 説明 algorithmアサーションに署名するために使用するアルゴリズム。サポート値はRS256、RS384、PS256です。指定しない場合、アルゴリズムはデフォルトのRS256になります。 clientName新規クライアントの名前。 credentialName公開鍵の名前。 expires_at任意。ISO 8601形式の資格情報の有効期限。例えば、2020-08-20T19:10:06.299Zです。有効期限を過ぎると、資格情報は無効になります。 managementApiAccessTokencreate:credentials スコープを持つ Management API のアクセストークン 。pemPEM形式でエンコードされた公開鍵、またはx.509。 parse_expiry_from_cert任意。証明書を与えられたときにAuth0が有効期限の構造解析をするべきブール値を示します。証明書が与えられない場合、Auth0はエラーを返します。また、parse_expiry_from_certとexpires_atも相互排他的です。その場合、Auth0はエラーを返します。
公開鍵のPEMは、Auth0に渡す前にJSONでエスケープ処理する必要があります。この例では、以下を渡す必要があります: -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA53VzmIVVZZWyNm266l82
mnoDc9g/snXklax5kChEhqK/WnTUvuXP4Gd4THj8rchxgUGKXd4PF3SUcKyn/qPm
Tet0idVHk2PwP//FOVgYo5Lb04js0pgZkbyB/WjuMp1w+yMuSn0NYAP7Q9U7DfTb
jmox8OQt4tCB4m7UrJghGqT8jkPyZO/Ka6/XsyjTYPOUL3t3PD7JShVAgo1mAY6g
Sr4SORywIiuHsg+59ad7MXGy78LirhtqAcDECKF7VZpxMuEjMLg3o2yzNUeWI2Mg
IF+t0HbO1E387fvLcuSyai1yWbSr1PXyiB2aXyDpbD4u7d3ux4ahU2opH11lBqvx
+wIDAQAB
-----END PUBLIC KEY-----
応答には、client_idプロパティを含み、アプリケーションをリソースサーバーに紐づけます。また、応答には、資格情報のために作成した生成kidを含みます。これはのちほど、client_assertionを生成するために使用します。 既存のアプリケーションの構成 また、既存のアプリケーションを構成し、Auth0 Management APIで秘密鍵JWT認証を使用できます。これにはtoken_endpoint_auth_methodフィールドのすべての値を削除し、client_authentication_methodsフィールドに値を作成する必要があります。 既存の運用アプリケーションをprivate_key_jwtで認証するように更新する場合は、後で参照できるように現在のclient_secret値を安全に保管することをお勧めします。 private_key_jwtを構成した後では、クライアントシークレットを使用するようにアプリケーションの構成を復元しない限り、client_secretの値にアクセスできなくなります。
資格情報リソースの作成 キーペアを生成したら、資格情報リソースを作成します。Management APIの/clients エンドポイントに次のPOST要求をします。 curl --location --request POST 'https://{domain}/api/v2/clients/{clientId}/credentials' \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"name" : "{credentialName}",
"credential_type" : "public_key",
"pem" : "{credentialPublicKey}",
"alg" : "{algorithm}",
"expires_at " : "{expiresAt}",
}'
パラメーター 説明 algorithmアサーションの署名に使用するアルゴリズム。サポート値はRS256、RS384、PS256です。指定されていない場合、アルゴリズムのデフォルトはRS256です。 clientId更新されるアプリケーションのID。 credentialName公開鍵の名前。 managementApiAccessTokencreate:credentialsスコープを持つ[Management APIのアクセストークン](/secure/tokens/access-tokens/management-api-access-tokens)。pemPEM形式でエンコードされた公開鍵またはx.509証明書。 expires_at任意。ISO 8601形式の資格情報の有効期限です。例えば、2020-08-20T19:10:06.299Zです。有効期限が過ぎると、資格情報は無効になります。 parse_expiry_from_cert任意。証明書を指定されたときにAuth0が構造解析をする有効期限のブール値を示します。証明書が指定されない場合、Auth0はエラーを返します。また、parse_expiry_from_certとexpires_atは相互排他的です。その場合、Auth0はエラーを返します。
::: ::: 注意 公開鍵
PEM公開鍵は、Auth0に渡す前にJSON-escapedである必要があります。この例では、渡す必要のあるコンテンツは次の通りです: ----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA53VzmIVVZZWyNm266l82
mnoDc9g/snXklax5kChEhqK/WnTUvuXP4Gd4THj8rchxgUGKXd4PF3SUcKyn/qPm
Tet0idVHk2PwP//FOVgYo5Lb04js0pgZkbyB/WjuMp1w+yMuSn0NYAP7Q9U7DfTb
jmox8OQt4tCB4m7UrJghGqT8jkPyZO/Ka6/XsyjTYPOUL3t3PD7JShVAgo1mAY6g
Sr4SORywIiuHsg+59ad7MXGy78LirhtqAcDECKF7VZpxMuEjMLg3o2yzNUeWI2Mg
IF+t0HbO1E387fvLcuSyai1yWbSr1PXyiB2aXyDpbD4u7d3ux4ahU2opH11lBqvx
+wIDAQAB
-----END PUBLIC KEY-----
::: 資格情報IDが応答を返します。次のステップにIDを使用します。 資格情報の関連付け 資格情報を作成したら、それをアプリケーションに関連付けます。private_key_jwtを使用した認証中に、アプリケーションはこれらの資格情報を使用します。 Management APIのクライアントの更新 エンドポイントにPATCH要求を行います。 curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId} \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"token_endpoint_auth_method": null,
"client_authentication_methods": {
"private_key_jwt": {
"credentials": [{ "id": {credentialId} }]
}
}
}'
パラメーター 説明 clientId更新されるアプリケーションのID。 managementApiAccessTokenupdate:clientとupdate:credentialsのスコープを持つManagement APIのアクセストークン 。credentialId新しい資格情報のID。 pemPEM形式の公開鍵。
Auth0はアプリケーションのJWT署名アルゴリズムとして、HS256の使用に対応していません。RS256アルゴリズムにjwt_configuration.algフィールドを設定する必要があります。署名アルゴリズムを変更する方法については、「アプリケーションの署名アルゴリズムを変更する 」をご覧ください。 クライアントシークレット認証の使用のためのアプリケーションの構成 クライアントシークレットを使用するようにアプリケーション構成を復元するには、client_authentication_methodsを無効にし、認証方法でtoken_endpoint_auth_methodを再有効にする必要があります。 認証方法をclient_secretに設定すると、client_secretを使用して認証するように更新するまで、アプリケーションはprivate_key_jwtを使用して認証することができなくなります。
例 curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId} \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"token_endpoint_auth_method": "{tokenEndpointAuthMethod}",
"client_authentication_methods": null
}'
パラメーター 説明 clientId更新されたアプリケーションのID。 managementApiAccessTokenupdate:clientsとupdate:clientとupdate:credentialsのスコープを持つ Management APIのアクセストークン 。 tokenEndpointAuthMethod最終の認証方法。例:client_secret_basicまたはclient_secret_post。
有効期限フィールドに資格情報をパッチする Management APIの 資格情報の更新 エンドポイントで有効期限付きの既存の資格情報を更新できます。 curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId}/credentials/{credentialId} ' \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"expires_at" : {expiresAt}
} '
パラメーター 説明 managementApiAccessTokenupdate:credentialsスコープを持つManagement APIのアクセストークン。clientId更新したいクライアント。 expires_atISO 8601形式の資格情報の有効期限。たとえば、2020-08-20T19:10:06.299Zです。
更新できる唯一のフィールドはexpires_atフィールドです。残りの属性は不変で、変更するには資格情報をローテーションする必要があります。
資格情報の制限
Auth0では、秘密鍵JWT認証の設定において、RSA鍵ペアの最小サイズを2048ビット、最大サイズを4096ビットと定めています。アプリケーションでは、最大2つの資格情報を構成できます。
資格情報のローテーションを行う
鍵の漏洩を防ぐために、Auth0では定期的に鍵ペアをローテーションすることを推奨しています。その方法については、「資格情報のローテーションを行う 」をお読みください。
もっと詳しく