SAML IdPs 在 Amazon Cognito 用戶池中要了解的事情 - Amazon Cognito

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

SAML IdPs 在 Amazon Cognito 用戶池中要了解的事情

Amazon Cognito 為您處理SAML斷言

Amazon Cognito 使用者集區支援 SAML 2.0 與POST繫結端點的聯合。這消除了您的應用程序檢索或解析SAML斷言響應的需要,因為用戶池直接通過用戶代理接收來自 IdP 的SAML響應。使用者集區會代表您的應用程式做為服務供應商 (SP)。Amazon Cognito 支援 SP 啟動和 IDP 啟動的單一登入 (SSO),如 V2.0 技術概觀第 5.1.2 和 5.1.4 節所述。SAML

提供有效的 IdP 簽署憑證

當您在使用者集區中設定 SAML IdP 時,SAML提供者中繼資料中的簽署憑證不得過期。

使用者集區支援多個簽署憑證

當您的 SAML IdP 在中SAML繼資料中包含多個簽署憑證時,登入時,如果宣告符合中繼資料中的任何憑證,則您的使用者集區會判SAML斷提示是否有效。SAML每個簽署憑證的長度不得超過 4,096 個字元。

維護繼電器狀態參數

Amazon Cognito 和您的 SAML IdP 會使用參數維護工作階段資訊。relayState

  1. Amazon Cognito 支援大於 80 個位元組的 relayState 值。雖然SAML規格指出「長度不得超過 80 個位元組」的relayState值,但目前的業界實踐通常偏離此行為。因此,拒絕大於 80 位元組的relayState值將會中斷許多標準SAML提供者整合。

  2. relayState權杖是 Amazon Cognito 維護的狀態資訊的不透明參考。Amazon Cognito 不會保證 relayState 參數的內容。請勿解析其內容,如此你的應用程式便會取決於結果。如需詳細資訊,請參閱 SAML2.0 規格

識別端ACS點

您的SAML身分提供者要求您設置斷言消費者端點。您的 IdP 會使用其SAML宣告將您的使用者重新導向至此端點。在您的使用者集區網域中設定下列端點,以便在SAML身分識別提供者中進行 SAML 2.0 POST 繫結。

https://Your user pool domain/saml2/idpresponse With an Amazon Cognito domain: https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse With a custom domain: https://auth.example.com/saml2/idpresponse

如需使用者集區網域的詳細資訊,請參閱 設定使用者集區網域

沒有重播斷言

您無法對 Amazon Cognito saml2/idpresponse 端點重SAML複或重宣告。重新顯SAML示的宣告具有重複先前 IdP 回應的識別碼的宣告識別碼。

使用者集區識別碼為 SP 實體識別碼

您必須在服務提供者 (SP) 中向您的 IdP 提供您的使用者集區 IDurn,也稱為對象URISP 實體 ID。您的使用者集區的URI對象具有下列格式。

urn:amazon:cognito:sp:us-east-1_EXAMPLE

您可以在 Amazon Cognito 主控台使用者集區概觀下找到您的使用者集區 ID。

對映所有必要屬性

設定 SAML IdP,為您在使用者集區中視需要設定的任何屬性提供值。例如,email 是使用者集區的常用必要屬性。在您的使用者可以登入之前,您的 SAML IdP 宣告必須包含您對應至使用者集區屬性的宣告。email如需屬性對應的詳細資訊,請參閱 為您的使用者集區指定身分提供者屬性映射

斷言格式有特定的要求

