登出端點 - Amazon Cognito

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

登出端點

/logout 端點是重新導向端點。它註銷用戶並重定向到您的應用程序客戶端的授權註銷 URL 或/login端點。GET 請求中對 /logout 端點的可用參數皆是針對 Amazon Cognito 託管 UI 使用案例量身打造。

若要將使用者重新導向至託管 UI 以再次登入,請在請求中新增 redirect_uri 參數。使用 redirect_uri 參數的 logout 請求,必須同時包括後續請求 登入端點 的參數,如 client_idresponse_typescope

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

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

使用 SAML 2.0 的單一登出 (SLO) IdPs,Amazon Cognito 會先將您的使用者重新導向至您在 IdP 組態中定義的 SLO 端點。在您的 IdP 將使用者重新導向至之後saml2/logout,Amazon Cognito 會再logout_uri從您的請求重新導向至redirect_uri或進行回應。如需詳細資訊,請參閱 SAML 登出流程

登出端點不會將使用者登出 OIDC 或社交身分提供者 ()。IdPs若要使用外部 IdP 將使用者從其工作階段登出,請將他們導向至該提供者的登出頁面。

GET /logout

/logout 端點僅支援 HTTPS GET。使用者集區用戶端通常會透過系統瀏覽器提出這項請求。瀏覽器通常是 Android 中的 Custom Chrome Tab 或 iOS 中的 Safari View Control。

請求參數

client_id

應用程式的應用程式用戶端 ID。若要取得應用程式用戶端 ID,您必須在使用者集區中註冊應用程式。如需詳細資訊,請參閱 使用者集區應用程式用戶端

必要。

logout_uri

透過 logout_uri 參數將您的使用者重新導向至自訂登出頁面。將其值設定為應用程式用戶端 sign-out URL (登出 URL),這是您希望使用者登出後將其重新導向至的位置。僅將 logout_uri 搭配 client_id 參數使用。如需詳細資訊,請參閱 使用者集區應用程式用戶端

您也可以使用 logout_uri 參數將您的使用者重新導向到另一個應用程式用戶端的登入頁面。將其他應用程式用戶端的登入頁面設定為您應用程式用戶端中的 Allowed callback URL(允許的回呼 URL)。在您對 /logout 端點的請求中,將 logout_uri 參數值新增至 URL 編碼的登入頁面。

Amazon Cognito 要求在您對 /logout 端點的請求中需有 logout_uriredirect_uri 參數。logout_uri 參數會將您的使用者重新導向至另一個網站。如果您向 /logout 端點發出的請求中包含 logout_uriredirect_uri 參數,Amazon Cognito 只會利用 logout_uri 參數,並覆蓋 redirect_uri 參數。

redirect_uri

使用 redirect_uri 參數將使用者重新導向至登入頁面,以進行身分驗證。將其值設定為您想要使用者再次登入後重新導向至的應用程式用戶端 Allowed callback URL (允許的回呼 URL)。新增您想要傳遞給 /login 端點的 client_idscopestateresponse_type 參數。

Amazon Cognito 要求在您對 /logout 端點的請求中需有 logout_uriredirect_uri 參數。要將用戶重定向到/login端點以重新進行身份驗證並將令牌傳遞給您的應用程序,請添加 redirec t_uri 參數。如果您向/logout端點發出的請求中包含 logout_uri 和重定向參數,Amazon Cognito 會覆寫定向參數,並專門處理 logout_uri 參數。

response_type

您希望使用者在登入後從 Amazon Cognito 收到的 OAuth 2.0 回應。codetokenresponse_type 參數的有效值。

如果您使用 redirect_uri 參數,則為必要。

state

當您的應用程式將狀態參數新增至請求時,當/oauth2/logout端點重新導向您的使用者時,Amazon Cognito 會將其值傳回給您的應用程式。

將此值新增至您的請求,以防禦 CSRF 攻擊。

您無法將 state 參數的值設定為 URL 編碼的 JSON 字串。要在state參數中傳遞與此格式匹配的字符串,請將字符串編碼為 base64,然後在應用程序中對其進行解碼。

強烈建議您使用 redirect_uri 參數。

scope

您將使用者登出後,想要使用 redirect_uri 參數向 Amazon Cognito 請求的 OAuth 2.0 範圍。Amazon Cognito 會將您的使用者重新導向至 /login 端點,並附加您對 /logout 端點請求中的 scope 參數。

如果您使用 redirect_uri 參數,則為可選。如果您未包含 scope 參數,則 Amazon Cognito 會將您的使用者重新導向至 /login 端點,並附加 scope 參數。當 Amazon Cognito 重新導向您的使用者並自動填入 scope 時,該參數會包含應用程式用戶端的所有已授權範圍。

請求示例

示例-註銷並將用戶重定向到客戶端

除了logout_uri和之外client_id,此端點的所有可能查詢參數都會傳遞至授權端點. 當請求包含 logout_uriclient_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 會將使用者重新導向至託管的 UI 登入。登出端點會將原始要求中的參數附加至重新導向之目的地。在給登出端點的要求中,redirect_uri 參數並非登出 URL,而是您想要傳遞給授權端點的登入 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