zoukankan      html  css  js  c++  java
  • 开源项目之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访问流程图

  • 相关阅读:
    哈希算法(Hash Algorithm)初探
    一本计划中的WPF图书目录
    php中关于mysqli和mysql区别的一些知识点整理
    PHP Plurk Api基�教�(一)
    Wordpress 去除重复评论限制
    [share]PDO操作MySql类
    PHP处理文件(转载)
    PHP 取得某天前后N天的日期
    源码搭建LAMP服务器
    PHP ��/日期操作��
  • 原文地址:https://www.cnblogs.com/youcong/p/9794735.html
Copyright © 2011-2022 走看看