トークン失効によるユーザーセッションの終了 - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

トークン失効によるユーザーセッションの終了

ユーザープールAPIまたは認証サーバー を使用して、ユーザーの更新トークンを取り消すことができますエンドポイントの取り消し。更新トークンを取り消すと、その更新トークンによってそれまでに発行されたすべてのアクセストークンが無効になります。ユーザーに発行されたその他の更新トークンは影響を受けません。

注記

JWT トークンは、トークンの作成時に割り当てられた署名と有効期限で自己完結されます。取り消したトークンは、トークンを必要とする Amazon Cognito API呼び出しでは使用できません。ただし、取り消されたトークンは、トークンの署名と有効期限を検証するJWTライブラリを使用して検証された場合でも有効です。

トークンの取り消しが有効化されているユーザープールクライアント用の更新トークンは、取り消すことが可能です。トークンの取り消しは、新しいユーザープールクライアントの作成時にデフォルトで有効になります。

トークンの取り消しを有効にする

既存のユーザープールクライアントのトークンを取り消す前に、トークンの取り消しを有効にする必要があります。または を使用して AWS CLI 、既存のユーザープールクライアントのトークン失効を有効にできます AWS API。これを行うには、 aws cognito-idp describe-user-pool-client CLI コマンドまたは DescribeUserPoolClientAPIオペレーションを呼び出して、アプリケーションクライアントから現在の設定を取得します。次に、 aws cognito-idp update-user-pool-client CLI コマンドまたは UpdateUserPoolClientAPIオペレーションを呼び出します。アプリクライアントの現在の設定を含め、EnableTokenRevocation パラメータを true に設定します。

AWS Management Console、、 AWS CLIまたは を使用して新しいユーザープールクライアントを作成すると AWS API、トークンの失効がデフォルトで有効になります。

トークン失効を有効にすると、Amazon Cognito JSON Web Tokens に新しいクレームが追加されます。アクセストークンと ID トークンに origin_jtijti クレームが追加されます。これらのクレームにより、アプリケーションクライアントのアクセストークンと ID トークンのサイズが大きくなります。

トークンの失効を有効にしてアプリケーションクライアントを作成または変更するには、 CreateUserPoolClient または UpdateUserPoolClientAPIリクエストに次のパラメータを含めます。

"EnableTokenRevocation": true

トークンを取り消す

コマンドなど、RevokeTokenAPIリクエストを使用して更新トークンを取り消すことができますaws cognito-idp revoke-tokenCLI。エンドポイントの取り消し を使用してトークンを取り消すこともできます。このエンドポイントは、ユーザープールにドメインを追加した後で利用可能になります。取り消しエンドポイントは、Amazon Cognito がホストするドメイン、あるいは独自のカスタムドメインの両方で使用できます。

注記

更新トークンを取り消すリクエストには、そのトークンを取得するために使用したクライアント ID を含める必要があります。

以下は、サンプルRevokeTokenAPIリクエストの本文です。

{ "ClientId": "1example23456789", "ClientSecret": "abcdef123456789ghijklexample", "Token": "eyJjdHkiOiJKV1QiEXAMPLE" }

以下は、カスタムドメインを持つユーザープールの/oauth2/revokeエンドポイントへの cURL リクエストの例です。

curl --location 'auth.mydomain.com/oauth2/revoke' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Basic Base64Encode(client_id:client_secret)' \ --data-urlencode 'token=abcdef123456789ghijklexample' \ --data-urlencode 'client_id=1example23456789'

アプリケーションクライアントにクライアントシークレットがない限り、RevokeTokenオペレーションと/oauth2/revokeエンドポイントに追加の承認は必要ありません。