SSO 單點登入 實現機制講解

2021-07-05 05:07:17 字數 2463 閱讀 9400

單點登入有許多開發商提供解決方案,本文以yale大學sso開源專案cas為例,介紹單點登入實現機制。

sso-single sign on,單點登入

tgt-ticket granting ticket,使用者身份認證憑證票據

st-service ticket,服務許可憑證票據

tgc-ticket granting cookie,存放使用者身份認證憑證票據的cookie

sso元件主要包含:sso伺服器、sso客戶端。sso伺服器主要負責完成使用者認證、提供單點登入服務;sso客戶端部署在應用系統(web應用端與c/s架構模式應用端),使用者請求訪問應用系統的受保護資源時,需要將請求轉向sso伺服器進行身份認證、單點登入服務相關處理。

uri說明

/login

憑證請求器,引數如下:

service:客戶端要訪問的應用的標識;

renew:如果設定這個引數,sso將被繞過;不支援renew和gateway同時存在,若存在則忽略gateway;

gateway:如果設定這個引數,cas將不再問客戶端要憑證。 

憑證接收器,引數如下:

service:客戶端要訪問的應用的標識;cas在認證成功後將它的url**給客戶端;

warn:在認證**給其他服務前,客戶端必須給予提示。

/logout

單點退出,釋放cas單點登入的session

/proxyvalidate

sso伺服器驗證票據的合法性

sso單點登入訪問流程主要有以下步驟:

1. 訪問服務:sso客戶端傳送請求訪問應用系統提供的服務資源。

2. 定向認證:sso客戶端會重定向使用者請求到sso伺服器。

3. 使用者認證:使用者身份認證。

4. 發放票據:sso伺服器會產生乙個隨機的service ticket。

5. 驗證票據:sso伺服器驗證票據service ticket的合法性,驗證通過後,允許客戶端訪問服務。

6. 傳輸使用者資訊:sso伺服器驗證票據通過後,傳輸使用者認證結果資訊給客戶端。

7. 單點退出:使用者退出單點登入。

sso單點登入訪問總共會涉及以上6個步驟,但使用者不同的sso訪問可能只會涉及到幾個步驟,我們把sso訪問流程我們分為5種例項情況介紹:登入點首次訪問、登入點二次訪問、單點首次訪問、單點二次訪問、單點退出。這5種例項應當可以比較全面地展示sso訪問實現的機制。

注:文中存在以下術語詞彙,解釋如下。

登入點首次訪問:是指首次訪問應用系統,進入登入頁面的過程。登入點二次訪問:是指在上述」登入點「,再次進行正常的訪問」登入點「的過程。

單點首次訪問:是指已經在上述「登入點」登入後,再首次訪問另乙個子系統進行訪問的過程。單點二次訪問:是指已經在上述「單點首次訪問",再次進行正常的訪問」單點「的過程。

登入點首次訪問

說明:使用者首次訪問」登入點「system1,session中沒有使用者上下文,於是將請求位址包裝為service引數,轉向sso伺服器」定向認證「,sso伺服器返回登入頁面,使用者錄入使用者名稱、密碼等憑證資訊,提交給sso伺服器,sso伺服器進行認證,認證成功後,生成tgt,再根據tgt發放票據st,返回響應給瀏覽器,瀏覽器帶著票據st的service引數的請求,請求sso伺服器驗證票據,驗證票據成功後,返回給瀏覽器使用者資訊(通過cas協議約定的xml格式傳遞資料解析轉換成需要的使用者資訊),設定session使用者上下文、cookie中設定tgc。

登入點二次訪問

說明:使用者在上述「登入點首次訪問」登入成功後,再次訪問登入點的應用服務時,判斷session中已經存在使用者上下文,就不再攔截,直接轉向到需要訪問的目標服務資源。

單點首次訪問

說明:同上述「登入點首次訪問」的說明。

單點二次訪問

與「登入點二次訪問」相似。

單點退出

說明:使用者單點登入後,有乙個全域性的過濾器singlesignoutfilter對訪問的安全資源的ticket,sessionid記錄到乙個對映表,我們暫稱其為票據會話對映表。在乙個子系統(如system1)執行單點退出"/logout"時,先銷毀system1的本地session,再向sso伺服器傳送單點退出請求,sso伺服器接到這個請求後,將使用者認證票據tgt銷毀,清除瀏覽器cookie中的tgc,再讀取票據會話對映表,將其對應的票據st,session全部銷毀。這樣使用者再訪問時各子系統時,是單點退出狀態,就需要重新登入。

我們再詳細從cas原始碼中看看sso單點退出實現機制。

sso客戶端涉及原始碼類圖如下:

sso伺服器端單點退出涉及原始碼類圖如下:

單點登入系統SSO概述 單點登入講解(1)

本專案主要講解的是單點登入系統的原理及其實現。本章主要講解的是單點登入系統的概述部分。單點登入顧名思義就是從乙個系統進行登入操作,就可以訪問其他附近的系統。單點登入避免了使用者重複的登入過程,在整個核心業務中起到了乙個基層的輔助作用。關鍵步驟 當使用者對業務系統發起訪問請求的時候,我們將其攔截下來,...

系統的講解 SSO單點登入

目錄技術實現 小結擴充套件 sso 英文全稱 single sign on,單點登入。在多個應用系統中,只需要登入一次,就可以訪問其他相互信任的應用系統。比如 網 www.taobao.com 天貓網 www.tmall.com 聚划算 ju.taobao.com 飛豬網 www.fliggy.co...

系統的講解 SSO單點登入

sso 英文全稱 single sign on,單點登入。在多個應用系統中,只需要登入一次,就可以訪問其他相互信任的應用系統。比如 網 www.taobao.com 天貓網 www.tmall.com 聚划算 ju.taobao.com 飛豬網 www.fliggy.com 等,這些都是阿里巴巴集團...