

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 受管登入登出端點： `/logout`
<a name="logout-endpoint"></a>

`/logout` 端點是重新導向端點。它會登出使用者，並重新導向至您應用程式用戶端的授權登出 URL 或`/login`端點。GET 請求中對`/logout`端點的可用參數是根據 Amazon Cognito 受管登入使用案例量身打造。

登出端點是前端 Web 應用程式，可與客戶進行互動式使用者工作階段。您的應用程式必須在使用者的瀏覽器中調用此和其他受管登入端點。

若要將使用者重新導向至受管登入以再次登入，請將 `redirect_uri` 參數新增至您的請求。使用 `redirect_uri` 參數的 `logout` 請求，必須同時包括後續請求 [登入端點](login-endpoint.md) 的參數，如 `client_id`、`response_type` 和 `scope`。

若要將使用者重新導向至您選擇的頁面，請將 **允許的登出 URL** 新增至您的應用程式用戶端。在使用者對 `logout` 端點的請求中，新增 `logout_uri` 和 `client_id` 參數。如果 `logout_uri` 的值是應用程式用戶端的 **允許的登出 URL** 之一，Amazon Cognito 會將使用者重新導向至該 URL。

透過 SAML 2.0 IdPs的單一登出 (SLO)，Amazon Cognito 會先將使用者重新導向至您在 IdP 組態中定義的 SLO 端點。在您的 IdP 將使用者重新導向回 之後`saml2/logout`，Amazon Cognito 會以另一個重新導向來回應 `redirect_uri`或`logout_uri`從您的請求。如需詳細資訊，請參閱[使用單一登出來登出 SAML 使用者](cognito-user-pools-saml-idp-sign-out.md)。

登出端點不會將使用者登出 OIDC 或社交身分提供者 (IdPs)。若要使用外部 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* 參數將您的使用者重新導向到另一個應用程式用戶端的登入頁面。將其他應用程式用戶端的登入頁面設定為您應用程式用戶端中的 **Allowed callback URL(允許的回呼 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`*  
（選用） 可新增至請求的隨機值。您提供的 nonce 值包含在 Amazon Cognito 發出的 ID 權杖中。為了防止重播攻擊，您的應用程式可以檢查 ID 權杖中的 `nonce` 宣告並將其與您產生的權杖進行比較。如需 `nonce` 宣告的詳細資訊，請參閱 *OpenID Connect standard* (OpenID Connect 標準) 中的 [ID token validation](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation) (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*  
當您的應用程式將*狀態*參數新增至請求時，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 會將您的使用者重新導向至 `/login` 端點，並附加您對 `/logout` 端點請求中的 *scope* 參數。  
如果您使用 *redirect\$1uri* 參數，則為可選。如果您未包含 *scope* 參數，則 Amazon Cognito 會將您的使用者重新導向至 `/login` 端點，並附加 *scope* 參數。當 Amazon Cognito 重新導向您的使用者並自動填入 `scope` 時，該參數會包含應用程式用戶端的所有已授權範圍。

### 請求範例
<a name="get-logout-request-sample"></a>

**範例 – 登出並將使用者重新導向至用戶端**

當請求包含 `logout_uri` 和 `client_id` 時，Amazon Cognito 會將使用者工作階段重新導向至 `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，而是您要傳遞至授權端點的post-sign-in 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
```