本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SAML 簽署和加密
SAML 2.0 登入是以應用程式的使用者為基礎建置,作為其身分驗證流程中請求和回應的承載。您可能想要確保使用者不會在傳輸中讀取或修改這些 SAML 文件。若要達成此目的,請將 SAML 簽署和加密新增至使用者集區中的 SAML 身分提供者 IdPs)。透過 SAML 簽署,您的使用者集區會將簽章新增至 SAML 登入和登出請求。使用您的使用者集區公有金鑰,IdP 可以驗證其是否收到未修改的 SAML 請求。然後,當您的 IdP 回應並將 SAML 聲明傳遞給使用者的瀏覽器工作階段時,IdP 可以加密該回應,讓使用者無法檢查自己的屬性和權限。
透過 SAML 簽署和加密,使用者集區 SAML 操作期間的所有密碼編譯操作都必須使用 Amazon Cognito 產生的user-pool-provided金鑰產生簽章和密碼文字。目前,您無法設定使用者集區以簽署請求,或使用外部金鑰接受加密聲明。
注意
您的使用者集區憑證有效期為 10 年。Amazon Cognito 每年為您的使用者集區產生一次新的簽署和加密憑證。當您請求簽署憑證時,Amazon Cognito 會傳回最新的憑證,並使用最新的簽署憑證來簽署請求。您的 IdP 可以使用任何未過期的使用者集區加密憑證來加密 SAML 聲明。您先前的憑證在整個期間持續有效,而且公有金鑰不會在憑證之間變更。最佳實務是,每年更新供應商組態中的憑證。
接受來自 IdP 的加密 SAML 回應
當使用者登入和登出時,Amazon Cognito 和您的 IdP 可以在 SAML 回應中建立機密性。Amazon Cognito 會將公有/私有 RSA 金鑰對和憑證指派給您在使用者集區中設定的每個外部 SAML 提供者。當您為使用者集區 SAML 供應商啟用回應加密時,您必須將憑證上傳至支援加密 SAML 回應的 IdP。在 IdP 開始使用提供的金鑰加密所有 SAML 聲明之前,您的 SAML IdP 使用者集區連線無法運作。
以下是加密 SAML 登入流程的概觀。
-
您的使用者開始登入並選擇其 SAML IdP。
-
您的使用者集區會使用 SAML 登入請求,將使用者授權端點重新導向至其 SAML IdP。您的使用者集區可以選擇性地伴隨此請求與簽章,以啟用 IdP 的完整性驗證。當您想要簽署 SAML 請求時,您必須設定您的 IdP 以接受您的使用者集區已使用簽署憑證中的公有金鑰簽署的請求。
-
SAML IdP 會在您的使用者中簽署,並產生 SAML 回應。IdP 會使用公有金鑰加密回應,並將您的使用者重新導向至您的使用者集區
/saml2/idpresponse
端點。IdP 必須加密 SAML 2.0 規格定義的回應。如需詳細資訊,請參閱Element <EncryptedAssertion>
OASIS 安全聲明標記語言 (SAML) V2.0 的聲明和通訊協定。 -
您的使用者集區會使用私有金鑰解密 SAML 回應中的加密文字,並在您的使用者中登入。
重要
當您在使用者集區中啟用 SAML IdP 的回應加密時,您的 IdP 必須使用提供者特定的公有金鑰來加密所有回應。Amazon Cognito 不接受來自您設定為支援加密之 SAML 外部 IdP 的未加密 SAML 回應。
您的使用者集區中的任何外部 SAML IdP 都可以支援回應加密,而且每個 IdP 都會收到自己的金鑰對。
簽署 SAML 請求
向 IdP 證明 SAML 2.0 請求完整性的能力是 Amazon Cognito SP 啟動的 SAML 登入的安全優勢。每個具有網域的使用者集區都會收到使用者集區 X.509 簽署憑證。使用此憑證中的公有金鑰,使用者集區會將密碼編譯簽章套用至使用者集區在使用者選取 SAML IdP 時產生的登出請求。您可以選擇性地設定應用程式用戶端來簽署 SAML 登入請求。當您簽署 SAML 請求時,IdP 可以檢查請求的 XML 中繼資料中的簽章是否符合您提供的使用者集區憑證中的公有金鑰。