トークン取り消しによるユーザーセッションの終了
ユーザープール API または認可サーバー エンドポイントの取り消し を使用して、ユーザーの更新トークンを取り消すことができます。更新トークンを取り消すと、その更新トークンによってそれまでに発行されたすべてのアクセストークンが無効になります。ユーザーに発行されたその他の更新トークンは影響を受けません。
注記
JWT トークンは、トークンが作成されたときに割り当てられた署名と有効期限を持つ自己完結型トークンです。取り消されたトークンは、トークンを必要とする Amazon Cognito API コールでは使用できません。ただし、JWT ライブラリを使用してトークンの署名と有効期限が検証された場合は、引き続き使用が可能です。
トークンの取り消しが有効化されているユーザープールクライアント用の更新トークンは、取り消すことが可能です。トークンの取り消しは、新しいユーザープールクライアントの作成時にデフォルトで有効になります。
トークンの取り消しを有効にする
既存のユーザープールクライアントのトークンを取り消す前に、トークンの取り消しを有効にする必要があります。既存のユーザープールクライアントでのトークンの取り消しは、AWS CLI または AWS API を使用して有効にできます。これを行うには、aws cognito-idp
describe-user-pool-client
CLI コマンドまたは DescribeUserPoolClient
API 操作を呼び出して、アプリクライアントから現在の設定を取得します。次に、または UpdateUserPoolClient
CLI コマンドaws
cognito-idp update-user-pool-client
API オペレーションを呼び出します。アプリクライアントの現在の設定を含め、EnableTokenRevocation
パラメータを true
に設定します。
AWS Management Console、AWS CLI、または AWS API を使用して新しいユーザープールクライアントを作成するときは、トークンの取り消しがデフォルトで有効になります。
トークンの取り消しを有効にした後は、Amazon Cognito JSON ウェブトークンに新しいクレームが追加され、アクセストークンと ID トークンに origin_jti
と jti
クレームが追加されます。これらのクレームにより、アプリケーションクライアントのアクセストークンと ID トークンのサイズが大きくなります。
トークンの取り消しを有効にしたアプリクライアントを作成または変更するには、次のパラメータを CreateUserPoolClient または UpdateUserPoolClient API リクエストに含めます。
"EnableTokenRevocation":
true
トークンを取り消す
更新トークンは、RevokeToken API リクエストを aws cognito-idp
revoke-token
CLI コマンドなどで使用して取り消すことができます。エンドポイントの取り消し を使用してトークンを取り消すこともできます。このエンドポイントは、ユーザープールにドメインを追加した後で利用可能になります。取り消しエンドポイントは、Amazon Cognito がホストするドメイン、あるいは独自のカスタムドメインの両方で使用できます。
注記
更新トークンを取り消すリクエストには、そのトークンを取得するために使用したクライアント ID を含める必要があります。
次は、RevokeToken
API リクエストの例の本文です。
{ "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
エンドポイントには、アプリケーションクライアントにクライアントシークレットがある場合を除き、追加の認可は必要ありません。