SAML 簽章與加密 - Amazon Cognito

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

SAML 簽章與加密

Amazon Cognito 支援已簽署的 SAML 請求和加密的 SAML 回應,以供登入和登出使用。使用者集區 SAML 操作期間的所有加密操作都必須使用 Amazon Cognito 產生的 user-pool-provided 金鑰產生簽名和密文。目前,您無法設定使用者集區來簽署要求或使用外部金鑰接受加密的宣告。

注意

您的使用者集區憑證有效期為 10 年。Amazon Cognito 每年會為您的使用者集區產生一次新的簽署和加密憑證。Amazon Cognito 會在您請求簽署憑證時傳回最新的憑證,並使用最新的簽署憑證簽署請求。您的 IdP 可以使用任何未過期的使用者集區加密憑證來加密 SAML 判斷提示。您之前的證書在整個持續時間內仍然有效,並且公鑰在證書之間不會更改。最佳做法是每年更新提供者組態中的憑證。

從您的 IdP 接受加密的 SAML 回應

當使用者登入和登出時,Amazon Cognito 和您的 IdP 可以在 SAML 回應中建立機密性。Amazon Cognito 會為您在使用者集區中設定的每個外部 SAML 提供者指派公開私有 RSA key pair 和憑證。當您為使用者集區 SAML 提供者啟用回應加密時,您必須將憑證上傳至支援加密 SAML 回應的 IdP。在 IdP 開始使用提供的金鑰加密所有 SAML 宣告之前,您與 SAML IdP 的使用者集區連線無法運作。

以下是加密 SAML 登入流程的概觀。

  1. 您的使用者開始登入並選擇他們的 SAML IdP。

  2. 您的使用者集區會透過 SAML 登入要求將您的使用者授權端點重新導向至其 SAML IdP。您的使用者集區可以選擇性地隨附此要求,並附上簽章,以啟用 IdP 的完整性驗證。當您想要簽署 SAML 要求時,必須將 IdP 設定為接受使用者集區已使用簽署憑證中的公開金鑰簽署的要求。

  3. SAML IdP 會在您的使用者中登入並產生 SAML 回應。IdP 會使用公開金鑰加密回應,並將您的使用者重新導向至使用者集區/saml2/idpresponse端點。IdP 必須按照 SAML 2.0 規格所定義的回應加密。如需詳細資訊,請參閱 OASIS 安全性判斷提示標記語言 (SAML) V2.0 的宣告和通訊協定Element <EncryptedAssertion>中的。

  4. 您的使用者集區會使用私密金鑰和登入您的使用者來解密 SAML 回應中的密文。

重要

當您為使用者集區中的 SAML IdP 啟用回應加密時,您的 IdP 必須使用提供者專屬的公開金鑰來加密所有回應。Amazon Cognito 不接受來自您設定為支援加密的 SAML 外部 IdP 的未加密 SAML 回應。

使用者集區中的任何外部 SAML IdP 都可以支援回應加密,而且每個 IdP 都會收到自己的 key pair。

AWS Management Console
若要設定 SAML 回應加密
  1. 建立使用者集區應用程式用戶端和 SAML IdP。

  2. 建立或編輯 SAML 身分識別提供者時,在「簽署要求和加密回應」下,勾選標題為「需要來自此提供者的加密 SAML 宣告」的核取方塊。

  3. 在使用者集區的 [登入體驗] 索引標籤的 [同盟身分提供者登入] 下,選取您的 SAML IdP,然後選擇 [檢視加密憑證]。

  4. 選擇下載為 .crt,並將下載的檔案提供給您的 SAML IdP。將您的 SAML IdP 設定為使用憑證中的金鑰加密 SAML 回應。

API/CLI

若要設定 SAML 回應加密

使用CreateIdentityProviderUpdateIdentityProviderAPI 請求的EncryptedResponses參數設定回應加密。以下是支援要求簽署ProviderDetails的 IdP 範例。

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }

簽署 SAML 要求

能夠向您的 IdP 證明 SAML 2.0 請求的完整性,這是 Amazon Cognito SP 啟動的 SAML 登入的一項安全優勢。每個具有網域的使用者集區都會收到一個使用者集區 X.509 簽署憑證。使用此憑證中的公開金鑰,使用者集區會將加密簽章套用至您的使用者集區在使用者選取 SAML IdP 時產生的登出要求。您可以選擇配置應用程序客戶端以簽署 SAML 登錄請求。當您簽署 SAML 請求時,IdP 可以檢查請求的 XML 中繼資料中的簽章是否與您提供的使用者集區憑證中的公開金鑰相符。

AWS Management Console
若要設定 SAML 要求簽章
  1. 建立使用者集區應用程式用戶端和 SAML IdP。

  2. 建立或編輯 SAML 身分識別提供者時,在「簽署要求並加密回應」下,勾選標題為「向此提供者簽署 SAML 要求」的核取方塊。

  3. 在使用者集區的 [登入體驗] 索引標籤的 [同盟身分識別提供者登入] 下,選擇 [檢視簽署憑證]。

  4. 選擇下載為 .crt,並將下載的檔案提供給您的 SAML IdP。設定您的 SAML IdP 以驗證內送 SAML 要求的簽章。

API/CLI

若要設定 SAML 要求簽章

使用CreateIdentityProviderUpdateIdentityProviderAPI 請求的RequestSigningAlgorithm參數設定要求簽署。以下是支援要求簽署ProviderDetails的 IdP 範例。

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }