SAML身分提供者名稱和識別碼 - Amazon Cognito

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

SAML身分提供者名稱和識別碼

使用 IdP 識別碼和託管使用者介面的 Amazon Cognito SP 啟動SAML登入的身份驗證流程圖。使用者提供一個電子郵件地址到託管的使用者介面,Amazon Cognito 會自動將其重新導向至其供應商。

當您為SAML身分提供者命名 (IdPs) 並指派 IdP 識別碼時,您可以將 SP 起始的登入和登出要求流程自動化給該提供者。如需提供者名稱之字串條件約束的相關資訊,請參閱的ProviderName屬性CreateIdentityProvider

您也可以為您的SAML供應商選擇多達 50 個識別碼。識別碼是您使用者集區中 IdP 的易記名稱,且在使用者集區中必須是唯一的。如果您的SAML識別碼與使用者的電子郵件網域相符,Amazon Cognito 託管的 UI 會請求每個使用者的電子郵件地址、評估其電子郵件地址中的網域,並將其重新導向至與其網域對應的 IdP。由於相同的組織可以擁有多個網域,因此單一 IdP 可以有多個識別碼。

無論您是否使用電子郵件網域識別碼,都可以在多租用戶應用程式中使用識別碼,將使用者重新導向至正確的 IdP。當您想要完全略過託管的 UI 時,您可以自訂呈現給使用者的連結,使其透過授權端點直接重新導向至其 IdP。若要使用識別碼登入使用者並重新導向至其 IdP,請在其初始授權要求的要求參數idp_identifier=myidp.example.com中以格式加入識別碼。

將使用者傳遞至 IdP 的另一種方法是以下列URL格identity_provider式填入 IdP 名稱的參數。

https://mydomain.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& identity_provider=MySAMLIdP& client_id=1example23456789& redirect_uri=https://www.example.com

使用者使用您的 SAML IdP 登入後,您的 IdP 會將正文中的SAML回應重新導向至您/saml2/idpresponseHTTP POST端點。Amazon Cognito 會處理SAML宣告,如果回應中的宣告符合預期,則會重新導向至您的應用程式用戶端回呼。URL用戶以這種方式完成身份驗證後,他們僅針對您的 IdP 和您的應用程序與網頁進行了交互。

使用網域格式的 IdP 識別碼時,Amazon Cognito 託管的 UI 會在登入時請求電子郵件地址,然後在電子郵件網域與 IdP 識別碼相符時,將使用者重新導向至其 IdP 的登入頁面。舉例來說,您建置的應用程式需要兩家不同公司的員工登入。第一家公司, AnyCompany A,擁有exampleA.comexampleA.co.uk。第二家公司 AnyCompany B 擁有exampleB.com。在此範例中,您為每個公司設定了兩個 IdPs,一個,如下所示:

  • 針對 IdP A,您定義識別符 exampleA.comexampleA.co.uk

  • 針對 IdP B,您會定義識別符 exampleB.com

在您的應用程序中,調用應用程序客戶端的託管 UI 以提示每個用戶輸入其電子郵件地址。Amazon Cognito 會從電子郵件地址衍生網域、使用網域識別碼將網域與 IdP 建立關聯,然後透過請求將您的使用者重新導向至包含請求參數的正確 IdP。授權端點 idp_identifier例如,如果使用者進入bob@exampleA.co.uk,與其互動的下一個頁面就是 IdP 登入頁面的位https://auth.exampleA.co.uk/sso/saml置。

您也可以獨立實作相同的邏輯。在您的應用程序中,您可以構建一個自定義表單,以收集用戶輸入並根據自己的邏輯將其與正確的 IdP 相關聯。您可以為每個應用程序租戶生成自定義應用程序門戶,其中每個鏈接到授權端點的請求參數中具有租戶的標識符。

若要收集電子郵件地址並剖析託管 UI 中的網域,請至少為您指派給應用程式用戶端的每個 SAML IdP 指派一個識別碼。默認情況下,託管的 UI 登錄屏幕會為您分配給應用程序客戶端的每個屏幕顯示一個按鈕。 IdPs 但是,如果您已成功指派識別碼,您的託管 UI 登入頁面會如下圖所示。

一個顯示本機使用者登入的 Amazon Cognito 託管 UI 登入頁面,以及一個要求聯合身分使用者輸入電子郵件地址的提示。

在託管 UI 中進行網域剖析需要您使用網域做為 IdP 識別碼。如果您將任何類型的識別碼指派給應用程式用戶端SAML IdPs 的每個識別碼,該應用程式的託管 UI 將不再顯示 IDP 選取按鈕。為您打算使用電子郵件剖析或自訂邏輯產生重新導向SAML時,新增 IdP 識別碼。當您想要生成靜默重定向並希望託管 UI 顯示列表時 IdPs,請不要分配標識符並在授權請求中使用請求參數。identity_provider

  • 如果您僅將一個 SAML IdP 分配給應用程序客戶端,則託管 UI 登錄頁面將顯示一個按鈕,用於使用該 IdP 登錄。

  • 如果您為應用程序客戶端激活的每個 SAML IdP 分配一個標識符,則託管 UI 登錄頁面中會顯示用戶輸入電子郵件地址的提示。

  • 如果您有多個識別碼 IdPs ,但未將識別碼指派給所有識別碼,則託管 UI 登入頁面會顯示一個按鈕,以便使用每個指派的 IdP 登入。

  • 如果您將標識符分配給您的, IdPs 並且希望託管 UI 顯示選擇的 IdP 按鈕,請向您的應用程序客戶端添加一個沒有標識符的新 IdP,或創建一個新的應用程序客戶端。您也可以刪除現有的 IdP,然後在沒有識別碼的情況下再次新增它。如果您建立新的 IdP,您的使SAML用者將會建立新的使用者設定檔。這種複製的作用中使用者可能會在您變更 IdP 組態的當月產生計費影響。

如需 IdP 設定的詳細資訊,請參閱 為您的使用者集區配置身分提供者