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

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

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

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

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

您也可以為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 會使用內HTTP POST文中的SAML回應將使用者重新導向至/saml2/idpresponse端點。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 設定的詳細資訊,請參閱 為您的使用者集區配置身分提供者