首先了解一下單點登入,目的是為了解決微服務各個服務路徑都不同。不可能每通路一個服務都進行登入一下。是以登入一個系統後,再登陸其他系統不用輸入賬号密碼被稱為單點登入。(sso)
一.登入原理圖
二.過程解析
1.在第一個項目登入時
- 當第一次通路時,通路 http://app.example.com ,當通路服務時候因為沒有登入傳回給浏覽器一個302資訊同時傳回一個 http://locahost/cas/login?service=http%3A%2F%2F %2Fj_spring_cas_security_check
- 取到項目1傳回的位址 ,這個位址就是單點登入服務的位址,單點服務會判斷是否已經對單點登入器進行登入。沒有就跳轉到單點登入頁面。
- 當單點登入後會攜帶使用者名密碼在單點登入器驗證,如果通過傳回給浏覽器服務1的位址,同時攜帶了一個ticket。
- 攜帶ticket重新通路服務1,當服務1接收到請求時,把ticket拿到單點登入器驗證,如果成功則給浏覽器傳回一個cookie.
- 浏覽器攜帶着session再次通路服務1。請求成功。
2.重新通路服務1
- 浏覽器攜帶着cookie再次通路就可以。
3.通路服務2
- 通路服務2http://app2.example.com,服務2驗證沒有登入,傳回給單點登入器,
- 浏覽器儲存着tgc,請求攜帶TGC發送給單點登入器。單點登入器驗證TGC,如果TGC通過就會給浏覽器傳回一個ticket。
- 然後浏覽器會攜帶着ticket再次請求服務2.然後伺服器會去單點登入器驗證ticket。接下來就和第一次登入時相同。