SP 與 IdP 起始的 SSO
本文討論 SP 與 IdP 在兩個聯合部署之間起始的 SSO 的概念,以及這兩個流程之間的差異。
本文也說明聯合 SSO 期間,IdP 與 SP 之間共用的使用者狀態或傳回 URL 的概念,稱為:
-
RelayStatefor SAML 2.0 TARGET for SAML 1.1wctxfor WS-Fed 1.1 -
OpenID 2.0 的
openid.return_to(傳回 SSO) -
URL 可以包含代表 SP 上使用者狀態的查詢參數)
本文顯示使用 SAML 2.0 通訊協定的範例,但其他通訊協定也適用相同。
同盟 SSO 流程
拓樸
一般同盟部署是由下列實體組成:
-
IdP伺服器的安全網域,其中使用者具有帳戶且發生驗證的位置 -
SP 伺服器的安全網域
-
SP 同盟伺服器
-
SSO 伺服器 (有時,SSO 伺服器和 SP Federation Server 都是相同的個體)
-
與 SSO 伺服器整合的 SSO Web 代理程式,可保護資源,並確保使用者獲得認證並獲授權存取資源。若未這麼做,可能會造成認證流程或授權失敗
-
資源或 Web 應用程式

-
服務點初始 SSO
「SP 起始的 SSO」流程是從「SP 安全網域」啟動的「聯合 SSO」作業,由 SP 同盟伺服器建立「聯合認證要求」並將使用者重新導向至 IdP,其中包含訊息和代表作業狀態的一些短字串:
-
「同盟認證要求」會根據使用的協定而有所不同:
-
SAML 2.0:AuthnRequest
-
SAML 1.1:含有代表 SP 之參數的 URL
-
WS-Fed:含有代表 SP 和其他選擇性參數之
wtrealm參數的 URL -
OpenID 2.0:OpenID 2.0 要求
-
-
作業狀態 (使用者在「聯合 SSO」作業開始之前執行) 會以傳送給 IdP 的訊息 (而不是整個狀態) 傳送,而是指向 SP 伺服器執行時期儲存中狀態的指標。根據協定,此資訊會以不同方式傳達:
-
SAML 2.0:
RelayState參數 -
SAML 1.1:TARGET 參數
-
WS-Fed:
wctx參數 -
OpenID 2.0:
openid.return_to參數是 SP URL,此 SP URL 是在 SP 在程式實際執行時產生的 IdP 認證後重新導向使用者,因此可能包含參照作業狀態的查詢參數
-
請注意作業狀態:一般而言,訊息中共用的狀態不應太長,因為可能會中斷重導流程,而重導 URL 長度超過瀏覽器可處理的 URL 長度上限。因此,在 SP 起始 SSO 期間一律偏好使用 SP
-
將作業狀態儲存在 SP 的記憶體 / 資料庫儲存體
-
以
RelayState/TARGET/wctx指標傳送至作業狀態
要觸發「SP 起始的 SSO」流程有兩種方式:
-
使用者要求存取啟動「同盟 SSO」流程的資源。執行「聯合 SSO」作業之後,系統會將使用者重導回第一個位置所要求的資源。
-
或者,使用者可直接存取 SP 伺服器上的服務,以明確使用遠端 IdP 啟動「聯合 SSO」流程。在此情況下,使用者通常會提供執行「聯合 SSO」作業之後,應將使用者重新導向至該處的 URL。
存取資源
這是「聯合 SSO」作業最常見的流程,使用者嘗試存取受保護的資源,而 SSO 系統在程式實際執行時決定使用者必須透過「聯合 SSO」進行認證。
使用此流程的使用案例可以是:
-
使用者按一下參照受保護資源之任何頁面上的連結
-
使用者按一下參照受保護資源之入口網站頁面上的連結
-
使用者具有受保護資源的書籤
流程包含下列步驟:
-
使用者的瀏覽器要求存取受保護資源
-
「SSO Web 代理程式」會攔截呼叫,決定需要認證使用者,並發出重新導向回使用者的瀏覽器。
-
使用者的瀏覽器會存取由「SSO Web 代理程式」重新導向的 SSO 伺服器
-
SSO 伺服器決定應透過聯合 SSO 認證使用者、選取
IdP、建立 SAML 2.0 AuthnRequest 訊息、儲存 SSO 伺服器存放區中的作業狀態,並將使用者的瀏覽器重新導向至IdP(含 SAML 訊息),以及參照 SP 之作業狀態的字串 -
使用者的瀏覽器以 AuthnRequest 訊息存取
IdPSAML 2.0 服務。

