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訪問流程圖