博客 / 詳情

返回

XXL-SSO v2.0.0 發佈|單點登錄框架

Release Notes

  • 1、【升級】項目升級 SpringBoot3 + JDK17;
  • 2、【升級】升級多項依賴至較新版本,如jakarta、spring等,適配JDK17;

項目接入示例

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、登錄態自動延期:支持自定義登錄態有效期窗口,當登錄態有效期窗口過半時自動順延一個週期;
user avatar ride_wind 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.