單點登錄流程(通俗易懂)

本文將以通俗易懂的方式闡述單點登錄的流程,在這之前你可以閱讀下比較官方的介紹單點登錄。在閱讀本文章之前,希望你對單點登錄有一定的瞭解。

話不多說,直接上單獨登錄流程:

三個系統
 系統A
 認證系統B
 系統C

  • 流程1
    請求訪問受保護系統A,系統A對請求進行攔截(Filter),攔截器會讀取Cookie信息,獲取token(登錄憑證),調用認證系統B校驗token是否有效,如果token爲空獲取token失效,Filter會將請求重定向到認證系統B的登錄頁面

  • 流程2
    用戶在認證系統登錄成功後,將token存儲在Cookie中,然後重定向到A系統中,並在將token作爲請求參數(此時瀏覽器中存儲了系統B的Cookie)

  • 流程3
    重定向到系統後A後,Filter攔截到請求參數token,然後對token進校驗,認證通過,將token存儲Cookie中(此時瀏覽器中存儲了系統B,系統A的Cookie)

  • 流程4
    用戶請求系統C,Filter攔截到用戶無token信息,將請求轉發到認證系統B

  • 流程5
    請求轉發到認證系統B後,系統B也會經過Filter,系統B發現當前Cookie中有token且有效,將請求又重定向到系統C,並將當前token作爲請求參數

  • 流程6
    流程6和流程3一樣,Filter獲取到token後,對token進行認證然後存儲到Cookie中

在訪問受保護資源時,都會從Cookie中讀取token,驗證權限。李姐單點登錄的關鍵在於瀏覽器中存儲的是A、B、C三個系統的Cookie。

Filter的作用:
 首先從Cookie中獲取token,然後再從請求參數中獲取token,然後對token進行校驗,校驗成功,將token存儲到Cookie中,其實3個系統使用的Filter都是同一個。系統A、C對token進行認證也是調用的是認證系統B的服務。

可能有的用戶會認爲認證系統B在轉發到系統A、C的時候直接將token做請求參數不安全?
 解決方式:可以採用OAuth2.0的授權碼模式,在轉發時攜帶參數爲AppId,通過AppId獲取token,然後將token存儲到Cookie

推薦一個簡單易懂的開源SSO

如有對單點登錄李姐出錯或者不合理地地方,歡迎各位指出!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章