SP 與 IdP 起始的 SSO

本文討論 SP 與 IdP 在兩個聯合部署之間起始的 SSO 的概念,以及這兩個流程之間的差異。

本文也說明聯合 SSO 期間,IdP 與 SP 之間共用的使用者狀態或傳回 URL 的概念,稱為:

本文顯示使用 SAML 2.0 通訊協定的範例,但其他通訊協定也適用相同。

同盟 SSO 流程

拓樸

一般同盟部署是由下列實體組成:

服務點初始 SSO

「SP 起始的 SSO」流程是從「SP 安全網域」啟動的「聯合 SSO」作業,由 SP 同盟伺服器建立「聯合認證要求」並將使用者重新導向至 IdP,其中包含訊息和代表作業狀態的一些短字串:

請注意作業狀態:一般而言,訊息中共用的狀態不應太長,因為可能會中斷重導流程,而重導 URL 長度超過瀏覽器可處理的 URL 長度上限。因此,在 SP 起始 SSO 期間一律偏好使用 SP

要觸發「SP 起始的 SSO」流程有兩種方式:

存取資源

這是「聯合 SSO」作業最常見的流程,使用者嘗試存取受保護的資源,而 SSO 系統在程式實際執行時決定使用者必須透過「聯合 SSO」進行認證。

使用此流程的使用案例可以是:

流程包含下列步驟:

  1. 使用者的瀏覽器要求存取受保護資源

  2. 「SSO Web 代理程式」會攔截呼叫,決定需要認證使用者,並發出重新導向回使用者的瀏覽器。

  3. 使用者的瀏覽器會存取由「SSO Web 代理程式」重新導向的 SSO 伺服器

  4. SSO 伺服器決定應透過聯合 SSO 認證使用者、選取 IdP、建立 SAML 2.0 AuthnRequest 訊息、儲存 SSO 伺服器存放區中的作業狀態,並將使用者的瀏覽器重新導向至 IdP (含 SAML 訊息),以及參照 SP 之作業狀態的字串

  5. 使用者的瀏覽器以 AuthnRequest 訊息存取 IdP SAML 2.0 服務。

Accessing_Resources_Screen.jpg 圖解說明

IdP 收到 SAML 2.0 AuthnRequest 訊息之後,伺服器會判斷使用者是否需要進行查問 (尚未認證,階段作業已逾時 ...)。在可能識別使用者之後,就會繼續執行聯合 SSO 流程。

  1. IdP 會建立一個「SAML 2.0 宣告」的「SSO 回應」,其中包含使用者資訊以及認證資料,並將使用者的瀏覽器重新導向至 SP,其中包含訊息和 RelayState 參數

  2. 使用者的瀏覽器顯示 SP 伺服器的 SSO 回應

  3. SP 會驗證 SAML 2.0 宣告,並為使用者建立 SSO 階段作業。SSO 伺服器接著會將使用者的瀏覽器重新導向回原先要求的資源

  4. 使用者的瀏覽器要求資源的存取權。此時 SSO Web 代理程式將授予資源存取權

  5. Web 應用程式會傳回使用者的瀏覽器回應

Accessing_Resources_Response_Screen.jpg 圖解說明

如前所述,此流程是最常使用的,因為「聯合 SSO」只會在程式實際執行時由 SSO 伺服器觸發,而沒有「SP 安全網域」中的任何其他元件需要瞭解「聯合」。

呼叫同盟 SP 服務

此流程未廣泛使用,因為這表示藉由存取 SP 伺服器的服務在 SP 啟動聯合 SSO,並忽略使用者可能已經擁有的任何現有有效階段作業。因此應避免發生此情況,因為會影響效能:

使用此流程的使用案例可以是:

