我想要了解如何在 Amazon Cognito 中使用登出端點和 GlobalSignOut API。
簡短描述
Amazon Cognito 登出端點會從瀏覽器中清除使用者工作階段。GlobalSignOut API 則會使核發給特定使用者的所有存取和重新整理字符無效。
解決方案
使用登出端點將使用者登出
當您使用託管端點進行使用者身分驗證時,Amazon Cognito 會在您的瀏覽器中存放名稱為 "cognito" 的 Cookie。該 Cookie 會與使用您的使用者集區設定的 Amazon Cognito 網域關聯。該 Cookie 的有效期為 1 小時。當使用者在作用中工作階段期間嘗試再次登入時,Amazon Cognito 會詢問使用者是否要繼續其現有的工作階段。這可讓使用者在不提供憑證的情況下登入。如果使用者選擇 Sign in as example_username (以 example_username 登入) 按鈕,來使用現有的工作階段,則 Cookie 的有效性會重設為 1 小時。
當使用者使用其瀏覽器造訪登出端點時,Amazon Cognito 會清除該工作階段 Cookie。使用者必須提供憑證才能再次登入。
當使用者以第三方身分提供者 (IdP) 登入時,還要執行一個額外的步驟。如果使用者使用其中一個第三方 IdP 登入,則造訪登出端點會清除瀏覽器中的 "cognito" Cookie。但是,IdP 仍可擁有作用中工作階段。清除使用者的 IdP 工作階段時,請考慮下列資訊:
- Amazon Cognito 支援具有 HTTP POST 繫結的安全性聲明標記語言 2.0 版 (SAML 2.0) IdP 的單一登出 (SLO) 功能。如果您的提供者在其 SLO 端點上接受 HTTP POST 繫結,請考慮為 SAML IdP 實作 SLO。如果使用者在開啟 SLO 的情況下造訪登出端點,Amazon Cognito 會將已簽署的登出請求傳送至 SAML IdP。然後,SAML IdP 會清除 IdP 工作階段。
- 針對社交和 OpenID Connect (OIDC) IdP,必須建立自訂工作流程,以便從瀏覽器清除 IdP 工作階段。
使用 GlobalSignOut API 登出使用者
當您使用 GlobalSignOut API 時,Amazon Cognito 會撤銷核發給使用者的所有存取權和重新整理字符。請注意,只會告知 Amazon Cognito 撤銷字符。您的應用程式可能會繼續接受字符,直至字符到期。
您的應用程式可以同時使用 GlobalSignOut 和 AdminUserGlobalSignOut API,在全域登出使用者。當您的應用程式使用 REST API 進行 Amazon Cognito 使用者身分驗證時,必須使用這些 API 來登出使用者。
當應用程式嘗試使用已撤銷的字符時,Amazon Cognito 會發出錯誤訊息,指示您已撤銷重新整理字符。使用者必須再次登入,才能取得一組新的 JSON Web 字符 (JWT)。
您可以在使用者集區應用程式用戶端中,設定存取權和 ID 字符的到期時間。您可以將到期時間變更為 5 分鐘到 24 小時之間的值。