透過第三方新增使用者集區登入 - Amazon Cognito

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

透過第三方新增使用者集區登入

您的應用程式使用者可以直接透過使用者集區登入,或透過第三方身分提供者 (IdP) 以聯合身分登入。用戶池管理處理通過 Facebook,谷歌,Amazon 和蘋果以及 OpenID Connect(OIDC)和 SAML 從社交登錄返回的令牌的開銷。 IdPs透過內建的託管網頁使用者介面,Amazon Cognito 可為所有 IdPs已驗證的使用者提供權杖處理和管理。這樣,您的後端系統可以對一組使用者集區字符進行標準化。

聯合登入在 Amazon Cognito 使用者集區中的運作方式

Amazon Cognito 使用者集區提供透過第三方 (聯合身分) 登入。這項功能與透過 Amazon Cognito 身分集區 (聯合身分) 登入無關。


                使用社交登入的身分驗證概觀

Amazon Cognito 是使用者目錄與 OAuth 2.0 身分提供者 (IdP)。當您將本機使用者登入至 Amazon Cognito 目錄時,您的使用者集區則為您應用程式的 IdP。本機使用者僅存在於您的使用者集區目錄中,不會透過外部 IdP 進行聯合。

當您將 Amazon Cognito 連線到社交、SAML 或 OpenID Connect (OIDC) IdPs 時,您的使用者集區會充當多個服務供應商與您的應用程式之間的橋樑。對於您的 IdP 而言,Amazon Cognito 是服務供應商 (SP)。您 IdPs 將 OIDC ID 權杖或 SAML 宣告傳遞給 Amazon Cognito。Amazon Cognito 會讀取權杖或聲明中與使用者相關的宣告,並將這些宣告映射至您使用者集區目錄的新使用者描述檔。

然後,Amazon Cognito 會在自己的目錄中為您的聯合身分使用者建立一個使用者描述檔。Amazon Cognito 根據您的 IdP 的宣告 (如果是 OIDC 和社交身分提供者,則根據 IdP 操作的公用 userinfo 端點),將屬性新增至您的使用者。當映射的 IdP 屬性變更時,使用者的屬性會在您的使用者集區中改變。您也可以新增更多與 IdP 屬性無關的屬性。

Amazon Cognito 為您的聯合身分使用者建立設定檔後,它會變更自己的功能,並對您的應用程式 (現在是 SP) 將自己呈現為 IdP。Amazon Cognito 是 OIDC 和 OAuth 2.0 IdP 的組合。它會產生存取權杖、ID 權杖與重新整理權杖。如需字符的詳細資訊,請參閱 將權杖用於使用者集區

您必須設計一個與 Amazon Cognito 整合的應用程式,以對您的使用者進行身分驗證和授權,無論是聯合身分使用者或本機使用者。

作為使用 Amazon Cognito 服務提供者的應用程式責任

驗證和處理權杖中的資訊

在大多數情況下,Amazon Cognito 會將已身分驗證的使用者重新導向到附加授權碼的應用程式 URL。您的應用程式會針對存取權杖、ID 權杖及重新整理權杖交換代碼。然後,它必須檢查權杖的有效性,並根據權杖中的宣告向您的使用者提供資訊。

使用 Amazon Cognito API 請求回應驗證事件

您的應用程式必須與 Amazon Cognito 使用者集區 API驗證 API 端點整合。驗證 API 會您的使用者登入與登出,並管理權杖。使用者集區 API 具有各種操作可管理您的使用者集區、使用者,以及身分驗證環境的安全性。您的應用程式收到來自 Amazon Cognito 的回應時,必須知道接下來該怎麼做。

Amazon Cognito 使用者集區第三方登入相關須知

  • 如果希望使用者透過聯合供應商登入,則必須選擇一個網域。這會設定 Amazon Cognito 託管的 UI 和託管的 UI 和 OIDC 端點。如需詳細資訊,請參閱 將自有網域用於託管 UI

  • 您無法使用 InitiateAuthAdminInitiateAuth之類的 API 操作登錄聯合身份使用者。聯合身分使用者只能使用 登入端點授權端點 登入。

  • 授權端點重新導向端點。如果您在請求中提供 idp_identifieridentity_provider 參數,它會以無訊息方式重新導向至您的 IdP,而繞過託管 UI。否則,它將重新導向到託管 UI 登入端點。如需範例,請參閱 範例案例:在企業儀表板中將 Amazon Cognito 應用程式加入書籤

  • 當託管的 UI 將工作階段重新導向至聯合 IdP 時,Amazon Cognito 會在請求中包含 user-agent 標頭 Amazon/Cognito

  • Amazon Cognito 會從固定的識別碼與 IdP 的名稱組合衍生出聯合身分使用者描述檔的 username 屬性。若要產生符合您自訂需求的使用者名稱,請建立 preferred_username 屬性。如需詳細資訊,請參閱 對應的須知事項

    範例:MyIDP_bob@example.com

  • Amazon Cognito 會將有關聯合身分使用者的身分資訊記錄到某個屬性及 ID 權杖中的宣告,稱為 identities。此宣告包含您使用者的供應商,及來自該供應商的使用者唯一 ID。您無法直接變更使用者描述檔中的 identities 屬性。如需如何連結聯合身分使用者的相關詳細資訊,請參閱 將聯合身分使用者連結至現有的使用者描述檔

  • 當您在 UpdateIdentityProvider API 請求中更新 IdP,您的變更最多可能需要一分鐘的時間才會顯示在託管 UI 中。

  • Amazon Cognito 在本身和您的 IdP 之間最多支援 20 個 HTTP 重新導向。

  • 當您的使用者使用託管 UI 登入時,其瀏覽器會儲存一個加密的登入工作階段 Cookie,該 Cookie 會記錄他們登入的用戶端和提供者。如果他們嘗試使用相同的參數再次登入,託管 UI 會重複使用任何未過期的現有工作階段,並且使用者無需再次提供憑證即可進行驗證。如果您的使用者使用不同的 IdP 再次登入,包括切換至本機使用者集區登入或從本機使用者集區登入,則必須提供憑證並產生新的登入工作階段。

    您可以將任何使用者集區指派給任 IdPs 何應用程式用戶端,而使用者只能使用您指派給其應用程式用戶端的 IdP 登入。