springboot前後端分離接入cas技術方案及實現(一)

    之前也做過好幾個系統的sso接入,都是基於ssm架構的項目,而且沒有做前後端分離,接入相對簡單,最近有一個基於springboot+shiro+jwt的前後端分離項目需要接入sso平臺,大體過程是知道的,但是具體技術實現沒有頭緒,網上相關的資料也比較少,而且很粗略,經過幾天的研究,踩了許多的地雷,終於完成了sso接入,現在就把完整的方案分享一下和具體實現以及源碼都分享一下。

  1. 實現知識管理平臺的單點登陸接入。
  2. 能夠通過統一身份認證平臺進行登錄登出操作。

因爲項目採用shiro+jwt的認證方式, shiro 官方在 1.2 中就表明已經棄用了 CasFilter,故引入 pac4j 來做單點登錄的控制, pac4j支持對shiro的調用。重寫ShiroConfig整合cas權限認證,通過pac4j實現cas的跳轉。

具體分析如下:

  1. 當用戶第一次登錄應用系統時,過濾器會攔截,攜帶回跳的項目地址重定向到sso統一認證平臺:

      eg:http://127.0.0.1:8085/cas/login?service=http//127.0.0.1:8081/index

     2.登陸成功後sso會生成一個ticket一併返回給應用系統,作爲系統的認證憑據,然後跳回系統:

      http//127.0.0.1:8081/index?ticket=*******

     3..攔截到請求,通過解析拿到對應的登陸成功的用戶名,根據用戶名去查找對應的角色權限,再用jwt生成token,攜帶登陸成功所需要的數據重定向到前端頁面,完成登錄成功操作。

  •      4.登出操作時,會並銷燬token信息,重定向到sso統一認證平臺。

  1. 登錄接口(login)
  2. 登出接口(logout)

 

    具體代碼實現請看:springboot前後端分離接入cas技術方案及實現(二)

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