在使用者集區中新增和管理SAML身分提供者 - Amazon Cognito

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

在使用者集區中新增和管理SAML身分提供者

將身分提供者設定為使用 Amazon Cognito 之後,您可以將其新增至使用者集區和應用程式用戶端。下列程序示範如何在 Amazon Cognito 使用者集區中建立、修改和刪除SAML提供者。

AWS Management Console

您可以使用 AWS Management Console 來建立和刪除SAML身分提供者 (IdPs)。

建立 SAML IdP 之前,您必須擁有從第三方 IdP 取得的SAML中繼資料文件。如需如何取得或產生所需SAML中繼資料文件的指示,請參閱 設定您的第三方SAML身分提供者

在使用者集區中設定 SAML 2.0 IdP
  1. 前往 Amazon Cognito 主控台。若出現提示,請輸入 AWS 憑證。

  2. 選擇 User Pools (使用者集區)。

  3. 從清單中選擇現有的使用者集區,或建立使用者集區

  4. 選擇 Sign-in experience (登入體驗) 索引標籤。找到 Federated sign-in (聯合登入),然後選擇 Add an identity provider (新增身分提供者)。

  5. 選擇 SAML IdP 。

  6. 輸入提供者名稱 。您可以在identity_provider請求參數中將此易記的名稱傳遞給 授權端點

  7. 輸入以逗號分隔的 Identifiers (識別符)。識別符通知 Amazon Cognito,應該檢查使用者在登入時輸入的電子郵件地址,然後將其導向至與其網域對應的供應商。

  8. 如果您希望 Amazon Cognito 在使用者登出時傳送已簽署的登出請求給您的供應商,則請選擇 Add sign-out flow (新增登出流程)。您必須設定 SAML 2.0 IdP,才能將登出回應傳送至設定託管 UI 時建立的https://mydomain.us-east-1.amazoncognito.com/saml2/logout端點。saml2/logout 端點使用POST繫結。

    注意

    如果選取此選項,且您的 SAML IdP 預期會有簽署的登出請求,則您也必須將來自使用者集區的簽署憑證提供給 SAMLIdP。

    IdP SAML 將處理已簽署的登出請求,並從 Amazon Cognito 工作階段登出您的使用者。

  9. 選擇您的 IdP 起始SAML登入組態。作為安全最佳實務,選擇僅接受 SP 啟動的SAML宣告。如果您已準備好環境以安全地接受主動提供的SAML登入工作階段,請選擇接受 SP 啟動和 IdP 啟動的SAML宣告。如需詳細資訊,請參閱SAML Amazon Cognito 使用者集區中的工作階段啟動

  10. 選擇 Metadata document source (中繼資料文件來源)。如果您的 IdP 在公有 提供SAML中繼資料URL,您可以選擇中繼資料文件URL並輸入該公有 URL。否則,請選擇 Upload metadata document (上傳中繼資料文件),然後選取您先前從供應商處下載的中繼資料檔案。

    注意

    URL 如果您的提供者具有公有端點,而不是上傳檔案,建議您輸入中繼資料文件。Amazon Cognito 會自動重新整理中繼資料 中的中繼資料URL。通常每 6 小時或是在中繼資料過期之前 (取較早的時間) 重新整理中繼資料。

  11. 在SAML提供者和使用者集區之間映射屬性,將SAML提供者屬性映射到使用者集區中的使用者設定檔。在屬性對應中包含您的使用者集區必要屬性。

    例如,當您選擇使用者集區屬性email,請輸入出現在 IdP SAML宣告中的SAML屬性名稱。如果您的 IdP 提供範例SAML宣告,您可以使用這些範例宣告來協助您尋找名稱。有些 IdPs 使用簡單的名稱,例如 email,有些則使用下列名稱。

    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  12. 選擇 Create (建立)。

API/CLI

使用下列命令來建立和管理SAML身分提供者 (IdP )。

建立 IdP 並上傳中繼資料文件
  • AWS CLI: aws cognito-idp create-identity-provider

    使用中繼資料檔案的範例:aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

    其中 details.json 包含:

    "ProviderDetails": { "MetadataFile": "<SAML metadata XML>", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }
    注意

    如果 <SAML metadata XML> 包含字元 的任何執行個體",您必須新增 \作為逸出字元:\"

    中繼資料 的範例URL: aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API: CreateIdentityProvider

為 IdP 上傳新的中繼資料文件
  • AWS CLI: aws cognito-idp update-identity-provider

    使用中繼資料檔案的範例:aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

    其中 details.json 包含:

    "ProviderDetails": { "MetadataFile": "<SAML metadata XML>", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }
    注意

    如果 <SAML metadata XML> 包含字元 的任何執行個體",您必須新增 \作為逸出字元:\"

    中繼資料 的範例URL: aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API: UpdateIdentityProvider

取得特定 IdP 的相關資訊
  • AWS CLI: aws cognito-idp describe-identity-provider

    aws cognito-idp describe-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1

  • AWS API: DescribeIdentityProvider

列出所有 的相關資訊 IdPs
  • AWS CLI: aws cognito-idp list-identity-providers

    範例:aws cognito-idp list-identity-providers --user-pool-id us-east-1_EXAMPLE --max-results 3

  • AWS API: ListIdentityProviders

刪除 IdP
  • AWS CLI: aws cognito-idp delete-identity-provider

    aws cognito-idp delete-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1

  • AWS API: DeleteIdentityProvider

設定 SAML IdP 將使用者集區新增為依賴方
  • 使用者集區服務提供者URN為:urn:amazon:cognito:sp:us-east-1_EXAMPLE。Amazon Cognito 需要與SAML回應URN中相符的受眾限制值。設定您的 IdP 以使用下列繫POST結端點作為 IdP-to-SP回應訊息。

    https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse
  • 您的 SAML IdP 必須填入SAML聲明中使用者集區的 NameID 和任何必要屬性。 NameID 用於在使用者集區中唯一識別SAML聯合使用者。您的 IdP 必須以一致且區分大小寫的格式傳遞每個使用者SAML的名稱 ID。使用者名稱 ID 值的任何變化都會建立新的使用者設定檔。

提供簽署憑證給 SAML 2.0 IDP
  • 若要從 Amazon Cognito 下載公有金鑰的副本,您的 IdP 可用來驗證SAML登出請求,請選擇使用者集區的登入體驗索引標籤,選擇您的 IdP然後在檢視簽署憑證 下,選擇下載為 .crt

您可以使用 Amazon Cognito 主控台刪除您在使用者集區中設定的任何SAML提供者。

若要刪除SAML提供者
  1. 登入 Amazon Cognito 主控台

  2. 在導覽窗格中,選擇 User Pools (使用者集區),然後選擇您要編輯的使用者集區。

  3. 選擇登入體驗索引標籤,並找到聯合身分提供者登入

  4. 選取SAML IdPs 您要刪除之 旁的選項按鈕。

  5. 提示您刪除身分提供者 時,輸入SAML提供者的名稱以確認刪除,然後選擇刪除