SAML2.0 身份驗證流程

SAML 指定了三個關鍵角色:

  • 身份提供者(IdP)

    提供和維護使用者身份的一方。這可以是 ADFS 等目錄服務或自定義資料庫解決方案。

  • 服務提供商(SP)

    服務提供者是使用者嘗試登入的實際服務。這可以是網站,應用程式或使用者應該需要登入的任何服務。

  • 校長/使用者

    實際使用者發起請求,或嘗試從服務提供商 (SP) 訪問資源。

主要的 SAML 用例是基於 Web 的 SSO ,其中 SAML 過程由使用者瀏覽器內的一組重定向進行,其中使用者充當 IdP 和 SP 之間的令牌載體。

使用 SAML 的 Web Based SSO 有兩個流程 :

  • 身份提供商(IdP)已啟動

    使用者登入 IdP,然後轉發到選擇的 SP。例如,使用者登入到企業內部網並向其顯示所有可用的應用程式。

  • 服務提供商(SP)發起

    使用者嘗試登入到應用程式,但轉發到 IdP 以執行實際身份驗證。例如,使用者嘗試登入到遠端 SaaS 應用程式,但轉發到公司 IdP,以便使用者可以使用其公司憑據登入到遠端應用程式。

SP 啟動的流程可通過以下工作流程大大視覺化:

StackOverflow 文件 資料來源: 維基百科

  1. 使用者嘗試訪問特定應用程式或網頁上的資源
  2. 使用者指定他嘗試使用外部 IdP 登入。SP 將生成 SAML 斷言,並將傳遞此資訊(通常通過 POST 或 GET 變數),同時將你轉發給 IdP
  3. 使用者將根據 IdP 進行身份驗證
  4. 已簽名的斷言和令牌由 IdP 生成
  5. 簽名的斷言和令牌被轉發回(再次使用 POST 或 GET 變數)到 SP,如果成功,則在 SP 上啟動會話
  6. 此外,使用者能夠在 SP 與 SP 進行活動會話時(即通過 cookie)從 SP 請求更多資源,因此不必在每次請求時使用 IdP 進行身份驗證。