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

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

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

通常,同一個使用者有一個設定檔,其中包含多個您已連線至使用者集區的身分提供者 (IdPs)。Amazon Cognito 可以將使用者每一次的出現與目錄中的同一個使用者描述檔連結。如此一來,一個擁有多個 IdP 使用者的人在您的應用程式可以得到一致的體驗。AdminLinkProviderForUser 會指示 Amazon Cognito 將聯合目錄中使用者的唯一 ID 識別為使用者集區中的使用者。當您具有與使用者設定檔相關聯的零或多個聯合身分https://aws.amazon.com/cognito/pricing/時,您的使用者集區中的使用者會計算為每月作用中使用者 (MAU)。

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

重要

由於 AdminLinkProviderForUser 允許具有外部聯合身分的使用者以使用者集區中的現有使用者身分登入,因此僅與應用程式擁有者信任的外部 IdPs 和提供者屬性搭配使用至關重要。

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

msp_carlos@example.com Carlos 對 Amazon Cognito SAML的宣告email中,ADFS IdPs 您目前的 Carlos 電子郵件地址。您在使用者集區中建立使用者名稱為 Carlos 的使用者。下列 AWS Command Line Interface (AWS CLI) 命令會從 IdPs ADFS1、 ADFS2和 連結 Carlos 的身分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 }]
有關連結聯合身分使用者的須知事項
  • 每個使用者描述檔最多可以連結五個聯合身分使用者。

  • 您最多可以從五個 IdP 屬性宣告將使用者連結至每個 IdP,如 AdminLinkProviderForUser API 請求SourceUser中的 ProviderAttributeName 參數所定義。例如,如果您已將至少一位使用者連結至來源屬性 emailphonegiven_namedepartmentlocation,則您只能將這五個屬性之一的其他使用者連結。

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

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

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

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

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

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

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