加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

开源项目之kisso

发布时间:2020-12-15 07:13:00 所属栏目:Java 来源:网络整理
导读:kisso开源项目:https://gitee.com/baomidou/kisso 一、简介 kisso? =? cookie sso 基于 Cookie 的 SSO 中间件,它是一把快速开发 java Web 登录系统(SSO)的瑞 士军刀。 应用场景如下: 1.支持单点登录 2、支持登录Cookie缓存 3、支持防止 xss攻击,SQL注入,

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-value>classpath:properties/sso.properties>    >   
 listenerlistener-class>com.baomidou.kisso.web.KissoConfigListener
>  
  > 

?

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="/**" /> class="com.baomidou.kisso.web.spring.SSOInterceptor" />
> >

?

两种方式任选一种即可

?

五、项目模块

六、跨域原理

?

七、Web访问流程图

?

?

?

八、移动端API访问流程图

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读