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

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

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

當您為 SAML 身分提供者 (IdPs) 命名並指派 IdP 識別符時,您可以自動化向該提供者發出的 SP 起始登入和登出請求流程。如需提供者名稱字串限制的相關資訊,請參閱 CreateIdentityProviderProviderName 屬性。

Amazon Cognito SP 啟動的 SAML 登入的身分驗證流程圖,具有 IdP 識別符和受管登入。使用者提供電子郵件地址給受管登入,Amazon Cognito 會自動將他們重新導向至其提供者。

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

無論您是否使用電子郵件網域識別符,都可以在多租戶應用程式中使用識別符,將使用者重新導向至正確的 IdP。當您想要完全略過受管登入時,您可以自訂您提供給使用者的連結,以便他們授權端點直接透過 重新導向到其 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 會使用內HTTP POST文中的 SAML 回應將使用者重新導向至/saml2/idpresponse端點。Amazon Cognito 會處理 SAML 聲明,如果回應中的宣告符合預期,則會重新導向至您的應用程式用戶端回呼 URL。您的使用者以此方式完成身分驗證後,他們只會與 IdP 和應用程式的網頁互動。

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

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

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

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

您也可以獨立實作相同的邏輯。在應用程式中,您可以建置自訂表單,收集使用者輸入,並根據您自己的邏輯將其與正確的 IdP 建立關聯。您可以為每個應用程式租用戶產生自訂入口網站,其中每個連結都會連結到請求參數中具有租用戶識別符的授權端點。

若要收集電子郵件地址並剖析受管登入中的網域,請為您指派給應用程式用戶端的每個 SAML IdP 指派至少一個識別符。根據預設,受管登入畫面會顯示您指派給應用程式用戶端的每個 IdPs的按鈕。不過,如果您已成功指派識別符,則傳統託管 UI 登入頁面看起來會如下圖所示。

Amazon Cognito 受管登入頁面,顯示本機使用者登入,並提示聯合身分使用者輸入電子郵件地址。
注意

在傳統託管 UI 中,當您將識別符指派給 IdPs 時,應用程式用戶端的登入頁面會自動提示電子郵件地址。在受管登入體驗中,您必須在品牌設計工具中啟用此行為。在身分驗證行為設定類別中,選取標題提供者顯示下的網域搜尋輸入

受管登入中的網域剖析需要您使用網域做為 IdP 識別符。如果您為應用程式用戶端的每個 SAML IdPs 指派任何類型的識別符,則該應用程式的受管登入將不再顯示 IdP 選擇按鈕。當您想要使用電子郵件剖析或自訂邏輯來產生重新導向時,請新增 SAML 的 IdP 識別符。當您想要產生無訊息重新導向,也希望受管登入頁面顯示 IdPs清單時,請不要指派識別符,並在授權請求中使用identity_provider請求參數。

  • 如果您只將一個 SAML IdP 指派給應用程式用戶端,受管登入頁面會顯示按鈕以使用該 IdP 登入。

  • 如果您為應用程式用戶端啟用的每個 SAML IdP 指派識別符,則受管登入登入頁面中會顯示電子郵件地址的使用者輸入提示。

  • 如果您有多個 IdPs而且您未將識別符指派給所有這些識別符,受管登入頁面會顯示一個按鈕,以使用每個指派的 IdP 登入。

  • 如果您將識別符指派給 IdPs且希望受管登入頁面顯示 IdP 按鈕的選擇,請將沒有識別符的新 IdP 新增至您的應用程式用戶端,或建立新的應用程式用戶端。您也可以刪除現有的 IdP,然後再次新增它,而無需識別符。如果您建立新的 IdP,SAML 使用者將建立新的使用者設定檔。此重複作用中使用者可能會在您變更 IdP 組態的月份產生帳單影響。

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