本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在使用者集區中新增和管理 SAML 身分提供者
將身分提供者設定為使用 Amazon Cognito 之後,您可以將其新增至使用者集區和應用程式用戶端。下列程序示範如何在 Amazon Cognito 使用者集區中建立、修改和刪除 SAML 供應商。
- AWS Management Console
-
您可以使用 AWS Management Console 來建立和刪除 SAML 身分提供者 IdPs)。
建立 SAML IdP 之前,您必須擁有從第三方 IdP 取得的 SAML 中繼資料文件。如需有關如何取得或產生所需之 SAML 中繼資料文件的詳細資訊,請參閱 設定第三方 SAML 身分提供者。
在您的使用者集區中設定 SAML 2.0 IdP
-
前往 Amazon Cognito 主控台
。若出現提示,請輸入 AWS 憑證。 -
選擇 User Pools (使用者集區)。
-
從清單中選擇現有的使用者集區,或建立使用者集區。
-
選擇社交和外部提供者選單,然後選擇新增身分提供者。
-
選擇 SAML IdP。
-
輸入提供者名稱。您可以在
identity_provider
請求參數中將此易記的名稱傳遞給 授權端點。 -
輸入以逗號分隔的 Identifiers (識別符)。識別符通知 Amazon Cognito,應該檢查使用者在登入時輸入的電子郵件地址,然後將其導向至與其網域對應的供應商。
-
如果您希望 Amazon Cognito 在使用者登出時傳送已簽署的登出請求給您的供應商,則請選擇 Add sign-out flow (新增登出流程)。您必須設定 SAML 2.0 IdP,將登出回應傳送至設定受管登入時建立的
https://
端點。mydomain.us-east-1.amazoncognito.com
/saml2/logoutsaml2/logout
端點會使用 POST 繫結。注意
如果選取此選項,且您的 SAML IdP 預期有簽署的登出請求,您還必須將來自使用者集區的簽署憑證提供給 SAML IdP。
SAML IdP 將處理簽署登出請求,以及將您的使用者從 Amazon Cognito 工作階段登出。
-
選擇您的 IdP 啟動 SAML 登入組態。作為安全最佳實務,請選擇僅接受 SP 啟動的 SAML 聲明。如果您已準備好讓環境安全地接受未經請求的 SAML 登入工作階段,請選擇接受 SP 啟動和 IdP 啟動的 SAML 聲明。如需詳細資訊,請參閱Amazon Cognito 使用者集區中的 SAML 工作階段啟動。
-
選擇 Metadata document source (中繼資料文件來源)。如果您的 IdP 以公有 URL 提供 SAML 中繼資料,則可以選擇 Metadata document URL (中繼資料文件 URL),然後輸入該公有 URL。否則,請選擇 Upload metadata document (上傳中繼資料文件),然後選取您先前從供應商處下載的中繼資料檔案。
注意
如果您的提供者有公有端點,而不是上傳檔案,建議您輸入中繼資料文件 URL。Amazon Cognito 會自動從中繼資料 URL 重新整理中繼資料。通常每 6 小時或是在中繼資料過期之前 (取較早的時間) 重新整理中繼資料。
-
在 SAML 提供者和使用者集區之間映射屬性,將 SAML 提供者屬性映射至使用者集區中的使用者設定檔。在屬性對應中包含您的使用者集區必要屬性。
例如,當您選擇 User pool attribute (使用者集區屬性)
email
時,隨著 IdP SAML 聲明中顯示的 SAML 屬性名稱輸入 SAML 屬性名稱。如果 IdP 提供 SAML 聲明範例,則您可以使用這些聲明範例協助您找到名稱。有些 IdPs使用簡單的名稱,例如email
,而有些則使用如下的名稱。http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
-
選擇 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-mappingemail
=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-mappingemail
=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-mappingemail
=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-mappingemail
=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:
。Amazon Cognito 需要符合 SAML 回應中此 URN 的對象限制值。將 IdP 設定為針對 IdP-to-SP 回應訊息使用下列 POST 繫結端點。us-east-1_EXAMPLE
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 供應商
-
在導覽窗格中,選擇 User Pools (使用者集區),然後選擇您要編輯的使用者集區。
-
選擇社交和外部供應商選單。
-
在您要刪除的 SAML IdP 旁邊,選取選項按鈕。
-
出現 Delete identity provider (刪除身分提供者) 的提示時,請輸入 SAML 供應商的名稱以確認刪除,然後選擇 Delete (刪除)。