使用此流程的使用案例涉及下列步驟:

  1. 使用者的瀏覽器會存取 SP 以啟動「聯合 SSO」流程 (選擇性指定)

    1. 聯合 SSO 完成後,應將使用者瀏覽器重新導向至該處的 URL

    2. 要使用的 IdP

  2. SSO 伺服器選取 IdP (若未提供的話),並選取預設傳回 URL (若未提供的話)、建立 SAML 2.0 AuthnRequest 訊息、儲存 SSO 伺服器存放區中的作業狀態,並將使用者的瀏覽器重導至 IdP (含 SAML 訊息),以及參照 SP 之作業狀態的字串

  3. 使用者的瀏覽器以 AuthnRequest 訊息存取 IdP SAML 2.0 服務。

IdP_Service_with_AuthnRequest_Screen.jpg 圖解說明

IdP 收到 SAML 2.0 AuthnRequest 訊息之後,伺服器會判斷使用者是否需要進行查問 (尚未認證,階段作業已逾時 ...)。在可能識別使用者之後,同盟 SSO 流程就會繼續:

  1. IdP 會建立一個「SAML 2.0 宣告」的「SSO 回應」,其中包含使用者資訊以及認證資料,並將使用者的瀏覽器重新導向至 SP,其中包含訊息和 RelayState 參數

  2. 使用者的瀏覽器顯示 SP 伺服器的 SSO 回應

  3. SP 會驗證 SAML 2.0 宣告,並為使用者建立 SSO 階段作業。SSO 伺服器接著會將使用者的瀏覽器重新導向回原先要求的資源

  4. 使用者的瀏覽器要求資源的存取權。此時 SSO Web 代理程式將授予資源存取權

  5. Web 應用程式會傳回使用者的瀏覽器回應

IdP_Service_with_Response_Screen.jpg 圖解說明

靜態觸發「聯合 SSO」,即使使用者已經有有效的 SSO 階段作業,也應該很少使用此流程。此外,這表示 SP 安全網域中的部分元件注意 SP 服務。

IdP 起始的 SSO

IdP 起始的 SSO 流程是從 IdP 安全網域啟動的「聯合 SSO」作業,由建立「聯合 SSO 回應」的 IdP「聯合」伺服器所啟動,並將使用者重新導向至 SP 並提供回應訊息和選擇性的作業狀態:

如上節所述,訊息中共用的狀態不應太長,因為這可能會中斷重導流程,且重導 URL 長度超過瀏覽器可處理 URL 的長度上限。

當 IdP 使用者需要存取 SP 所代管的資源時,通常會使用此流程,但它不是「聯合 SSO」的最佳方法,因為它會忽略使用者可能已擁有之 SP 的任何現有有效階段作業。因此應避免發生此情況,因為會影響效能:

使用此流程的使用案例可以是:

使用此流程的使用案例涉及下列步驟:

  1. 使用者的瀏覽器會透過指定的方式存取 IdP 來啟動「聯合 SSO」流程

    1. 要使用的服務點

    2. (選擇性) 同盟 SSO 完成後,應將使用者瀏覽器重新導向至該處的 URL

  2. 識別使用者之後,IdP 會建立一個「SAML 2.0 宣告」的「SSO 回應」,其中包含使用者資訊和認證資料,並將使用者的瀏覽器重新導向至具有訊息和 RelayState 參數的 SP。

  3. 使用者的瀏覽器顯示 SP 伺服器的 SSO 回應

  4. SP 會驗證 SAML 2.0 宣告,並為使用者建立 SSO 階段作業。SSO 伺服器接著會將使用者的瀏覽器重新導向回原先要求的資源

  5. 使用者的瀏覽器要求資源的存取權。此時 SSO Web 代理程式將授予資源存取權

  6. Web 應用程式會傳回使用者的瀏覽器回應

SSO_Response_Screen.jpg 圖解說明

結論

如各種流程中所見,SSO 伺服器在執行階段認為 SSO 伺服器需要時,SSO 伺服器會觸發聯合 SSO 的最佳方法。其他案例具有靜態方法,而且一律執行「聯合 SSO」流程,即使不需要該流程 (例如,如果使用者已經有有效的階段作業),並執行不必要的「聯合」作業影響:

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,瀏覽 education.oracle.com/learning-explorer 成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center