將聯合身分使用者連結至現有的使用者描述檔 - Amazon Cognito

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

將聯合身分使用者連結至現有的使用者描述檔

通常,同一個用戶具有包含多個身份提供者(IdPs)的配置文件,該配置文件已連接到您的用戶池。Amazon Cognito 可以將使用者每一次的出現與目錄中的同一個使用者描述檔連結。如此一來,一個擁有多個 IdP 使用者的人在您的應用程式可以得到一致的體驗。AdminLinkProviderForUser告知 Amazon Cognito 將您聯合身分目錄中的使用者唯一 ID 識別為使用者集區中的使用者。當您具有零個或多個與使用者描述檔相關聯的聯合身分時,您使用者集區中的使用者會算作一個每月作用中使用者 (MAU) 以用於計費

當聯合身分使用者首次登入您的使用者集區時,Amazon Cognito 會尋找您已連結至其身分的本機設定檔。如果沒有連結的設定檔存在,您的使用者集區會建立新的設定檔。您可以建立本機設定檔,並在首次登入之前隨時透過 AdminLinkProviderForUser API 請求或 註冊前 Lambda 觸發程序 將其連結到您的聯合身分使用者。在使用者登入且 Amazon Cognito 偵測到連結的本機設定檔後,您的使用者集區會讀取使用者的宣告,並將其與 IdP 的對應規則進行比較。然後,您的使用者集區會使用從其登入對應的陳述式更新連結的本機設定檔。通過這種方式,您可以使用訪問聲明配置本地配置文件,並將其身份聲明保留給您 up-to-date 的提供商。Amazon Cognito 將您的聯合身分使用者與連結的設定檔配對之後,他們一律會登入該設定檔。然後,您可以將更多使用者的提供者身分連結到同一個設定檔,以在您的應用程式中為一個客戶提供一致的體驗。若要連結先前已登入的聯合身分使用者,您必須先刪除其現有的設定檔。您可以透過以下格式來識別現有設定檔:[Provider name]_identifier。例如 LoginWithAmazon_amzn1.account.AFAEXAMPLE。您建立並連結至第三方使用者身分識別的使用者具有建立使用者名稱的使用者名稱,以及包含其連結身分詳細資料的identities屬性。

重要

由於AdminLinkProviderForUser允許具有外部同盟身分的使用者以使用者集區中的現有使用者身分登入,因此只能與應用程式擁有者信任的外部 IdPs 和提供者屬性搭配使用,這一點很重要。

例如,如果您是一個受管服務供應商 (MSP),與多個客戶共用一個應用程式。每個客户都透過 Active Directory Federation Services (ADFS) 登入到您的應用程式。您的 IT 管理員 Carlos 在您的每個客户網域中都有一個帳户。您希望系統在 Carlos 每次登入時將他辨識為應用程式管理員,無論 IdP 為何。

您的 ADFS 在 IdPs 向 Amazon Cognito 聲明的 Carlos SAML email 聲明msp_carlos@example.com中顯示了 Carlos 的電子郵件地址。您在使用者集區中建立使用者名稱為 Carlos 的使用者。以下 AWS Command Line Interface (AWS CLI)命令將卡洛斯的身份從 IdPs ADFS1,ADFS2 和 ADFS3 鏈接起來。

注意

您可以根據特定的屬性宣告連結使用者。此技能對於 OIDC 和 SAML 來說是獨一無二的。 IdPs對於其他供應商類型,您必須根據固定來源屬性進行連結。如需詳細資訊,請參閱AdminLinkProviderForUser。當您將社交 IdP 連結到使用者設定檔時,必須將 ProviderAttributeName 設定為 Cognito_SubjectProviderAttributeValue 必須是使用者在您 IdP 的唯一識別碼。

aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS1,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS2,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS3,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com

您使用者集區中的使用者描述檔 Carlos 現在具有下列 identities 屬性。

[{ "userId": "msp_carlos@example.com", "providerName": "ADFS1", "providerType": "SAML", "issuer": "http://auth.example.com", "primary": false, "dateCreated": 111111111111111 }, { "userId": "msp_carlos@example.com", "providerName": "ADFS2", "providerType": "SAML", "issuer": "http://auth2.example.com", "primary": false, "dateCreated": 111111111111111 }, { "userId": "msp_carlos@example.com", "providerName": "ADFS3", "providerType": "SAML", "issuer": "http://auth3.example.com", "primary": false, "dateCreated": 111111111111111 }]
有關連結聯合身分使用者的須知事項
  • 每個使用者描述檔最多可以連結五個聯合身分使用者。

  • 您可以將聯合身分使用者連結到現有的聯合身分使用者描述檔,或連結至本機使用者。

  • 您無法將提供者連結至中的使用者設定檔 AWS Management Console。

  • 您使用者的 ID 權杖在 identities 宣告中包含其所有相關聯的供應商。

  • 您可以在 API 請求中為自動建立的聯合使用者設定檔設定密碼。AdminSetUserPassword該使用者的狀態會從 EXTERNAL_PROVIDER 變更為 CONFIRMED。處於此狀態的使用者可以登入為聯合身分使用者,並像連結的本機使用者一樣在 API 中啟動身份驗證流程。他們還可以在令牌身份驗證的 API 請求(如和)中修改其密碼和屬性。ChangePasswordUpdateUserAttributes做為最佳安全實務並為了讓使用者與外部 IdP 保持同步,請勿在聯合身分使用者設定檔上設定密碼。請改為使用 AdminLinkProviderForUser 將使用者連結至本機描述檔。

  • 當使用者透過其 IdP 登入時,Amazon Cognito 會將使用者屬性填入連結的本機使用者設定檔。Amazon Cognito 會處理 OIDC IdP 的 ID 權杖中的身分宣告,並同時檢查 OAuth 2.0 和 OIDC 提供者的 userInfo 端點。Amazon Cognito 會將 ID 權杖中的資訊優先順序置於 userInfo 資訊之前。

當您發現使用者不再使用您連結至其設定檔的外部使用者帳戶時,您可以取消該使用者帳戶與您的使用者集區使用者的關聯。當您連結使用者時,您會在請求中提供使用者的屬性名稱、屬性值和提供者名稱。要刪除用戶不再需要的配置文件,請使用對等參數提出 AdminDisableProviderForUserAPI 請求。

AdminLinkProviderForUser如需 AWS SDK 中的其他命令語法和範例,請參閱。