Accessing_Resources_Screen.jpg 圖解說明
IdP 收到 SAML 2.0 AuthnRequest 訊息之後,伺服器會判斷使用者是否需要進行查問 (尚未認證,階段作業已逾時 ...)。在可能識別使用者之後,就會繼續執行聯合 SSO 流程。
-
IdP會建立一個「SAML 2.0 宣告」的「SSO 回應」,其中包含使用者資訊以及認證資料,並將使用者的瀏覽器重新導向至 SP,其中包含訊息和RelayState參數 -
使用者的瀏覽器顯示 SP 伺服器的 SSO 回應
-
SP 會驗證 SAML 2.0 宣告,並為使用者建立 SSO 階段作業。SSO 伺服器接著會將使用者的瀏覽器重新導向回原先要求的資源
-
使用者的瀏覽器要求資源的存取權。此時 SSO Web 代理程式將授予資源存取權
-
Web 應用程式會傳回使用者的瀏覽器回應

Accessing_Resources_Response_Screen.jpg 圖解說明
如前所述,此流程是最常使用的,因為「聯合 SSO」只會在程式實際執行時由 SSO 伺服器觸發,而沒有「SP 安全網域」中的任何其他元件需要瞭解「聯合」。
呼叫同盟 SP 服務
此流程未廣泛使用,因為這表示藉由存取 SP 伺服器的服務在 SP 啟動聯合 SSO,並忽略使用者可能已經擁有的任何現有有效階段作業。因此應避免發生此情況,因為會影響效能:
-
同盟 SSO 的伺服器相當昂貴 (某些協定的 XML、保護訊息的數位簽章、伺服器之間的通訊)
-
使用者的瀏覽器體驗將重新導向至不同的網域,造成延遲,使用者才能存取目標受保護資源。
使用此流程的使用案例可以是:
-
使用者按一下參照受保護資源之任何頁面上的連結 (異常)
-
使用者按一下參照受保護資源之入口網站頁面上的連結
使用此流程的使用案例涉及下列步驟:
-
使用者的瀏覽器會存取 SP 以啟動「聯合 SSO」流程 (選擇性指定)
-
聯合 SSO 完成後,應將使用者瀏覽器重新導向至該處的 URL
-
要使用的
IdP
-
-
SSO 伺服器選取
IdP(若未提供的話),並選取預設傳回 URL (若未提供的話)、建立 SAML 2.0 AuthnRequest 訊息、儲存 SSO 伺服器存放區中的作業狀態,並將使用者的瀏覽器重導至IdP(含 SAML 訊息),以及參照 SP 之作業狀態的字串 -
使用者的瀏覽器以 AuthnRequest 訊息存取
IdPSAML 2.0 服務。

IdP_Service_with_AuthnRequest_Screen.jpg 圖解說明
IdP 收到 SAML 2.0 AuthnRequest 訊息之後,伺服器會判斷使用者是否需要進行查問 (尚未認證,階段作業已逾時 ...)。在可能識別使用者之後,同盟 SSO 流程就會繼續:
-
IdP會建立一個「SAML 2.0 宣告」的「SSO 回應」,其中包含使用者資訊以及認證資料,並將使用者的瀏覽器重新導向至 SP,其中包含訊息和RelayState參數 -
使用者的瀏覽器顯示 SP 伺服器的 SSO 回應
-
SP 會驗證 SAML 2.0 宣告,並為使用者建立 SSO 階段作業。SSO 伺服器接著會將使用者的瀏覽器重新導向回原先要求的資源
-
使用者的瀏覽器要求資源的存取權。此時 SSO Web 代理程式將授予資源存取權
-
Web 應用程式會傳回使用者的瀏覽器回應

