本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用第三方身分提供者登入使用者集區
您的應用程式使用者可以直接透過使用者集區登入,也可以透過第三方身分提供者 (IdP) 聯合。使用者集區可管理處理字符的開銷,包括透過 Facebook、Google、Amazon 及 Apple 社交登入傳回的字符,以及從 OpenID Connect (OIDC) 及 SAML IdP 傳回的字符。Amazon Cognito 使用內建的託管 Web UI,可以為所有 IdP 其已驗證身分的使用者提供權杖處理和管理。這樣,您的後端系統可以對一組使用者集區字符進行標準化。
聯合登入在 Amazon Cognito 使用者集區中的運作方式
Amazon Cognito 使用者集區提供透過第三方 (聯合身分) 登入。這項功能與透過 Amazon Cognito 身分集區 (聯合身分) 登入無關。

Amazon Cognito 是使用者目錄與 OAuth 2.0 身分提供者 (IdP)。當您將本機使用者登入至 Amazon Cognito 目錄時,您的使用者集區則為您應用程式的 IdP。本機使用者僅存在於您的使用者集區目錄中,不會透過外部 IdP 進行聯合。
當您將 Amazon Cognito 與社交、SAML 或 OpenID (OIDC) IdP 連線時,您的使用者集區會充當多個服務供應商與您應用程式之間的橋樑。對於您的 IdP 而言,Amazon Cognito 是服務供應商 (SP)。您的 IdP 會將 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 權杖與重新整理權杖。如需字符的詳細資訊,請參閱 了解使用者集區 JSON Web 權杖 JWTs)。
您必須設計一個與 Amazon Cognito 整合的應用程式,以對您的使用者進行身分驗證和授權,無論是聯合身分使用者或本機使用者。
作為使用 Amazon Cognito 服務提供者的應用程式責任
- 驗證和處理權杖中的資訊
-
在大多數情況下,Amazon Cognito 會將已身分驗證的使用者重新導向到附加授權碼的應用程式 URL。您的應用程式會針對存取權杖、ID 權杖及重新整理權杖交換代碼。然後,它必須檢查權杖的有效性,並根據權杖中的宣告向您的使用者提供資訊。
- 使用 Amazon Cognito API 請求回應驗證事件
-
您的應用程式必須與 Amazon Cognito 使用者集區 API 及驗證 API 端點整合。驗證 API 會您的使用者登入與登出,並管理權杖。使用者集區 API 具有各種操作可管理您的使用者集區、使用者,以及身分驗證環境的安全性。您的應用程式收到來自 Amazon Cognito 的回應時,必須知道接下來該怎麼做。
Amazon Cognito 使用者集區第三方登入相關須知
-
如果希望使用者透過聯合供應商登入,則必須選擇一個網域。這會設定受管登入的頁面。如需詳細資訊,請參閱使用您自己的網域進行受管登入。
-
您無法使用如 InitiateAuth 或 AdminInitiateAuth 等 API 操作登入聯合身分使用者。聯合身分使用者只能使用 登入端點 或 授權端點 登入。
-
授權端點 是重新導向端點。如果您在請求中提供
idp_identifier
或identity_provider
參數,它會無提示地重新導向至 IdP,繞過受管登入。否則,它會重新導向至受管登入 登入端點。 -
當受管登入將工作階段重新導向至聯合身分 IdP 時,Amazon Cognito 會在請求
Amazon/Cognito
中包含user-agent
標頭。 -
Amazon Cognito 會從固定的識別碼與 IdP 的名稱組合衍生出聯合身分使用者描述檔的
username
屬性。若要產生符合您自訂需求的使用者名稱,請建立preferred_username
屬性。如需詳細資訊,請參閱對應的須知事項。範例:
MyIDP_bob@example.com
-
Amazon Cognito 會將有關聯合身分使用者的身分資訊記錄到某個屬性及 ID 權杖中的宣告,稱為
identities
。此宣告包含您使用者的供應商,及來自該供應商的使用者唯一 ID。您無法直接變更使用者描述檔中的identities
屬性。如需如何連結聯合身分使用者的相關詳細資訊,請參閱 將聯合身分使用者連結至現有的使用者描述檔。 -
當您在 UpdateIdentityProvider API 請求中更新 IdP 時,您的變更最多可能需要一分鐘才會出現在受管登入中。
-
Amazon Cognito 在本身和您的 IdP 之間最多支援 20 個 HTTP 重新導向。
-
當您的使用者使用受管登入登入登入時,其瀏覽器會存放加密的登入工作階段 Cookie,該 Cookie 會記錄其登入的用戶端和提供者。如果他們嘗試使用相同的參數再次登入,受管登入會重複使用任何未過期的現有工作階段,而使用者會驗證而不再次提供登入資料。如果您的使用者使用不同的 IdP 再次登入,包括切換至本機使用者集區登入或從本機使用者集區登入,則必須提供憑證並產生新的登入工作階段。
您可以將任何使用者集區 IdP 指派給任何應用程式用戶端,而且使用者只能使用您指派給其應用程式用戶端的 IdP 登入。