多個系統域名使用同一認證中心做單點登錄的做法


舉個簡單又不失一般性的場景,兩個應用 A 和 B,域名分別是www.a.com、www.b.com,統一認證中心的域名是www.sso.com

1.用戶通過瀏覽器先訪問 A系統www.a.com/pageA , 這個pageA是個需要登錄才能訪問的頁面,

2.A系統發現用戶沒有登錄, 就重定向到認證中心,www.sso.com/login?redirect=www.a.com/pageA

3.瀏覽器會用這個www.sso.com/login?redirect=www.a.com/pageA 去訪問認證中心

4.認證中心一看, 沒登錄過, 認證中心就讓用戶去登錄, 登錄成功以后, 認證中心要做幾件重要的事情 :

   4.1. 建立一個session。

   4.2. 創建一個ticket (可以認為是個隨機字符串)

   4.3.  然后通過瀏覽器再重定向到A系統, url 中帶着ticket : www.a.com/pageA?ticket=T123   與此同時cookie也會發給瀏覽器,比如:Set cookie : ssoid=1234, sso.com

   4.4 A系統ticket拿到以后需要再次向認證中心做驗證,認證中心說沒錯,是我發的,那你就可以認為用戶在認證中心登錄過了

 5.建立session, 返回pageA這個資源,同時給瀏覽器發一個cookie : Set cookie : sessionid=xxxx, a.com

     注意,這時候瀏覽器實際上有兩個cookie,一個是你發的,另外一個是認證中心發的。"

6.訪問www.b.com/pageB和訪問www.a.com/pageA 唯一的不同就是不需要用戶登錄了,因為瀏覽器已經有了認證中心的cookie, 直接發給www.sso.com就可以了

將以上步驟貼個圖,更加清晰:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM