開源專案之kisso

youcongtech發表於2018-10-17

kisso開源專案:https://gitee.com/baomidou/kisso

一、簡介

kisso = cookie sso 基於 Cookie 的 SSO 中介軟體,它是一把快速開發 java Web 登入系統(SSO)的瑞 士軍刀。

應用場景如下:

1.支援單點登入

2、支援登入Cookie快取

3、支援防止 xss攻擊, SQL隱碼攻擊,指令碼注入

4、支援 Base64 / MD5 / AES / PBE / RSA 演算法

5、支援瀏覽器客戶端校驗

6、支援Cookie引數配置及擴充套件

7、支援跨域登入,模擬登入

8、支援線上人數統計

9、支援生成動態圖片驗證碼

10、支援 app 移動端 api 服務驗證,採用微信公眾平臺 api 驗證機制認證

11、支援踢出指定登入使用者

二、kisso 是什麼原理與 cas 區別

1.kisso原理說明

kisso 採用的是加密會話 cookie 機制實現單點登入 SSO 服務,具備“無狀態”、“分散驗證” 等特性。

a.session 存放在伺服器端,cookie 存放在客戶端,存在 2 種狀態:

第一種:持久 cookie 具 有時效性,以檔案的形式存放在客戶機硬碟中, 時間一到生命週期結束自動被刪除;

第二種:臨時 cookie 又叫會話 cookie 放在瀏覽器記憶體中,瀏覽器關閉生命週期結束自動失效。

b.單純不做任何改變而言 session 更安全,如果 cookie 採取各種安全保護措施,此時的 cookie 一樣安全。

c.cookie 輕鬆實現分散式服務部署,單點登入跨域訪問等問題,換成 session 需要處理 session 複製及各種問題實現困難。

2.kisso與cas的區別

a.cas 是單點登入系統,它給你制定好了規則按照它的要求做就可以,配置(複雜)好一切即可實 現單點登入;

b.kisso 是一箇中介軟體,提供 cookie 搭建 java web sso 的元件式解決方案。你不管使用任何架構都可以使用它,就像一個 U 盤需要使用就插入、不用就拔掉。

c.cas 集中驗證,所有請求都由 cas 集中驗證,缺點cas服務壓力巨大。kisso 分散驗證,由各個系 統驗證 cookie 合法性,缺點祕鑰要保護好。

3.maven依賴

   <dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>kisso</artifactId>
       <version>3.6.10</version>
   </dependency>
   <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcprov-jdk14</artifactId>
       <version>1.50</version>
   </dependency>
  <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.1.46</version>
  </dependency>

注意:
(1)如果想自己實現 Token 解析,實現 com.baomidou.kisso.common.parser.SSOParser 類 (解析介面類),修改配置檔案 sso.properties 屬性 sso.parser.class 此時 kisso 會呼叫您定義的解析類,不需要再依賴 fastjson 庫。
(2)自己實現 Token 加密,實現 com.baomidou.kisso.common.encrypt.SSOEncrypt 類(加密解密介面類),修改配置檔案 sso.properties 屬性 sso.encrypt.class 不在需要依賴 bcprov 庫

三、sso.properties如何配置
配置如下,其他均可以採用預設配置

sso.secretkey=56jp2s5q83ZTE74ri6
sso.cookie.domain=.baomidou.com
sso.login.url=http://demo.baomidou.com:8080/Blog/views/login.html

四、配置

1.web.xml配置

kissoConfigLocation
classpath:properties/sso.properties

com.baomidou.kisso.web.KissoConfigListener

2.spring-mvc.xml配置


兩種方式任選一種即可

五、專案模組

六、跨域原理

七、Web訪問流程圖

八、移動端API訪問流程圖