参考:http://blog.csdn.net/lifetragedy/article/details/43817903

这里有2个ssoclient工程,代码一样,只是端口不一样。
一个端口为8080,一个为8888,cas server的端口为8899.
ssoclient使用的springmvc+spring.
拿其中一个ssoclient的代码说明。

maven依赖:

 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>4.3.1.RELEASE</spring.version><jackson.version>2.5.0</jackson.version>
</properties>
<dependencies><dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>3.3.3</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>3.0-alpha-1</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.2</version></dependency>
</dependencies>

spring-core.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsd"><!--自动扫描含有@Service将其注入为bean --><context:component-scan base-package="com.tommy" ></context:component-scan>
</beans>

spring-mvc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"><!-- 自动扫描controller包下的所有类,如果@Controller注入为bean --><context:component-scan base-package="com.tommy.sso.controller" /><!-- 避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --><bean
            class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><!-- json转换器 --><ref bean="mappingJacksonHttpMessageConverter" /></list></property></bean><!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --><bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/views" /><property name="suffix" value=".jsp" /></bean><!-- 配置多文件上传 --><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding"><value>UTF-8</value></property><property name="maxUploadSize"><!-- 上传文件大小限制为31M,31*1024*1024 --><value>32505856</value></property><property name="maxInMemorySize"><value>4096</value></property></bean>
</beans>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>cas-sample-site2</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-core.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 防止spring内存溢出监听器 --><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener><listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><filter><filter-name>CAS Single Sign Out Filter</filter-name><filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class></filter><filter-mapping><filter-name>CAS Single Sign Out Filter</filter-name><url-pattern>*</url-pattern></filter-mapping><filter><filter-name>CAS Validation Filter</filter-name><filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>http://www.cas.com:8899/cas/</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://www.ssoclient.com:8080/</param-value></init-param><init-param><param-name>useSession</param-name><param-value>true</param-value></init-param><init-param><param-name>redirectAfterValidation</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>*</url-pattern></filter-mapping><filter><filter-name>CAS Filter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><param-name>casServerLoginUrl</param-name><param-value>http://www.cas.com:8899/cas/login</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://www.ssoclient.com:8080/</param-value></init-param></filter><filter-mapping><filter-name>CAS Filter</filter-name><url-pattern>*</url-pattern></filter-mapping><filter><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class></filter><filter-mapping><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><url-pattern>*</url-pattern></filter-mapping><servlet><description>spring mvc servlet</description><servlet-name>rest</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>rest</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
</web-app>  

注意:web.xml中cas相关的listener和filter的顺序,不一致可能导致登录或退出有问题。

IndexController.java:

/*** Created by Administrator on 2017/5/17.*/
@Controller
public class IndexController {@RequestMapping("/index.do")public String showIndex(HttpServletRequest request, HttpServletResponse response) {Principal principal = request.getUserPrincipal();request.getSession().setAttribute("user", principal.getName());return "/index";}
}

/view/index.jsp:

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" %>
<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
${user}, 你好啊! <a href="http://www.ssoclient.com:8888/ssoclient/index.do">访问ssoclient1</a>&nbsp;<a href="http://www.cas.com:8899/cas/logout">登出</a>
</body>
</html>

这里2个ssoclient工程在不同的tomcat中,分别部署后。
1. 访问http://www.ssoclient.com:8888/ssoclient/index.do会跳转到cas server的登录页面。

2. 访问http://www.ssoclient.com:8080/ssoclient/index.do会跳转到cas server的登录页面。

3. 在任意一个ssoclient执行登录操作(比如8888的ssoclient),登录成功后。

访问8080的ssoclient

会发现直接就可以访问,达到登录一个系统,其他系统不用再登录的目的。

  1. 在任意一个ssoclient执行退出操作(比如8888的ssoclient),执行后。
    8888的ssoclient

    刷新8080的ssoclient

    会发现会跳转到cas server的登录页面。达到任意一个系统退出,其他系统自动退出的目的。

注意:
如果有client的工程与cas server部署在一个tomcat,这个client是不会因为另外一个client执行logout而退出的。
注意浏览器缓存,退出操作。

