开源项目之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配置

 <!-- SSO 配置 -->    
<context-param>        
<param-name>kissoConfigLocation</param-name>       
 <param-value>classpath:properties/sso.properties</param-value>    </context-param>   
 <listener>        
<listener-class>com.baomidou.kisso.web.KissoConfigListener
</listener-class>  
  </listener> 

2.spring-mvc.xml配置

<!-- KISSO 初始化 -->    
<bean id="kissoInit" class="com.baomidou.kisso.web.WebKissoConfigurer" initmethod="initKisso">     
 <property name="ssoPropPath" value="properties/sso.properties" />    
</bean> <mvc:interceptors> <!-- SSO 拦截器 --> <!-- path 对所有的请求拦截使用/**,对某个模块下的请求拦截使用:/myPath/* -->
<mvc:interceptor>
<mvc:mapping path="/**" /> <bean class="com.baomidou.kisso.web.spring.SSOInterceptor" />
</mvc:interceptor> </mvc:interceptors>

两种方式任选一种即可

五、项目模块

六、跨域原理

七、Web访问流程图

八、移动端API访问流程图

原文地址:https://www.cnblogs.com/youcong/p/9794735.html