成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

XXL-SSO分布式單點登錄框架是什么

本篇文章為大家展示了XXL-SSO分布式單點登錄框架是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創(chuàng)新互聯(lián)建站主營阿城網(wǎng)站建設(shè)的網(wǎng)絡公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),阿城h5小程序定制開發(fā)搭建,阿城網(wǎng)站營銷推廣歡迎阿城等地區(qū)企業(yè)咨詢

一、簡介

1.1 概述

XXL-SSO 是一個分布式單點登錄框架。只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。
擁有"輕量級、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性?,F(xiàn)已開放源代碼,開箱即用。

1.2 特性

  • 簡潔:API直觀簡潔,可快速上手;

  • 輕量級:環(huán)境依賴小,部署與接入成本較低;

  • 單點登錄:只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。

  • 分布式:接入SSO認證中心的應用,支持分布式部署;

  • HA:Server端與Client端,均支持集群部署,提高系統(tǒng)可用性;

  • 跨域:支持跨域應用接入SSO認證中心;

  • Cookie+Token均支持:支持基于Cookie和基于Token兩種接入方式,并均提供Sample項目;

  • Web+APP均支持:支持Web和APP接入;

  • 實時性:系統(tǒng)登陸、注銷狀態(tài),全部Server與Client端實時共享;

  • CS結(jié)構(gòu):基于CS結(jié)構(gòu),包括Server"認證中心"與Client"受保護應用";

  • 記住密碼:未記住密碼時,關(guān)閉瀏覽器則登錄態(tài)失效;記住密碼時,支持登錄態(tài)自動延期,在自定義延期時間的基礎(chǔ)上,原則上可以無限延期;

  • 路徑排除:支持自定義多個排除路徑,支持Ant表達式。用于排除SSO客戶端不需要過濾的路徑;

1.3 下載

源碼倉庫地址
源碼倉庫地址Release Download
https://github.com/xuxueli/xxl-ssoDownload
https://gitee.com/xuxueli0323/xxl-ssoDownload

1.4 環(huán)境

  • JDK:1.7+

  • redis:4.0+

  • MySQL:5.6+

二、快速入門(基于Cookie)

2.1:系統(tǒng)數(shù)據(jù)庫初始化

2.2:源碼編譯

- xxl-sso-server:中央認證服務,支持集群;
- xxl-sso-core:Client端依賴;
- xxl-sso-samples:單點登陸Client端接入示例項目;
    - xxl-sso-web-sample-springboot:基于Cookie接入方式,供用戶瀏覽器訪問,springboot版本
    - xxl-sso-token-sample-springboot:基于Token接入方式,常用于無法使用Cookie的場景使用,如APP、Cookie被禁用等,springboot版本

2.3 部署 "認證中心(SSO Server)"

項目名:xxl-sso-server
配置說明

配置文件位置:application.properties

……

// redis 地址: 如 "{ip}"、"{ip}:{port}"、"{redis/rediss}://xxl-sso:{password}@{ip}:{port:6379}/{db}";多地址逗號分隔
xxl.sso.redis.address=redis://127.0.0.1:6379

// 登錄態(tài)有效期窗口,默認24H,當?shù)卿洃B(tài)有效期窗口過半時,自動順延一個周期;
xxl.sso.redis.expire.minite=1440

2.4 部署 "單點登陸Client端接入示例項目"

項目名:xxl-sso-web-sample-springboot
maven依賴
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-sso-core</artifactId>
    <version>${最新穩(wěn)定版}</version>
</dependency>
配置 XxlSsoFilter
@Bean
public FilterRegistrationBean xxlSsoFilterRegistration() {

    // xxl-sso, redis init
    JedisUtil.init(xxlSsoRedisAddress);

    // xxl-sso, filter init
    FilterRegistrationBean registration = new FilterRegistrationBean();

    registration.setName("XxlSsoWebFilter");
    registration.setOrder(1);
    registration.addUrlPatterns("/*");
    registration.setFilter(new XxlSsoWebFilter());
    registration.addInitParameter(Conf.SSO_SERVER, xxlSsoServer);
    registration.addInitParameter(Conf.SSO_LOGOUT_PATH, xxlSsoLogoutPath);

    return registration;
}
配置說明

配置文件位置:application.properties

……

### xxl-sso     (CLient端SSO配置)

##### SSO Server認證中心地址(推薦以域名方式配置認證中心,本機可參考章節(jié)"2.5"修改host文件配置域名指向)
xxl.sso.server=http://xxlssoserver.com:8080/xxl-sso-server

##### 注銷登陸path,值為Client端應用的相對路徑
xxl.sso.logout.path=/logout

##### 路徑排除Path,允許設(shè)置多個,且支持Ant表達式。用于排除SSO客戶端不需要過濾的路徑
xxl-sso.excluded.paths=

### redis   // redis address, like "{ip}"、"{ip}:{port}"、"{redis/rediss}://xxl-sso:{password}@{ip}:{port:6379}/{db}";Multiple "," separated
xxl.sso.redis.address=redis://xxl-sso:password@127.0.0.1:6379/0

