使用 SP 啟動式 SAML 登入 - Amazon Cognito

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

使用 SP 啟動式 SAML 登入

最佳做法是將 service-provider-initiated (SP 啟動) 登入實作至您的使用者集區。Amazon Cognito 會啟動您的使用者工作階段,並將其重新導向至您的 IdP。使用此方法,您可以最大程度地控制誰提出登錄請求。您也可以在特定情況下允許 IDP 啟動的登入。如需詳細資訊,請參閱 Amazon Cognito 使用者集區中的 SAML 工作階段啟動

下列程序顯示使用者如何透過 SAML 提供者登入您的使用者集區。

Amazon Cognito SP 啟動的 SAML 登入的身份驗證流程圖。
  1. 您的使用者在登入頁面輸入他們的電子郵件地址。若要判斷使用者重新導向至其 IdP,您可以在自訂應用程式中收集其電子郵件地址,或在 Web 檢視中叫用託管 UI。您可以將託管的 UI 設定為顯示 IdPs 或僅提示輸入電子郵件地址的清單。

  2. 您的應用程序調用您的用戶池重定向端點,並請求具有與應用程序對應的客戶端 ID 以及與用戶對應的 IdP ID 的會話。

  3. Amazon Cognito 會使用元素中的 SAML 請求 (選擇性地簽署) 將您的使用者重新導向至 IdP。AuthnRequest

  4. IdP 會以互動方式驗證使用者,或使用瀏覽器 Cookie 中記住的工作階段來驗證使用者。

  5. IdP 會將您的使用者重新導向至您的使用者集區 SAML 回應端點,並在其 POST 裝載中使用選擇性加密的 SAML 宣告。

    注意

    Amazon Cognito 會取消 5 分鐘內未收到回應的工作階段,並將使用者重新導向至託管的使用者介面。當您的使用者遇到此結果時,他們會收到Something went wrong錯誤訊息。

  6. 在驗證 SAML 宣告並對應回應中宣告中的使用者屬性後,Amazon Cognito 會在內部建立或更新使用者集區中的使用者設定檔。通常,您的使用者集區會將授權碼傳回給使用者的瀏覽器工作階段。

  7. 您的用戶將其授權碼提供給您的應用程序,該應用程序將代碼交換為 JSON Web 令牌(JWT)。

  8. 您的應用程序接受並處理用戶的 ID 令牌作為身份驗證,使用其訪問令牌對資源生成授權請求,並存儲其刷新令牌。

當用戶身份驗證並接收授權碼授予時,用戶池返回 ID,訪問和刷新令牌。ID 權杖是 OIDC 型身分識別管理的驗證物件。訪問令牌是具有 OAuth 2.0 範圍的授權對象。刷新令牌是在用戶當前令牌過期時生成新 ID 和訪問令牌的對象。您可以在用戶池應用程序客戶端中配置用戶令牌的持續時間。

您也可以選擇刷新令牌的持續時間。使用者的重新整理權杖到期後,必須重新登入。如果使用者透過 SAML IdP 進行驗證,則使用者的工作階段持續時間是由其權杖到期而設定,而不是使用其 IdP 的工作階段到期。您的應用程序必須存儲每個用戶的刷新令牌,並在其過期時更新其會話。託管的用戶界面在瀏覽器 cookie 中維護用戶會話,該 cookie 有效期為 1 小時。