IdP_Service_with_Response_Screen.jpg 圖解說明
靜態觸發「聯合 SSO」,即使使用者已經有有效的 SSO 階段作業,也應該很少使用此流程。此外,這表示 SP 安全網域中的部分元件注意 SP 服務。
IdP 起始的 SSO
IdP 起始的 SSO 流程是從 IdP 安全網域啟動的「聯合 SSO」作業,由建立「聯合 SSO 回應」的 IdP「聯合」伺服器所啟動,並將使用者重新導向至 SP 並提供回應訊息和選擇性的作業狀態:
-
「聯合 SSO 回應」會根據使用的協定而有所不同:
-
SAML 2.0:SAMLResponse (含宣告)
-
SAML 1.1:使用宣告回應
-
WS-Fed:使用宣告回應
-
OpenID 2.0:OpenID 2.0 回應
-
-
此流程中的選擇性作業狀態顯示使用者在 SP 完成聯合 SSO 之後應被重導至哪個 URL。如果遺漏,SP 必須決定要將使用者重新導向的位置。此資訊會根據協定以不同方式傳達:
-
SAML 2.0:
RelayState參數 -
SAML 1.1:
TARGET參數 -
WS-Fed:
wctx參數 OpenID 2.0:此協定不支援IdP起始的 SSO 流程。
-
如上節所述,訊息中共用的狀態不應太長,因為這可能會中斷重導流程,且重導 URL 長度超過瀏覽器可處理 URL 的長度上限。
當 IdP 使用者需要存取 SP 所代管的資源時,通常會使用此流程,但它不是「聯合 SSO」的最佳方法,因為它會忽略使用者可能已擁有之 SP 的任何現有有效階段作業。因此應避免發生此情況,因為會影響效能:
-
同盟 SSO 的伺服器相當昂貴 (某些協定的 XML、保護訊息的數位簽章、伺服器之間的通訊)
-
使用者的瀏覽器體驗將重新導向至不同的網域,造成延遲,使用者才能存取目標受保護資源。
使用此流程的使用案例可以是:
- 使用者在參照 SP 之受保護資源的
IdP入口網站頁面上按一下連結。
使用此流程的使用案例涉及下列步驟:
-
使用者的瀏覽器會透過指定的方式存取
IdP來啟動「聯合 SSO」流程-
要使用的服務點
-
(選擇性) 同盟 SSO 完成後,應將使用者瀏覽器重新導向至該處的 URL
-
-
識別使用者之後,
IdP會建立一個「SAML 2.0 宣告」的「SSO 回應」,其中包含使用者資訊和認證資料,並將使用者的瀏覽器重新導向至具有訊息和RelayState參數的 SP。 -
使用者的瀏覽器顯示 SP 伺服器的 SSO 回應
-
SP 會驗證 SAML 2.0 宣告,並為使用者建立 SSO 階段作業。SSO 伺服器接著會將使用者的瀏覽器重新導向回原先要求的資源
-
使用者的瀏覽器要求資源的存取權。此時 SSO Web 代理程式將授予資源存取權
-
Web 應用程式會傳回使用者的瀏覽器回應

結論
如各種流程中所見,SSO 伺服器在執行階段認為 SSO 伺服器需要時,SSO 伺服器會觸發聯合 SSO 的最佳方法。其他案例具有靜態方法,而且一律執行「聯合 SSO」流程,即使不需要該流程 (例如,如果使用者已經有有效的階段作業),並執行不必要的「聯合」作業影響:
-
伺服器的效能 (CPU、LDAP/RDBMS 互動 ...)
-
使用者的回應時間,以執行包含重新導向的「聯合 SSO」作業所需的時間為基礎。
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,瀏覽 education.oracle.com/learning-explorer 成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。