2.5 驗證

  • 環(huán)境準備:啟動Redis、初始化Mysql表數(shù)據(jù);

  • 修改Host文件:域名方式訪問認證中心,模擬跨域與線上真實環(huán)境

### 在host文件中添加以下內(nèi)容0
127.0.0.1 xxlssoserver.com
127.0.0.1 xxlssoclient1.com
127.0.0.1 xxlssoclient2.com
  • 分別運行 "xxl-sso-server" 與 "xxl-sso-web-sample-springboot"

    1、SSO認證中心地址:
    http://xxlssoserver.com:8080/xxl-sso-server

    2、Client01應用地址:
    http://xxlssoclient1.com:8081/xxl-sso-web-sample-springboot/

    3、Client02應用地址:
    http://xxlssoclient2.com:8081/xxl-sso-web-sample-springboot/

  • SSO登錄/注銷流程驗證

    正常情況下,登錄流程如下:
    1、訪問 "Client01應用地址" ,將會自動 redirect 到 "SSO認證中心地址" 登錄界面;
    2、成功登錄后,將會自動 redirect 返回到 "Client01應用地址",并切換為已登錄狀態(tài);
    3、此時,訪問 "Client02應用地址",不需登陸將會自動切換為已登錄狀態(tài);

    正常情況下,注銷流程如下:
    1、訪問 "Client01應用地址" 配置的 "注銷登陸path",將會自動 redirect 到 "SSO認證中心地址" 并自動注銷登陸狀態(tài);
    2、此時,訪問 "Client02應用地址",也將會自動注銷登陸狀態(tài);

三、快速入門(基于Token)

3.1 "認證中心(SSO Server)" 搭建

"認證中心" 搭建成功后,默認為Token方式登陸提供API接口如下:

  • 1、登陸接口:/app/login

    • code:200 表示成功、其他失?。?/p>

    • msg:錯誤提示

    • data: 登陸用戶的 sso sessionid

    • username:賬號

    • password:賬號

    • 參數(shù):POST參數(shù)

    • 響應:JSON格式

  • 2、注銷接口:/app/logout

    • code:200 表示成功、其他失?。?/p>

    • msg:錯誤提示

    • sessionId:登陸用戶的 sso sessionid

    • 參數(shù):POST參數(shù)

    • 響應:JSON格式

  • 3、登陸狀態(tài)校驗接口:/app/logincheck

    • code:200 表示成功、其他失??;

    • msg:錯誤提示

    • data:登陸用戶信息

    • userid:用戶ID

    • username:用戶名

    • sessionId:登陸用戶的 sso sessionid

    • 參數(shù):POST參數(shù)

    • 響應:JSON格式

3.2 部署 "單點登陸Client端接入示例項目" (Token方式)

項目名:xxl-sso-token-sample-springboot

可參考 "章節(jié) 2.4" 部署 "單點登陸Client端接入示例項目",唯一不同點是:將web應用的 "XxlSsoFilter" 更換為app應用 "XxlSsoTokenFilter";

3.3 驗證 (模擬請求 Token 方式接入SSO的接口)

  • 環(huán)境準備:啟動Redis、初始化Mysql表數(shù)據(jù);

  • 修改Host文件:域名方式訪問認證中心,模擬跨域與線上真實環(huán)境

### 在host文件中添加以下內(nèi)容0
127.0.0.1 xxlssoserver.com
127.0.0.1 xxlssoclient1.com
127.0.0.1 xxlssoclient2.com
  • 分別運行 "xxl-sso-server" 與 "xxl-sso-token-sample-springboot"

    1、SSO認證中心地址:
    http://xxlssoserver.com:8080/xxl-sso-server

    2、Client01應用地址:
    http://xxlssoclient1.com:8082/xxl-sso-token-sample-springboot/

    3、Client02應用地址:
    http://xxlssoclient2.com:8082/xxl-sso-token-sample-springboot/

  • SSO登錄/注銷流程驗證

    正常情況下,登錄流程如下:
    1、獲取用戶輸入的賬號密碼后,請求SSO Server的登錄接口,獲取用戶 sso sessionid ;(參考代碼:TokenClientTest.loginTest)
    2、登陸成功后,獲取到 sso sessionid ,需要主動存儲,后續(xù)請求時需要設(shè)置在 Header參數(shù) 中;
    3、此時,使用 sso sessionid 訪問受保護的 "Client01應用" 和 "Client02應用" 提供的接口,接口均正常返回;(參考代碼:TokenClientTest.clientApiRequestTest)

    正常情況下,注銷流程如下:
    1、請求SSO Server的注銷接口,注銷登陸憑證 sso sessionid ;(參考代碼:TokenClientTest.logoutTest)
    2、注銷成功后,sso sessionid 將會全局失效;
    3、此時,使用 sso sessionid 訪問受保護的 "Client01應用" 和 "Client02應用" 提供的接口,接口請求將會被攔截,提示未登錄并返回狀態(tài)碼 501 ;(參考代碼:TokenClientTest.clientApiRequestTest)

