開源專案之kisso
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訪問流程圖
相關文章
- 開源專案之憾
- [譯] 開源專案之 NginxNginx
- 開源專案之---cgi ( cgicc )
- 開源專案之:DotNetNuke
- 開源專案之七宗罪
- 開源專案之Android Afinal框架Android框架
- IOS開源專案iOS
- 開源專案-WaterMark
- 淘寶開源專案
- 開源專案:MMPopupViewView
- 開源好專案
- 開源專案剖析之apache-common-poolApache
- IPv6 KAME開源專案之IP安全
- android開源專案【專案篇】Android
- C#開源資源專案C#
- GitHub專案大多不是開源專案Github
- AI開源專案 - SeldonAI
- AI開源專案 - ONNXAI
- AI開源專案 - KubeflowAI
- AI開源專案 - MLflowAI
- AI開源專案 - NNIAI
- AI開源專案 - AutoKerasAIKeras
- AI開源專案 - TPOTAI
- AI開源專案 - RayAI
- AI開源專案 - OpenPoseAI
- AI開源專案 - OpenCVAIOpenCV
- AI 開源專案 - DaskAI
- AI開源專案 - HorovodAI
- AI開源專案 - MahoutAI
- AI 開源專案 - YOLOAIYOLO
- iOS 開源專案集合iOS
- facebook開源專案集合
- JavaPoet 開源專案使用Java
- 7問開源專案
- Android 開源專案Android
- IOS開源專案索引iOS索引
- 找個開源專案
- 開源GIS專案收集