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

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

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

下列程序示範如何在 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. 選擇一個 SAMLIdP。

  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 需要已簽署的登出要求,則您還必須向您的 SAML IdP 提供來自使用者集區的簽署憑證。

    SAMLIdP 將處理已登出的登出要求,並從 Amazon Cognito 工作階段登出您的使用者。

  9. 選擇您的 IDP 起始SAML登入設定。作為安全性最佳作法,請選擇「僅接受 SP 起始的SAML宣告」。如果您已準備好安全地接受來路不明的SAML登入工作階段的環境,請選擇「接受 SP 起始和 IDP SAML 起始的宣告」。如需詳細資訊,請參閱SAMLAmazon 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 要求URN在SAML回應中符合此限制的受眾限制值。將 IdP 設定為針對 IDP 到 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
  • 若要從 Amazon Cognito 下載 IdP 可用來驗證登SAML出請求的公開金鑰複本,請選擇使用者集區的 [登入體驗] 索引標籤,選取您的 IdP,然後在 [檢視簽署憑證] 下選取 [下載為 .crt]。

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

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

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

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

  4. 選取SAML IdPs 您要刪除的旁邊的圓形按鈕。

  5. 當系統提示您刪除身分識別提供者時,請輸入要確認刪除的提SAML供者名稱,然後選擇 [刪]。