Release Notes
- 1、【重構】XXL-SSO 核心代碼重構,基於“模塊化”與“漸進式”設計思想,在輕量級、高擴展、漸進式的基礎上,強化多登錄類型、多認證方式等系統能力;
- 2、【增強】漸進式:支持漸進式集成接入使用,從簡單到複雜場景,包括:單體系統(Web常規登錄)、複雜企業內多系統(CAS單點登錄)、互聯網多端&高併發系統(Native登錄) 等,均可接入使用;
-
3、【增強】多登錄類型:
- 登錄態持久化組價(LoginStore):提供登錄態/會話數據持久化能力;官方提供Cache、Redis等組件實現,可選用接入或自定義擴展;
- 登錄認證組件(Auth):提供系統登錄/認證集成能力;官方提供 Filter(Servlet)和Interceptor(Spring)等實現,可選用接入或自定義擴展;
- 登錄用户模型(LoginInfo):提供統一登錄用户模型,且模型支持擴展存儲自定義擴展屬性;
-
4、【增強】多登錄類型:
- Web常規登錄:適用於常規“單體系統”場景;限制相關Web系統部署在相同域名下,登錄憑證存儲在公共域名下;
- Native登錄:適用於“移動端、小程序、前後端分離、客户端”等系統場景;適用於無Cookie場景,天然不受限域名。支持多端登錄、以及登錄態共享,但是登錄憑證需要客户端管理維護;
- CAS單點登錄:適用於“多系統跨域、企業多系統統一登錄”等系統場景;解決了系統 跨域登錄認證、統一登錄認證 問題;但是需要單獨部署CAS認證中心、提供單點登錄相關基礎能力;
- 5、【新增】安全性:針對系統框架多個模塊落地安全性設計,包括:登錄Token安全設計、客户端登錄憑證Cookie安全設計、CAS跳轉Ticket安全設計 等;
- 6、【優化】升級多項依賴至較新版本;
項目接入示例
XXL-SSO 作為單點登錄框架,支持業務漸進式集成接入使用。結合系統及業務特徵差異,倉庫代碼提供三種業務中接入示例:
- 1、Web常規登錄:適用於常規“單體系統”場景;限制相關Web系統部署在相同域名下,登錄憑證存儲在公共域名下;
- 2、Native登錄:適用於“移動端、小程序、前後端分離、客户端”等系統場景;適用於無Cookie場景,天然不受限域名。支持多端登錄、以及登錄態共享,但是登錄憑證需要客户端管理維護;
- 3、CAS單點登錄:適用於“多系統跨域、企業多系統統一登錄”等系統場景;解決了系統 跨域登錄認證、統一登錄認證 問題;但是需要單獨部署CAS認證中心、提供單點登錄相關基礎能力;
此處以 “Web常規登錄” 為例進行講解:
(*三種登錄方式完整接入示例參考項目文檔,如有需求可前往查看 *)
第一步:添加maven依賴以及 XXL-SSO 配置文件
### xxl-sso 登錄憑證/token傳輸key, 用於cookie、header登錄憑證傳輸;
xxl-sso.token.key=xxl_sso_token
### xxl-sso 登錄憑證/token超時時間,單位毫秒;
xxl-sso.token.timeout=604800000
### xxl-sso 登錄態持久化配置,如下為Redis組件相關配置;
xxl-sso.store.redis.nodes=127.0.0.1:6379
xxl-sso.store.redis.user=
xxl-sso.store.redis.password=
### xxl-sso 登錄態存儲,Redis key前綴
xxl-sso.store.redis.keyprefix=xxl_sso_user:
### xxl-sso 客户端過濾排除路徑,如 "/excluded/xpath"?"/excluded/xpath,/excluded/*"
xxl-sso.client.excluded.paths=/weblogin/*,/static/**
### xxl-sso 客户端登錄頁路徑
xxl.sso.client.login.path=/weblogin/login
第二部:配置 XXL-SSO 組件
配置組件代碼參考:xxl-sso-sample-web/src/main/java/com/xxl/sso/sample/config/XxlSsoConfig
第三部:代碼中接入使用
接入 XXL-SSO 之後,業務可通過 註解 or API 進行 登錄驗證、權限驗證。一行註解/代碼即可實現 登錄認證、權限認證、角色認證 等,接入靈活方便;
-
註解方式:
// a、限制需要登錄(默認設置,等同於不配置註解),但是不針對權限、或角色進行校驗; @XxlSso @RequestMapping("/test") @ResponseBody public Response<String> test() { ... } // b、不需要登錄 @XxlSso(login = false) // c、限制需要登錄;限制需要擁有指定註解 @XxlSso(permission = "user:add") // d、限制需要登錄;限制需要擁有指定角色 @XxlSso(role = "admin") -
API方式:
// a、登錄操作:登錄並獲取登錄憑證(token)。 Response<String> loginResult = XxlSsoHelper.login(loginInfo); String token = loginResult.getData(); // b、登錄信息更新操作:將會觸發登錄有效期續期; Response<String> result = XxlSsoHelper.loginUpdate(loginInfo); // c、註銷操作:將會註銷登錄態; Response<String> result = XxlSsoHelper.logout(token); // d、登錄態驗證操作:將會驗證登錄態,返回已登錄用户信息; Response<LoginInfo> result = XxlSsoHelper.loginCheck(token); // e、權限角色校驗操作:校驗登錄用户是否擁有指定角色; Response<String> result = XxlSsoHelper.hasRole(LoginInfo loginInfo, String role); // f、權限項校驗操作:校驗登錄用户是否擁有指定權限項; Response<String> result = XxlSsoHelper.hasPermission(LoginInfo loginInfo, String permission);項目簡介
XXL-SSO 是一個 單點登錄框架,只需要登錄一次就可以訪問所有相互信任的應用系統。具備 “輕量級、高擴展、漸進式” 的等特性,支持 “登錄認證、權限認證、角色認證、分佈式會話認證、單點登錄、Web常規登錄、前後端分離” 等多登錄及認證類型,現已開放源代碼,開箱即用。
文檔地址
- 中文文檔:https://www.xuxueli.com/xxl-sso/
- Github:https://github.com/xuxueli/xxl-sso
特性
- 1、易用性:支持註解/API多方式接入,一行註解/代碼即可實現 登錄認證、權限認證、角色認證 等,接入靈活方便;
- 2、輕量級:針對第三方組件、部署環境零依賴,部署及接入低成本、輕量級;
-
3、高擴展:得益於模塊化抽象設計,各框架組件可靈活擴展;可選用官方提供組件實現或自定義擴展。
- 登錄態持久化組價(LoginStore):提供登錄態/會話數據持久化能力;官方提供Cache、Redis等組件實現,可選用接入或自定義擴展;
- 登錄認證組件(Auth):提供系統登錄/認證集成能力;官方提供 Filter(Servlet)和Interceptor(Spring)等實現,可選用接入或自定義擴展;
- 登錄用户模型(LoginInfo):提供統一登錄用户模型,且模型支持擴展存儲自定義擴展屬性;
- 4、漸進式:支持漸進式集成接入使用,從簡單到複雜場景,包括:單體系統(Web常規登錄)、複雜企業內多系統(CAS單點登錄)、互聯網多端&高併發系統(Native登錄) 等,均可接入使用;
-
5、多登錄類型:
- Web常規登錄:適用於常規“單體系統”場景;限制相關Web系統部署在相同域名下,登錄憑證存儲在公共域名下;
- Native登錄:適用於“移動端、小程序、前後端分離、客户端”等系統場景;適用於無Cookie場景,天然不受限域名。支持多端登錄、以及登錄態共享,但是登錄憑證需要客户端管理維護;
- CAS單點登錄:適用於“多系統跨域、企業多系統統一登錄”等系統場景;解決了系統 跨域登錄認證、統一登錄認證 問題;但是需要單獨部署CAS認證中心、提供單點登錄相關基礎能力;
-
6、多認證方式:
- 登錄認證:本質為驗證用户身份的過程,目的是確認“你是誰”,確保訪問者合法可信;
- 權限認證:在用户身份認證通過後,校驗用户是否具備訪問特定資源的權限,決定“你能做什麼”;認證維度是“權限”;
- 角色認證:在用户身份認證通過後,校驗用户是否具備訪問特定資源的權限,決定“你能做什麼”;認證維度是“角色”;
- 7、分佈式會話/認證:支持分佈式登錄以及會話認證,集成分佈式系統可共享的 登錄態持久化組價(LoginStore),可選用或參考官方RedisLoginStore;
- 8、安全性:針對系統框架多個模塊落地安全性設計,包括:登錄Token安全設計、客户端登錄憑證Cookie安全設計、CAS跳轉Ticket安全設計 等;
- 9、單點登錄:針對CAS單點登錄場景,提供單點登錄及註銷能力;
- 10、跨域登錄認證:針對CAS單點登錄場景,支持跨域Web應用接入,解決了系統 跨域登錄認證 問題;
- 11、高可用/HA:針對CAS單點登錄場景,CAS認證中心支持集羣部署,並可藉助LoginStore實現登錄態共享,從而實現系統水平擴展以及高可用;
- 12、多端登錄認證:針對多端登錄場景,如 Web、移動端、小程序 等多端,提供多端登錄及認證能力;
- 13、前後端分離:針對前後端分離系統,提供 Native登錄 方案,支持前後端分離場景登錄認證能力;
- 14、記住密碼:支持記住密碼功能;記住密碼時,支持登錄態自動延期;未記住密碼時,關閉瀏覽器則登錄態失效;
- 15、登錄態自動延期:支持自定義登錄態有效期窗口,當登錄態有效期窗口過半時自動順延一個週期;