您的 SAML IdP 必須在SAML斷言中包含以下聲明。

  1. NameID賠。Amazon Cognito 通過將SAML斷言與目標用戶相關聯。NameID如果有NameID變更,Amazon Cognito 會將此宣告視為適用於新使用者的宣告。您在 IdP 組態NameID中設定的屬性必須具有永久值。

    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent"> carlos </saml2:NameID>
  2. 具有 Audience 值的 AudienceRestriction 宣告,會將您的使用者集區 SP 實體 ID 設定為回應的目標。

    <saml:AudienceRestriction> <saml:Audience> urn:amazon:cognito:sp:us-east-1_EXAMPLE </saml:AudienceRestriction>
  3. 針對 SP 起始的單一登入,此Response元素的InResponseTo值為原始SAML要求識別碼。

    <saml2p:Response Destination="https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse" ID="id123" InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" IssueInstant="Date-time stamp" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    注意

    IDP 起始SAML的判斷提示不得包含值InResponseTo

  4. 具有使用者集區saml2/idpresponse端點Recipient值的SubjectConfirmationData元素,而對於 SP 啟動SAML,則為符合原始SAML要求識別碼的InResponseTo值。

    <saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="Date-time stamp" Recipient="https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse"/>
SP 發起的登入要求

當您的使用者授權端點重新導向至您的 IdP 登入頁面時,Amazon Cognito 會在SAML請求的URL參數中包含一個請求。HTTP GETSAML請求包含有關您的用戶集區的信息,包括您的ACS端點。您可以選擇性地將密碼編譯簽章套用至這些要求。

簽署要求並加密回應

每個SAML提供者的使用者集區都會為 Amazon Cognito 指派給SAML請求的數位簽章產生非對稱 key pair 和簽署憑證。您設定為支援加密SAML回應的每個外部 SAML IdP 都會導致 Amazon Cognito 為該提供者產生新的 key pair 和加密憑證。若要檢視和下載包含公開金鑰的憑證,請在 Amazon Cognito 主控台的 [登入體驗] 索引標籤中選擇您的 IdP。

若要對來自使用者集區的SAML要求建立信任,請向您的 IdP 提供您的使用者集區 SAML 2.0 簽署憑證的複本。如果您未將 IdP 設定為接受已簽署的SAML請求,IdP 可能會忽略您的使用者集區已簽署的請求。

  1. Amazon Cognito 會將數位簽名套用至您的使用者傳遞給 IdP 的SAML請求。您的使用者集區會簽署所有單一登出 (SLO) 要求,而且您可以設定使用者集區以簽署任何SAML外部 IdP 的單一登入 (SSO) 要求。當您提供憑證副本時,IdP 可以驗證使用者SAML要求的完整性。

  2. 您的 SAML IdP 可以使用加密憑證加密SAML回應。當您設定具有SAML加密功能的 IdP 時,您的 IdP 只能傳送加密回應。

編碼非字母數字字元

Amazon Cognito 不接受像 IdP 𠮷 這樣的 4 個位元組 UTF -8 個字元,😐也不接受 IdP 作為屬性值傳遞的字元。您可以對字元進行 Base64 編碼,將其作為文字傳遞,然後在應用程式中將其解碼。

在下列範例中,不會接受屬性宣告:

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">😐</saml2:AttributeValue> </saml2:Attribute>

與之前的範例相反,會接受以下屬性宣告:

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">8J+YkA==</saml2:AttributeValue> </saml2:Attribute>
中繼資料端點必須具有有效的傳輸層安全性

如果您在使用HTTPS中繼資料端點建立 SAML IdP InvalidParameterException 時看到URL,例如,「擷取中繼資料時發生錯誤 <metadata endpoint>,」請確定中繼資料端點已SSL正確設定,並且有與其相關聯的有效SSL憑證。如需驗證憑證的詳細資訊,請參閱什麼是SSL/TLS憑證? 。

啟動 IDP 的應用程式用戶端只SAML能使用 SAML

當您在應用程式用戶端中啟動對 SAML 2.0 IdP 的支援時,您只能將其他 SAML 2.0 新增 IdPs 至該應用程式用戶端。您無法在使用者集區中將使用者目錄所有非SAML外部身分識別提供者新增至以這種方式設定的應用程式用戶端。

登出回應必須使用POST繫結

/saml2/logout端點接受LogoutResponseHTTP POST請求。用戶池不接受HTTP GET具有綁定的註銷響應。