cas多系统集成统一认证
参考: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> <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
会发现直接就可以访问,达到登录一个系统,其他系统不用再登录的目的。
- 在任意一个ssoclient执行退出操作(比如8888的ssoclient),执行后。
8888的ssoclient
刷新8080的ssoclient
会发现会跳转到cas server的登录页面。达到任意一个系统退出,其他系统自动退出的目的。
注意:
如果有client的工程与cas server部署在一个tomcat,这个client是不会因为另外一个client执行logout而退出的。
注意浏览器缓存,退出操作。
cas多系统集成统一认证相关推荐
- 华为外部Portal认证 Radius认证计费 实现基于Mac快速认证的Mac无感知认证和结合CAS单点登录统一认证平台和AD域LDAP对接配置
华为外部Portal认证 Radius认证计费 实现基于Mac快速认证的Mac无感知认证 结合CAS单点登录统一认证平台 AD域LDAP对接配置 实现用户名密码实名认证 访客短信认证 二维码扫码 钉钉 ...
- apereo cas开发_统一认证 - Apereo CAS 小试
上一篇文章我们对Apereo CAS有了简要的了解,这篇文章我们将动手练习Apereo CAS.主要是CAS单机版的搭设,用户信息存储到数据库,以及dashboard的使用 做这些尝试的时候,Aper ...
- python实战-实现内网CAS统一认证登录
CAS(Central Authentication Service)集中式认证服务是一种广泛应用的单点登录协议,特别是在校园网和企业内网,它允许用户只需向认证服务器提供一次凭证,即可以访问多个应用系 ...
- [原创]django+ldap+memcache实现单点登录+统一认证
前言 由于公司内部的系统越来越多,为了方便用户使用,通过django进行了单点登录和统一认证的尝试,目前实现了django项目的单点登录和非django项目的统一认证,中间波折挺多,涉及的技术包括dj ...
- CAS 介绍 单点登录认证系统
CAS 介绍 CAS(Central Authentication Service),是耶鲁大学开发的单点登录系统(SSO,single sign-on),应用广泛,具有独立于平台的,易于理解,支持 ...
- 集成底座统一认证配置说明
企业的信息化建设是一个循序渐进.不断延展的过程,在这过程中企业对于体系架构.集成整合.数据治理.安全管控的要求也会不断提升,而集成底座方案的诞生就是为了解决信息化建设时缺乏整体规划.集成整合难度大.安 ...
- sso统一认证postMessage无感处理
提要 SSO统一认证现在属于传统必备技能,很多人都花了很大段的话去描述这个过程,感觉不够极客,有水过程拔高的嫌疑,这里我先划分几种场景和情况 负载均衡衍生方案(seesion或者cookie固化存储方 ...
- java单点登录统一认证,JEECG 集成KiSSO单点登录实现统一身份认证
JEECG 集成KiSSO单点登录实现统一身份认证 JEECG 如何为其他第三方系统实现统一身份认证服务,实现单点登录? 第三方系统如何对接呢? 今天为大家揭开这层面纱,让大家了解实质,使用它更快速的 ...
- ldap 统一认证 java_如何在你的系统里集成LDAP统一认证
一.为什么需要统一认证 日常办公经常会有多套系统,如果各个系统各自维护一套用户认证,用户需要记住多个用户名密码. 系统各自管理用户认证的方式,不但会有重复建设的问题,用户体验也会差,经常会有用户忘记密 ...
最新文章
- drop wp table
- 使用Dropbox+Justwriting+Markdown建立个人博客
- Flask设置、获取、删除cookies
- 怎没用计算机算e的,小E教你们如何用计算机算虚数
- 命令行运行jmeter脚本
- OpenCV--SIFT算法检测特征点
- JEECG第二期深入使用培训(报名截止2014-06-21)
- ruby gem 安装mysql2_Ruby gem mysql2安装错误
- 多链路及服务器负载均衡原理与设备构建方案
- python释放变量内存_2020Python面试题:Python是如何进行内存管理的?
- 大话说github建立里程碑(SE)
- Linux文件系统下的分区和挂载
- SMA、SPI、LTE
- Bom及Bom对象的详细介绍
- GameSalad是html5游戏的搅局者吗?看中国式游戏
- Git与GitHub的了解与运用
- cydia加载未能连接服务器请求超时,cydia无法加载请求超时(一招教你解决)
- python从入门到撩妹 2 —— 30行代码实现520小彩蛋
- 二叉树如何求两个叶节点的最近公共祖先--re
- windows程序设计读书笔记四