

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

# マネージドログインのサインアウトエンドポイント: `/logout`
<a name="logout-endpoint"></a>

`/logout` エンドポイントは、リダイレクションエンドポイントです。ユーザーをサインアウトし、アプリケーションクライアントの認可サインアウト URL または `/login` エンドポイントにリダイレクトする必要があります。`/logout` エンドポイントへの GET リクエストで使用可能なパラメータは、Amazon Cognito マネージドログインのユースケースに合わせて調整されます。

ログアウトエンドポイントは、顧客とのインタラクティブなユーザーセッション用のフロントエンドウェブアプリケーションです。アプリケーションは、このエンドポイントと他のマネージドログインのエンドポイントを、ユーザーのブラウザで呼び出す必要があります。

ユーザーをマネージドログインにリダイレクトして再度サインインさせるには、リクエストに `redirect_uri` パラメータを追加します。`redirect_uri` パラメータを含む `logout` リクエストには、`client_id`、`response_type`、`scope` などの [ログインエンドポイント](login-endpoint.md) への後続のリクエスト用のパラメータも含める必要があります。

選択したページにユーザーをリダイレクトするには、アプリクライアントに**許可されているサインアウト URL** を追加します。`logout` エンドポイントへのユーザーのリクエストに、`logout_uri` および `client_id` パラメーターを追加します。`logout_uri` の値が、**許可されているサインアウト URL** の 1 つである場合、Amazon Cognito はユーザーをその URL にリダイレクトします。

SAML 2.0 IdP のシングルログアウト (SLO) を使用すると、Amazon Cognito は、まずユーザーを IdP 設定で定義した SLO エンドポイントにリダイレクトします。IdP がユーザーを `saml2/logout` にリダイレクトすると、Amazon Cognito はリクエストから `redirect_uri` または `logout_uri` へのリダイレクトをもう 1 回返します。詳細については、「[シングルサインアウトで SAML ユーザーをサインアウトする](cognito-user-pools-saml-idp-sign-out.md)」を参照してください。

ログアウトエンドポイントは、OIDC またはソーシャル ID プロバイダー (IdP) からユーザーにサインアウトしません。外部 IdP を使用してセッションからユーザーをサインアウトするには、そのプロバイダーのサインアウトページにユーザーを誘導します。

## GET /logout
<a name="get-logout"></a>

`/logout` エンドポイントは `HTTPS GET` のみをサポートします。ユーザープールクライアントは通常、このリクエストをシステムブラウザ経由で行います。ブラウザは通常、Android では Custom Chrome Tab、iOS では Safari View Control です。

### リクエストパラメータ
<a name="get-logout-request-parameters"></a>

*client\$1id*  
アプリのアプリクライアント ID。アプリクライアント ID を取得するには、ユーザープールにアプリを登録する必要があります。詳細については、「[アプリケーションクライアントによるアプリケーション固有の設定](user-pool-settings-client-apps.md)」を参照してください。  
必須。

*logout\$1uri*  
*logout\$1uri* パラメータを使用して、ユーザーをカスタムサインアウトページにリダイレクトします。この値を、ユーザーがサインアウトした後にユーザーをリダイレクトするアプリクライアントの**[sign-out URL]** (サインアウト URL) に設定します。*logout\$1uri* は、*client\$1id* パラメータでのみ使用してください。詳細については、「[アプリケーションクライアントによるアプリケーション固有の設定](user-pool-settings-client-apps.md)」を参照してください。  
*logout\$1uri* パラメータを使用して、ユーザーを別のアプリクライアントのサインインページにリダイレクトすることもできます。他のアプリクライアントのサインインページを、アプリクライアントで**許可されたコールバック URL** として設定します。`/logout` エンドポイントへのリクエストで、*logout\$1uri* パラメータの値を URL エンコードされたサインインページに設定します。  
Amazon Cognito では、`/logout` エンドポイントへのリクエストに *logout\$1uri* または *redirect\$1uri* パラメータのいずれかが必要です。*logout\$1uri* パラメータは、ユーザーを別のウェブサイトにリダイレクトします。`/logout` エンドポイントへのリクエストに *logout\$1uri* パラメータと *redirect\$1uri* パラメータの両方が含まれている場合、Amazon Cognito は *logout\$1uri* パラメータのみを使用し、*redirect\$1uri* パラメータをオーバーライドします。

*`nonce`*  
(オプション) リクエストに追加できるランダムな値。指定したノンス値は、Amazon Cognito が発行する ID トークンに含まれます。リプレイ攻撃を防ぐために、アプリは ID トークンの `nonce` クレームを検査し、生成したものと比較することができます。`nonce` クレームの詳細については、「[OpenID Connect standard](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation)」(OpenID Connect 標準) の「*ID token validation*」(ID トークンの検証) を参照してください。