四、總體設(shè)計

4.1 功能定位

XXL-SSO 是一個分布式單點登錄框架。只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。借助 XXL-SSO,可以快速實現(xiàn)分布式系統(tǒng)單點登錄。

4.2 核心概念

概念說明
SSO Server中央認證服務,支持集群;
SSO Client接入SSO認證中心的Client應用;
SSO SessionId登錄用戶會話ID,SSO 登錄成功為用戶自動分配;
SSO User登錄用戶信息,與 SSO SessionId 相對應;

4.3 登錄流程剖析

  • 用戶于Client端應用訪問受限資源時,將會自動 redirect 到 SSO Server 進入統(tǒng)一登錄界面。

  • 用戶登錄成功之后將會為用戶分配 SSO SessionId 并 redirect 返回來源Client端應用,同時附帶分配的 SSO SessionId。

  • 在Client端的SSO Filter里驗證 SSO SessionId 無誤,將 SSO SessionId 寫入到用戶瀏覽器Client端域名下 cookie 中。

  • SSO Filter驗證 SSO SessionId 通過,受限資源請求放行;

4.4 注銷流程剖析

  • 用戶與Client端應用請求注銷Path時,將會 redirect 到 SSO Server 自動銷毀全局 SSO SessionId,實現(xiàn)全局銷毀;

  • 然后,訪問接入SSO保護的任意Client端應用時,SSO Filter 均會攔截請求并 redirect 到 SSO Server 的統(tǒng)一登錄界面。

4.5 基于Cookie

  • 登陸憑證存儲:登陸成功后,用戶登陸憑證被自動存儲在瀏覽器Cookie中;

  • Client端校驗登陸狀態(tài):通過校驗請求Cookie中的是否包含用戶登錄憑證判斷;

  • 系統(tǒng)角色模型:

    • SSO Server:認證中心,提供用戶登陸、注銷以及登陸狀態(tài)校驗等功能。

    • Client應用:受SSO保護的Client端Web應用,為用戶瀏覽器訪問提供服務;

    • 用戶:發(fā)起請求的用戶,使用瀏覽器訪問。

4.6 基于Token

  • 登陸憑證存儲:登陸成功后,獲取到登錄憑證(xxl_sso_sessionid=xxx),需要主動存儲,如存儲在 localStorage、Sqlite 中;

  • Client端校驗登陸狀態(tài):通過校驗請求 Header參數(shù) 中的是否包含用戶登錄憑證(xxl_sso_sessionid=xxx)判斷;因此,發(fā)送請求時需要在 Header參數(shù) 中設(shè)置登陸憑證;

  • 系統(tǒng)角色模型:

    • SSO Server:認證中心,提供用戶登陸、注銷以及登陸狀態(tài)校驗等功能。

    • Client應用:受SSO保護的Client端Web應用,為用戶請求提供接口服務;

    • 用戶:發(fā)起請求的用戶,如使用Android、IOS、桌面客戶端等請求訪問。

4.7 未登錄狀態(tài)請求處理

基于Cookie,未登錄狀態(tài)請求:

  • 頁面請求:redirect 到SSO Server登錄界面;

  • JSON請求:返回未登錄的JSON格式響應數(shù)據(jù)

    • code:501 錯誤碼

    • msg:sso not login.

    • 數(shù)據(jù)格式:

基于Token,未登錄狀態(tài)請求:

  • 返回未登錄的JSON格式響應數(shù)據(jù)

    • code:501 錯誤碼

    • msg:sso not login.

    • 數(shù)據(jù)格式:

4.8 登錄態(tài)自動延期

支持自定義登錄態(tài)有效期窗口,默認24H,當?shù)卿洃B(tài)有效期窗口過半時,自動順延一個周期;

4.9 記住密碼

未記住密碼時,關(guān)閉瀏覽器則登錄態(tài)失效;記住密碼時,登錄態(tài)自動延期,在自定義延期時間的基礎(chǔ)上,原則上可以無限延期;

4.10 路徑排除

自定義路徑排除Path,允許設(shè)置多個,且支持Ant表達式。用于排除SSO客戶端不需要過濾的路徑

上述內(nèi)容就是XXL-SSO分布式單點登錄框架是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文名稱:XXL-SSO分布式單點登錄框架是什么
文章鏈接:http://jinyejixie.com/article22/pshpjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站營銷、自適應網(wǎng)站Google、微信公眾號用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
泸州市| 德格县| 平山县| 郑州市| 西平县| 郁南县| 靖江市| 涿州市| 二手房| 措勤县| 亳州市| 左权县| 灵台县| 井冈山市| 冷水江市| 赣州市| 府谷县| 临武县| 平顺县| 高密市| 张家川| 平阴县| 锦屏县| 通州区| 兴业县| 昌都县| 车致| 金溪县| 甘孜| 临安市| 鹿邑县| 湘阴县| 新津县| 从化市| 台前县| 文昌市| 莒南县| 商丘市| 东阿县| 宣化县| 吐鲁番市|