

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

# トークン取り消しによるユーザーセッションの終了
<a name="token-revocation"></a>

更新トークンとエンドユーザーセッションは、以下の方法で取り消すことができます。更新トークンを取り消すと、その更新トークンによってそれまでに発行されたすべてのアクセストークンが無効になります。ユーザーに発行されたその他の更新トークンは影響を受けません。

**RevokeToken オペレーション**  
[RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html) は、特定の更新トークンのすべてのアクセストークン (インタラクティブサインインの初期アクセストークンを含む) を取り消します。このオペレーションは、ユーザーの他の更新トークン、または他の更新トークンの子である ID トークンやアクセストークンには影響しません。

**取り消しエンドポイント**  
[取り消しエンドポイント](revocation-endpoint.md)は、指定した更新トークンと、この更新トークンで生成したすべての ID トークンとアクセストークンを取り消します。このエンドポイントは、インタラクティブサインインの初期アクセストークンも取り消します。このエンドポイントへのリクエストは、ユーザーの他の更新トークン、または他の更新トークンの子である ID トークンおよびアクセストークンには影響しません。

**GlobalSignOut オペレーション**  
[GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) は、ユーザーがアクセストークンを使用して承認するセルフサービスオペレーションです。このオペレーションは、リクエスト元のユーザーの更新トークン、ID トークン、アクセストークンをすべて取り消します。

**AdminUserGlobalSignOut オペレーション**  
[AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html) は、管理者が IAM 認証情報を使用して承認するサーバー側のオペレーションです。このオペレーションは、ターゲットユーザーの更新トークン、ID トークン、アクセストークンをすべて取り消します。

**トークンの取り消しについて知っておくべきこと**
+ 更新トークンを取り消すリクエストには、そのトークンを取得するために使用したクライアント ID を含める必要があります。
+ ユーザープールの JWT は、自己完結型であり、トークンの作成時に割り当てた署名と有効期限があります。取り消されたトークンは、トークンを必要とする Amazon Cognito API コールでは使用できません。ただし、JWT ライブラリを使用してトークンの署名と有効期限が検証された場合は、引き続き使用が可能です。
+ トークンの取り消しは、新しいユーザープールクライアントの作成時にデフォルトで有効になります。
+ 更新トークンは、トークンの取り消しが有効になっているアプリケーションクライアントでのみ取り消すことができます。
+ トークンの取り消しを有効にした後は、Amazon Cognito JSON ウェブトークンに新しいクレームが追加され、アクセストークンと ID トークンに `origin_jti` と `jti` クレームが追加されます。これらのクレームにより、アプリケーションクライアントのアクセストークンと ID トークンのサイズが大きくなります。
+ 以前にトークンの取り消しが有効になっていたアプリケーションクライアントでトークンの取り消しを無効にすると、取り消したトークンは再び有効になりません。
+ [ユーザーアカウントを無効にする](how-to-manage-user-accounts.md#manage-user-accounts-enable-disable)と (更新トークンとアクセストークンが取り消され)、ユーザーアカウントを再度有効にしても、取り消したトークンは有効になりません。
+  AWS マネジメントコンソール、、 AWS CLIまたは API を使用して新しいユーザープールクライアントを作成すると AWS 、トークンの失効がデフォルトで有効になります。

## トークンの取り消しを有効にする
<a name="enable-token-revocation"></a>

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

Amazon Cognito API または AWS SDK でトークン失効を有効にしたアプリケーションクライアントを作成または変更するには、[CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) または [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) API リクエストに次のパラメータを含めます。

```
"EnableTokenRevocation": true
```

Amazon Cognito コンソールでトークンの取り消しを設定するには、ユーザープールの **[アプリケーションクライアント]** メニューでアプリケーションクライアントを選択します。**[アプリケーションクライアントに関する情報]** で **[編集]** ボタンを選択し、**[高度な認証設定]** でトークンの取り消しを有効または無効にします。

## トークンを取り消す
<a name="revoke-tokens-api"></a>

更新トークンは、[RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html) API リクエストを `[aws cognito-idp revoke-token](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/revoke-token.html)` CLI コマンドなどで使用して取り消すことができます。[エンドポイントの取り消し](revocation-endpoint.md) を使用してトークンを取り消すこともできます。このエンドポイントは、ユーザープールにドメインを追加した後で利用可能になります。取り消しエンドポイントは、Amazon Cognito がホストするドメイン、あるいは独自のカスタムドメインの両方で使用できます。

次は、`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` エンドポイントには、アプリケーションクライアントにクライアントシークレットがある場合を除き、追加の認可は必要ありません。