cas多系统集成统一认证相关推荐

  1. 华为外部Portal认证 Radius认证计费 实现基于Mac快速认证的Mac无感知认证和结合CAS单点登录统一认证平台和AD域LDAP对接配置

    华为外部Portal认证 Radius认证计费 实现基于Mac快速认证的Mac无感知认证 结合CAS单点登录统一认证平台 AD域LDAP对接配置 实现用户名密码实名认证 访客短信认证 二维码扫码 钉钉 ...

  2. apereo cas开发_统一认证 - Apereo CAS 小试

    上一篇文章我们对Apereo CAS有了简要的了解,这篇文章我们将动手练习Apereo CAS.主要是CAS单机版的搭设,用户信息存储到数据库,以及dashboard的使用 做这些尝试的时候,Aper ...

  3. python实战-实现内网CAS统一认证登录

    CAS(Central Authentication Service)集中式认证服务是一种广泛应用的单点登录协议,特别是在校园网和企业内网,它允许用户只需向认证服务器提供一次凭证,即可以访问多个应用系 ...

  4. [原创]django+ldap+memcache实现单点登录+统一认证

    前言 由于公司内部的系统越来越多,为了方便用户使用,通过django进行了单点登录和统一认证的尝试,目前实现了django项目的单点登录和非django项目的统一认证,中间波折挺多,涉及的技术包括dj ...

  5. CAS 介绍 单点登录认证系统

    CAS 介绍  CAS(Central Authentication Service),是耶鲁大学开发的单点登录系统(SSO,single sign-on),应用广泛,具有独立于平台的,易于理解,支持 ...

  6. 集成底座统一认证配置说明

    企业的信息化建设是一个循序渐进.不断延展的过程,在这过程中企业对于体系架构.集成整合.数据治理.安全管控的要求也会不断提升,而集成底座方案的诞生就是为了解决信息化建设时缺乏整体规划.集成整合难度大.安 ...

  7. sso统一认证postMessage无感处理

    提要 SSO统一认证现在属于传统必备技能,很多人都花了很大段的话去描述这个过程,感觉不够极客,有水过程拔高的嫌疑,这里我先划分几种场景和情况 负载均衡衍生方案(seesion或者cookie固化存储方 ...

  8. java单点登录统一认证,JEECG 集成KiSSO单点登录实现统一身份认证

    JEECG 集成KiSSO单点登录实现统一身份认证 JEECG 如何为其他第三方系统实现统一身份认证服务,实现单点登录? 第三方系统如何对接呢? 今天为大家揭开这层面纱,让大家了解实质,使用它更快速的 ...

  9. ldap 统一认证 java_如何在你的系统里集成LDAP统一认证

    一.为什么需要统一认证 日常办公经常会有多套系统,如果各个系统各自维护一套用户认证,用户需要记住多个用户名密码. 系统各自管理用户认证的方式,不但会有重复建设的问题,用户体验也会差,经常会有用户忘记密 ...

最新文章

  1. drop wp table
  2. 使用Dropbox+Justwriting+Markdown建立个人博客
  3. Flask设置、获取、删除cookies
  4. 怎没用计算机算e的,小E教你们如何用计算机算虚数
  5. 命令行运行jmeter脚本
  6. OpenCV--SIFT算法检测特征点
  7. JEECG第二期深入使用培训(报名截止2014-06-21)
  8. ruby gem 安装mysql2_Ruby gem mysql2安装错误
  9. 多链路及服务器负载均衡原理与设备构建方案
  10. python释放变量内存_2020Python面试题:Python是如何进行内存管理的?
  11. 大话说github建立里程碑(SE)
  12. Linux文件系统下的分区和挂载
  13. SMA、SPI、LTE
  14. Bom及Bom对象的详细介绍
  15. GameSalad是html5游戏的搅局者吗?看中国式游戏
  16. Git与GitHub的了解与运用
  17. cydia加载未能连接服务器请求超时,cydia无法加载请求超时(一招教你解决)
  18. python从入门到撩妹 2 —— 30行代码实现520小彩蛋
  19. 二叉树如何求两个叶节点的最近公共祖先--re
  20. windows程序设计读书笔记四

热门文章

  1. 登录成功后,如何同步用户产生的各种数据
  2. 卷积神经网络学习笔记
  3. 1.1信息系统与信息化-1.2信息系统开发方法
  4. 我制作了python脚本自动抢购淘宝秒杀产品,学会优先享受618福利
  5. 太卷了,某公司把自家运营多年的核心系统(智慧系统)完全开源了
  6. 记科大讯飞、天源迪科、卫宁健康面试经历
  7. 2021年全球溶剂石脑油收入大约9212.2百万美元,预计2028年达到12140百万美元
  8. 东方红品牌网络代理商计划表
  9. 企业年会直播需要做什么呢?
  10. C320 GPON开局