我想為使用 Amazon Cognito 使用者集區的應用程式設定 SAML 單一登出。我的應用程式也使用 SAML 身分提供者 (IdP) 進行驗證。
解決方法
先決條件:
在 SAML IdP 中啟用 SAML 登出
請完成下列步驟:
- Amazon Cognito 主控台。
- 在導覽窗格中,選擇 User pools (使用者集區),然後選取您的使用者集區。
- 選擇 Social and external providers (社交和外部提供者),然後選擇您的 SAML IdP。
- 在您的 SAML IdP 組態設定中,選取 Add sign-out flow (新增登出流程),以及 Sign SAML requests to this provider (向此提供者簽署 SAML 請求)。然後,儲存組態。
- 選擇 View signing certificate (檢視簽署憑證)。
- 選擇 Download as .crt (下載為 .crt 格式)。
- 選擇 Close (關閉)。
設定外部 IdP 以啟用登出
若要在您的 Cognito 應用程式中設定單一登出,請參考 IdP 的文件,以在 SAML 應用程式中啟用單一登出。
當您設定應用程式時,請完成以下步驟:
- 將 Cognito 使用者集區的 .crt 檔案上傳至 IdP 的 SAML 應用程式組態,作為簽署憑證。
- 在 IdP 的組態中啟用單一登出。
**注意:**您的 IdP 可能會將單一登出稱為 SLO。
- 對於 IdP 組態,請使用以下值:
在 single sign-out URL (單一登出 URL),輸入 https://YourDomain.auth.Region.amazoncognito.com/saml2/logout。
在 service provider (SP) issuer (服務提供者 (SP) 發行者),輸入 urn:amazon:cognito:sp:YourUserPoolID。
**注意:**將 YourDomain、Region 以及 YourUserPoolID 替換為您的值。您的 IdP 必須以 HTTP POST 請求方式傳送 SAML LogoutResponse。Cognito 隨後會將使用者重新導向至初始請求中的登出網址。
測試單一登出
向 Cognito /logout 端點 發出 GET 請求。確保在請求中包含 client_id 和 logout_uri 參數。
登出網址範例:
https://YourDomain.auth.Region.amazoncognito.com/logout?client_id=YourAppClientID&logout_uri=YourAllowedSignOutURL
**注意:**對於自訂應用程式,您必須從使用者瀏覽器移除本機儲存的權杖或工作階段資訊,例如 localStorage 和 sessionStorage。Cognito 登出網址只會清除使用管理式 UI 之應用程式的 Cognito Cookie。
相關資訊
透過單一登出來登出 SAML 使用者