**redirect\$1uri**  
*redirect\$1uri* パラメータを使用して、ユーザーをサインインページにリダイレクトし、認証を行います。その値を、サインインした後にユーザーをリダイレクトするアプリクライアントの**[Allowed callback URL]** (許可されたコールバック URL) に設定します。`/login` エンドポイントに渡す *client\$1id*、*scope*、*state*、*response\$1type* パラメータを追加します。  
Amazon Cognito では、`/logout` エンドポイントへのリクエストに *logout\$1uri* または *redirect\$1uri* パラメータのいずれかが必要です。ユーザーを `/login` エンドポイントにリダイレクトして再認証し、トークンをアプリケーションに渡すには、*redirect\$1uri* パラメータを追加します。`/logout` エンドポイントへのリクエストに *logout\$1uri* パラメータと *redirect\$1uri* パラメータの両方が含まれている場合、Amazon Cognito は *redirect\$1uri* パラメータをオーバーライドし、*logout\$1uri* パラメータのみを処理します。

*response\$1type*  
ユーザーがサインインした後に Amazon Cognito から受信する OAuth 2.0 レスポンス。`code` と `token` は、*response\$1type* パラメータの有効な値です。  
*redirect\$1uri* パラメータを使用する場合は必須です。

*state*  
アプリケーションがリクエストに *state* パラメータを追加すると、Amazon Cognito は、`/oauth2/logout` エンドポイントはユーザーをリダイレクトする際に、その値をアプリケーションに返します。  
この値をリクエストに追加して [CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) 攻撃から保護します。  
`state` パラメータの値を、URL でエンコードされた JSON 文字列に設定することはできません。この形式に一致する文字列を `state` パラメータで渡すには、文字列を base64 にエンコードし、アプリケーション内でデコードします。  
*redirect\$1uri* パラメータを使用する場合は強くお勧めします。

*scope*  
*redirect\$1uri* パラメータを使用してサインアウトした後に Amazon Cognito にリクエストする OAuth 2.0 スコープ。Amazon Cognito は、`/logout` エンドポイントへのリクエストの *scope* パラメータを使用してユーザーを `/login` エンドポイントにリダイレクトします。  
*redirect\$1uri* パラメータを使用する場合は任意。*scope* パラメータを含めない場合、Amazon Cognito は *scope* パラメータを使用してユーザーを `/login` エンドポイントにリダイレクトします。Amazon Cognito がユーザーをリダイレクトし、`scope` に自動的にデータを入力する場合、パラメータには、アプリクライアントに対して許可されているすべてのスコープが含まれます。

### リクエストの例
<a name="get-logout-request-sample"></a>

**例: ログアウトしてユーザーをクライアントにリダイレクトする**

Amazon Cognito は、リクエストに `logout_uri` と `client_id` が含まれている場合、他のすべてのリクエストパラメータを無視して、値が `logout_uri` である URL にユーザーセッションをリダイレクトします。この URL は、アプリケーションクライアントの承認済みサインアウト URL である必要があります。

次は、サインアウトと `https://www.example.com/welcome` へのリダイレクトのリクエスト例です。

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/logout?
  client_id=1example23456789&
  logout_uri=https%3A%2F%2Fwww.example.com%2Fwelcome
```

**例 – ログアウトして別のユーザーとしてサインインするよう指示する**

リクエストに `logout_uri` が省略されているが、認可エンドポイントへの正しい形式のリクエストを構成するパラメータが指定されている場合、Amazon Cognito はユーザーをマネージドサインインにリダイレクトします。ログアウトエンドポイントは、元のリクエストのパラメータをリダイレクト先に追加します。

ログアウトリクエストに追加する他のパラメータは、[リクエストパラメータ](#get-logout-request-parameters)のリストに含める必要があります。例えば、ログアウトエンドポイントは、`identity_provider` パラメータまたは `idp_identifier` パラメータを使用した自動 IdP リダイレクトをサポートしていません。ログアウトエンドポイントへのリクエストの `redirect_uri` パラメータは、サインアウト URL ではなく、認可エンドポイントにパススルーするサインイン後の URL です。

次に示すのは、ユーザーをサインアウトしてサインインページにリダイレクトし、サインイン後に認可コードを `https://www.example.com` に提供するリクエストの例です。

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/logout?
  response_type=code&
  client_id=1example23456789&
  redirect_uri=https%3A%2F%2Fwww.example.com&
  state=example-state-value&
  nonce=example-nonce-value&
  scope=openid+profile+aws.cognito.signin.user.admin
```