

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

# 使用單一登出來登出 SAML 使用者
<a name="cognito-user-pools-saml-idp-sign-out"></a>

Amazon Cognito 支援 SAML 2.0 [單一登出 ](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.3.Single%20Logout%20Profile|outline)(SLO。 透過 SLO，您的應用程式可以在使用者從使用者集區登出時，從其 SAML 身分提供者 (IdPs) 登出使用者。如此一來，當使用者想要再次登入您的應用程式時，他們必須使用其 SAML IdP 進行身分驗證。否則，他們可能已備妥 IdP 或使用者集區瀏覽器 Cookie，這些 Cookie 會傳遞到您的應用程式，而不需要他們提供登入資料。

當您將 SAML IdP 設定為支援**登出流程**時，Amazon Cognito 會使用已簽署的 SAML 登出請求將使用者重新導向至 IdP。Amazon Cognito 會從 IdP 中繼資料中的 `SingleLogoutService` URL 判斷重新導向位置。Amazon Cognito 使用您的使用者集區簽署憑證來簽署登出請求。

![\[Amazon Cognito SAML 登出的身分驗證流程圖。使用者請求登出，Amazon Cognito 會使用 SAML 登出請求將其重新導向至其提供者。\]](http://docs.aws.amazon.com/zh_tw/cognito/latest/developerguide/images/scenario-authentication-saml-sign-out.png)


當您將具有 SAML 工作階段的使用者導向您的使用者集區`/logout`端點時，Amazon Cognito 會使用下列請求將 SAML 使用者重新導向至 IdP 中繼資料中指定的 SLO 端點。

```
https://[SingleLogoutService endpoint]?
SAMLRequest=[encoded SAML request]&
RelayState=[RelayState]&
SigAlg=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256&
Signature=[User pool RSA signature]
```

您的使用者接著`LogoutResponse`會從其 IdP 使用 返回您的`saml2/logout`端點。您的 IdP 必須在 `HTTP POST`請求`LogoutResponse`中傳送 。然後，Amazon Cognito 會從其初始登出請求將其重新導向至重新導向目的地。

您的 SAML 提供者可能會傳送`AuthnStatement`一個`LogoutResponse`以上的 。此類型的回應`AuthnStatement`中第一個 `sessionIndex`中的 必須符合最初驗證使用者的 SAML 回應`sessionIndex`中的 。如果 `sessionIndex` 位於任何其他 中`AuthnStatement`，Amazon Cognito 將無法辨識工作階段，也不會將您的使用者登出。

------
#### [ AWS 管理主控台 ]

**設定 SAML 登出**

1. 建立[使用者集區](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)、[應用程式用戶端](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html)和 SAML IdP。

1. 當您建立或編輯 SAML 身分提供者時，請在**身分提供者資訊**下，勾選標題為**新增登出流程**的方塊。

1. 從使用者集區的**社交和外部供應商**選單中，選擇您的 IdP 並找到**簽署憑證**。

1. 選擇**下載為 .crt**。

1. 將 SAML 提供者設定為支援 SAML 單一登出和請求簽署，並上傳使用者集區簽署憑證。您的 IdP 必須重新導向至使用者集區網域`/saml2/logout`中的 。

------
#### [ API/CLI ]

**設定 SAML 登出**

使用 [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) 或 [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) API 請求的 `IDPSignout` 參數設定單一登出。以下是支援 SAML 單一登出`ProviderDetails`的 IdP 範例。

```
"ProviderDetails": { 
      "MetadataURL" : "https://myidp.example.com/saml/metadata",
      "IDPSignout" : "true",,
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "true",
      "IDPInit" : "true"
}
```

------