使用單一登出來登出SAML使用者 - Amazon Cognito

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

使用單一登出來登出SAML使用者

Amazon Cognito 支援 SAML 2.0 單一登出 (SLO。 透過 SLO,您的應用程式可以在使用者從使用者集區登出時,從身分SAML提供者 (IdPs) 登出使用者。如此一來,當使用者想要再次登入您的應用程式時,他們必須使用其 SAML IdP 進行身分驗證。否則,他們可能已備妥 IdP 或使用者集區瀏覽器 Cookie,這些 Cookie 會傳遞至您的應用程式,而無需提供憑證。

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

Amazon Cognito SAML登出的身分驗證流程圖。使用者請求登出,Amazon Cognito 會使用SAML登出請求將他們重新導向至其提供者。

當您將具有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 Management Console
若要設定SAML登出
  1. 建立使用者集區 應用程式用戶端 和 SAML IdP 。

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

  3. 從使用者集區的登入體驗索引標籤中,在聯合身分提供者登入 下,選擇您的 IdP 並找到簽署憑證

  4. 選擇下載為 .crt

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

API/CLI

若要設定SAML登出

使用 CreateIdentityProviderUpdateIdentityProviderAPI請求的 IDPSignout 參數設定單一登出。以下是支援SAML單一登出ProviderDetails的 IdP 範例。

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