翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
更新トークン
更新トークンを使用して、新しい ID およびアクセストークンを取得できます。更新トークンはデフォルトで、アプリケーションユーザーがユーザープールにサインインしてから 30 日後に有効期限が切れます。ユーザープールのアプリケーションを作成するときは、アプリケーションの更新トークンの有効期限を 60 分から 10 年までの任意の値に設定できます。
更新トークンによる新しいアクセストークンと ID トークンの取得
マネージドログインの認証コードフローを使用した認証や、API オペレーションまたは SDK メソッドを使用した認証が成功すると、Amazon Cognito は更新トークンを発行します。更新トークンは、新しい ID トークンとアクセストークン、さらに必要に応じて新しい更新トークンを返します。更新トークンは、以下の方法で使用できます。
- GetTokensFromRefreshToken
-
GetTokensFromRefreshToken API オペレーションは、有効な更新トークンから新しい ID トークンとアクセストークンを発行します。更新トークンのローテーションを有効にしている場合は、新しい更新トークンも取得できます。
- InitiateAuth と AdminitiateAuth
-
AdminInitiateAuth または InitiateAuth API オペレーションには、
REFRESH_TOKEN_AUTH認証フローが含まれています。このフローでは、更新トークンを渡して新しい ID トークンとアクセストークンを取得します。更新トークンのローテーションが有効になっているアプリケーションクライアントでは、REFRESH_TOKEN_AUTHで認証することはできません。 - OAuth トークンエンドポイント
-
ドメインを持つユーザープールのトークンエンドポイントには、
refresh_token付与タイプがあります。これを通じて、有効な更新トークンから新しい ID トークン、アクセストークン、さらに必要に応じて (更新トークンのローテーションにより) 更新トークンを発行します。
更新トークンのローテーション
必要に応じて、アプリケーションクライアントで更新トークンのローテーションを設定できます。更新トークンのローテーションを使用すると、クライアントは元の更新トークンを無効にし、トークンが更新されるたびに新しい更新トークンを発行できます。この設定を有効にすると、すべての形式のトークン更新で成功したリクエストごとに、新しい ID トークン、アクセストークン、および更新トークンが返されます。この設定を無効にすると、トークン更新リクエストは新しいアクセストークンと ID トークンのみを返し、元の更新トークンは有効なままになります。新しい更新トークンは、元の更新トークンの残りの期間有効になります。更新トークンをローテーションするか、元の更新トークンを引き継ぐように、アプリケーションクライアントを設定できます。短時間の再試行を許可するには、元の更新トークンの猶予期間を最大 60 秒に設定することもできます。
更新トークンのローテーションについて知っておくべきこと
-
更新トークンのローテーションを有効にすると、ユーザープールの JSON ウェブトークンに新しいクレームが追加されます。アクセストークンと ID トークンに
origin_jtiとjtiクレームが追加されます。これらのクレームに伴って JWT のサイズが増加します。 -
更新トークンのローテーションは、認証フロー
REFRESH_TOKEN_AUTHと互換性がありません。更新トークンのローテーションを実装するには、アプリケーションクライアントでこの認証フローを無効にし、GetTokensFromRefreshToken API オペレーションまたは同等の SDK メソッドを使用してトークン更新リクエストを送信するようにアプリケーションを設計する必要があります。 -
更新トークンのローテーションを非アクティブにすると、
GetTokensFromRefreshTokenまたはREFRESH_TOKEN_AUTHを使用してトークン更新リクエストを完了できます。 -
ユーザープールでデバイスの記憶がアクティブな場合は、
GetTokensFromRefreshTokenリクエストでデバイスキーを指定する必要があります。アプリケーションが最初の認証リクエストで送信した確認済みデバイスキーがユーザーにない場合、Amazon Cognito は新しいデバイスキーを発行します。この設定でトークンを更新するには、デバイスキーを指定する必要があります (このデバイスキーは、AuthParametersで指定したものか、認証レスポンスで受け取ったものかは問いません)。 -
GetTokensFromRefreshTokenリクエストで、トークン生成前の Lambda トリガーをClientMetadataに渡すことができます。このデータは、トリガーの入力イベントに渡され、Lambda 関数のカスタムロジックで使用できる追加のコンテキストを提供します。
セキュリティのベストプラクティスとして、アプリケーションクライアントで更新トークンのローテーションを有効にします。
API および SDK トークンの更新
更新トークンを使用してユーザープール API で新しい ID トークンとアクセストークンを取得するには 2 つの方法があり、更新トークンのローテーションが有効になっているかどうかに応じて使い分けます。アプリケーションクライアントで更新トークンのローテーションが有効になっている場合は、GetTokensFromRefreshToken API オペレーションを使用します。アプリケーションクライアントで更新トークンのローテーションが有効になっていない場合は、AdminInitiateAuth API オペレーションまたは InitiateAuth API オペレーションの REFRESH_TOKEN_AUTH フローを使用します。
注記
ユーザーは、マネージドログインまたは AWS SDKsおよび Amazon Cognito API オペレーションで構築したカスタムアプリケーションで、ユーザープールで認証できます。REFRESH_TOKEN_AUTH フローと GetTokensFromRefreshToken は、どちらもマネージドログインユーザーのトークン更新を完了できます。カスタムアプリケーションでのトークン更新は、マネージドログインセッションには影響しません。これらのセッションはブラウザ Cookie で設定され、1 時間有効です。GetTokensFromRefreshToken レスポンスは、新しい ID トークン、アクセストークン、必要に応じて更新トークンを発行しますが、マネージドログインのセッション Cookie は更新しません。
REFRESH_TOKEN_AUTH は、更新トークンのローテーションが有効になっているアプリケーションクライアントでは使用できません。
OAuth トークンの更新
更新トークンは、ドメインを設定したユーザープール内の トークンエンドポイント に送信することもできます。リクエスト本文には、refresh_token の grant_type 値とユーザーの更新トークンの refresh_token 値を含めます。
トークンエンドポイントへのリクエストは、更新トークンのローテーションが有効になっているアプリケーションクライアントと無効になっているアプリケーションクライアントの両方で使用できます。更新トークンのローテーションが有効になっている場合、トークンエンドポイントは新しい更新トークンを返します。
次に示すのは、更新トークンを使用したリクエストの例です。
POST /oauth2/token HTTP/1.1 Host:auth.example.comContent-Type: application/x-www-form-urlencoded Authorization: BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwContent-Length: ** client_id=1example23456789&grant_type=refresh_token&refresh_token=eyJjd123abcEXAMPLE
更新トークンの取り消し
ユーザーに属する更新トークンを取り消すことができます。トークンの取り消しの詳細については、「トークン取り消しによるユーザーセッションの終了」を参照してください。
注記
更新トークンを取り消すと、Amazon Cognito がそのトークンを使用して更新リクエストから発行したすべての ID トークンとアクセストークンが取り消されます。
現在サインインしているすべてのセッションからユーザーをサインアウトさせるには、GlobalSignOut API リクエストまたは AdminUserGlobalSignOut API リクエストを使用してすべてのトークンを取り消します。ユーザーがサインアウトすると、以下の結果になります。
-
ユーザーの新しいトークンの取得にユーザーの更新トークンを使用できない。
-
ユーザーのアクセストークンは、トークン認証された API リクエストを行うことができない。
-
新しいトークンを取得するためにユーザーが再認証される必要がある。マネージドログインのセッション Cookie は自動的に期限切れにならないため、ユーザーは認証情報の入力を求められることなく、セッション Cookie を使用して再認証できます。マネージドログインのユーザーをサインアウトさせたら、ユーザーをログアウトエンドポイントにリダイレクトします。ここで Amazon Cognito はユーザーのセッション Cookie を消去します。
更新トークンを使用すると、ユーザーのセッションをアプリケーション内で長期間維持できます。時間が経つと、ユーザーは更新トークンでサインインしたままになっているアプリケーションの承認を解除したくなるかもしれません。1 つのセッションからユーザーをサインアウトさせるには、ユーザーの更新トークンを取り消します。ユーザーがすべての認証済みセッションからログアウトしたい場合は、GlobalSignOut API リクエストを生成します。アプリケーションは、[すべてのデバイスからサインアウト] などのオプションをユーザーに提供できます。GlobalSignOut は、ユーザーの有効な (変更されていない、有効期限が切れていない、取り消されていない) アクセストークンを受け入れます。この API はトークン認証されているため、あるユーザーがそれを使用して別のユーザーのサインアウトを開始することはできません。
ただし、認証情報を使用して承認する AdminUserGlobalSignOut API リクエストを生成 AWS して、すべてのデバイスから任意のユーザーをサインアウトできます。管理者アプリケーションは AWS 、開発者認証情報を使用してこの API オペレーションを呼び出し、ユーザープール ID とユーザーのユーザー名をパラメータとして渡す必要があります。AdminUserGlobalSignOut API は、ユーザープール内の任意のユーザーをサインアウトできます。
AWS 認証情報またはユーザーのアクセストークンのいずれかを使用して認可できるリクエストの詳細については、「認可モデル別にグループ化された API オペレーションのリスト」を参照してください。