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 区别

开源项目之kisso

 

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>

 

两种方式任选一种即可

 

五、项目模块

开源项目之kisso

六、跨域原理

开源项目之kisso

 

七、Web访问流程图

 

开源项目之kisso

 

 

八、移动端API访问流程图

开源项目之kisso

 

相关文章:

猜你喜欢
  • 2021-07-29
  • 2021-06-18
  • 2021-07-14
  • 2021-10-28
  • 2022-12-23
  • 2021-09-11
相关资源
相似解决方案