舉個簡單又不失一般性的場景,兩個應用 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就可以了
將以上步驟貼個圖,更加清晰:

