天天看點

cas 單點登入_CAS單點登入原了解析

SSO英文全稱Single Sign On,單點登入。SSO是在多個應用系統中,使用者隻需要登入一次就可以通路所有互相信任的應用系統。CAS是一種基于http協定的B/S應用系統單點登入實作方案,認識CAS之前首先要熟悉http協定、Session與Cookie等Web開發基本知識。

1.http協定

HTTP是一個用戶端和伺服器端請求和應答的标準,我們全後端開發對接的Rest接口就是基于http協定。http協定包含http請求消息(HttpRequest)和http應答消息(HttpResponse)兩部分。

  • 了解http協定是無狀态協定的含義
  • 熟記常見的http協定狀态碼,其中302等與cas相關
  • 熟記常見的http請求頭,其中Cookie等與cas相關
  • 熟記常見的http應答頭,其中Set-Cookie、Location等與cas相關
2.Session與Cookie會話機制

http協定本身是無狀态的,但有時候我們需要http請求保持狀态,我們引入Session與Cookie。

Session用在服務端,用于存儲目前所有用戶端需要保持的狀态值,并為每一個用戶端生成一個唯一編碼,然後通過http響應頭Set-Cookie将這個編碼發送給用戶端。

Cookie用在用戶端,用于記錄後端發來過的唯一編碼,該編碼與服務端上的對應的狀态值對應,在下一次請求的時候通過http請求頭Cookie帶上這個編碼,服務端就能根據這個編碼擷取該用戶端之前記錄的所有狀态值。

cas 單點登入_CAS單點登入原了解析
3.普通登入

登入成功後,在Session中寫入登入使用者的資訊,退出時清空Session中的使用者資訊。可以通過filter實作。

4.CAS單點登入| 兩次前端跳轉、一次後端驗證 4.1首次通路(通路第一個應用系統App1)

CAS首次登入會經過兩次前端跳轉、一次後端驗證。在應用系統端需要內建CasClient的jar包,把其中的filter配置到站點web.xml中,用于攔截請求、判斷登入、發起跳轉或發起驗證等。在SSO伺服器上部署CasServer的war包,需要配置使用者資料源,根據需求修改登入頁面。

cas 單點登入_CAS單點登入原了解析
第一次跳轉

:用戶端通路應用系統,應用系統判斷Session發現未登入,傳回302跳轉到sso登入頁面,并傳遞service參數給sso,該service參數有兩個作用:

  1. service一般傳遞應用系統url位址,用于sso認證通過後回跳到應用系統;
  2. service參數同時會被cas服務端的作為cas用戶端的唯一标記記錄下來,用于後期比對相應的認證憑據;
第二次跳轉

:浏覽器顯示登入頁面,使用者輸入賬号密碼登入成功後,sso會傳回302跳轉回到原來請求的應用系統頁面,并攜帶ticket參數,作為認證票據,同時通過Set-Cookie向浏覽器記錄TGT,(TGT的作用将在下一個應用系統需要登入的時候展現出作用,是避免重複登入的關鍵)

一次背景驗證

:應用系統接收到帶有ticket的請求後,從背景直接向sso伺服器發起一個http請求,将service和ticket作為參數,用于驗證ticket的有效性;如果ticket有效,sso伺服器将傳回該ticket對應的登入使用者名。

繼續閱讀