在使用者集區中新增和管理 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. 選擇社交和外部提供者選單,然後選擇新增身分提供者

  5. 選擇 SAML IdP。

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

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

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

    注意

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

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

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

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

    注意

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

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

    例如,當您選擇 User pool attribute (使用者集區屬性) email 時,隨著 IdP SAML 聲明中顯示的 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 中繼資料 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 中繼資料 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

列出所有 IdP 的相關資訊
  • 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 設定為針對 IdP-to-SP 回應訊息使用下列 POST 繫結端點。

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

如要對您的 SAML 2.0 IDP 提供簽署憑證
  • 若要從 IdP 可用來驗證 SAML 登出請求的 Amazon Cognito 下載公有金鑰副本,請選擇使用者集區的社交和外部提供者選單、選取您的 IdP,然後在檢視簽署憑證下選取下載為 .crt

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

刪除 SAML 供應商
  1. 登入 Amazon Cognito 主控台

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

  3. 選擇社交和外部供應商選單。

  4. 在您要刪除的 SAML IdP 旁邊,選取選項按鈕。

  5. 出現 Delete identity provider (刪除身分提供者) 的提示時,請輸入 SAML 供應商的名稱以確認刪除,然後選擇 Delete (刪除)。