环境要求

  • JDK 8+
  • CAS 5.2
  • tomcat 8+

步骤

一、搭建CAS服务器  --> CAS(一)搭建CAS - server服务器

二、配置hosts,加入如下配置

127.0.0.1      cas.server.com
127.0.0.1      cas.client1.com

三、搭建SpringMVC项目

项目名为cas-clientA,项目结构如下:

  • 包含三个页面:主页--index.jsp(无需登录),hello页面--hello.jsp(需要登录),退出成功提示页--logoutsuccess.jsp(无需登录)
  • pom.xml文件配置如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.oumuv</groupId><artifactId>cas-clientA</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>cas-clientA</name><description>cas client A</description><dependencies><dependency><groupId>javax</groupId><artifactId>javaee-web-api</artifactId><version>7.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.9.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.9.RELEASE</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--cas客户端--><dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>3.4.1</version></dependency></dependencies><build><finalName>cas-sample-java-webapp</finalName><plugins><!--指定jdk版本--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><encoding>UTF-8</encoding><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>8.1.9.v20130131</version><configuration><connectors><connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"><!--端口--><port>9001</port><maxIdleTime>60000</maxIdleTime></connector></connectors></configuration></plugin></plugins></build>
</project>
  • applicationContext.xml主要配置一下jsp解析器,配置如下:
<?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"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-4.0.xsd    http://www.springframework.org/schema/mvc    http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --><context:component-scan base-package="com.oumuv"/><!-- 扩充了注解驱动,可以将请求参数绑定到控制器参数 --><mvc:annotation-driven/><!-- 访问静态资源 --><mvc:default-servlet-handler/><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/"/><property name="suffix" value=".jsp"/><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/></bean></beans>
  • web.xml配置是重点,cas服务器和客户端的关联需要在此配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:*.xml</param-value></context-param><context-param><param-name>log4jConfigLocation</param-name><param-value>classpath:log4j.properties</param-value></context-param><!-- 上下问监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener><!-- springMVC --><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--登出过滤器--><filter><filter-name>CAS Single Sign Out Filter</filter-name><filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>http://cas.server.com:8443/cas</param-value></init-param></filter><!--登出监听器--><listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><!--认证过滤器--><filter><filter-name>CAS Authentication Filter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><param-name>casServerLoginUrl</param-name><param-value>http://cas.server.com:8443/cas/login</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://cas.client1.com:9001</param-value></init-param><!--忽略验证的url,多个url使用"|"分割--><init-param><param-name>ignorePattern</param-name><param-value>/logout/success|/index</param-value></init-param></filter><!--ticke验证过滤器--><filter><filter-name>CAS Validation Filter</filter-name><filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>http://cas.server.com:8443/cas</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://cas.client1.com:9001</param-value></init-param><init-param><param-name>redirectAfterValidation</param-name><param-value>true</param-value></init-param><init-param><param-name>useSession</param-name><param-value>true</param-value></init-param><init-param><param-name>authn_method</param-name><param-value>mfa-duo</param-value></init-param></filter><!--wrapper过滤器--><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 Single Sign Out Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS Authentication Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 静态文件处理 --><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.css</url-pattern></servlet-mapping>
</web-app>

其中http://cas.server.com:8443是服务端的地址,http://cas.client1.com:9001是客户端地址

  • CASController.java有两个业务如下:
    /*** 主页* @param map* @return*/@RequestMapping("index")public String index(ModelMap map) {map.addAttribute("name", "clien A");return "index";}/*** hello* @return*/@RequestMapping("hello")public String hello() {return "hello";}

四、启动项目、测试

依次启动CAS-server服务端、CAS-clientA客户端

访问http://cas.client1.com:9001/index进入CAS-clientA主页:

点击client A(http://cas.client1.com:9001/hello),会跳转到cas登录认证页面:

输入账号和密码完成登录后跳转到hello页面:

到此项目搭建完成

单点退出实现请看这里:CAS(五)CAS客户端单点退出实现

代码托管在https://gitee.com/oumuv/cas-Demo

上一篇:CAS(二)CAS服务器动态验证,CAS使用MySQL数据库验证

下一篇:CAS(四)基于Springboot搭建CAS-client,Springboot搭建CAS客户端

希望可以帮助到有需要的人

CAS(三)基于SpringMVC搭建CAS-client,SpringMVC搭建CAS客户端相关推荐

  1. Spring+SpringMVC+MyBatis深入学习及搭建(十一)——SpringMVC架构

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6985816.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十)--My ...

  2. Spring+SpringMVC+MyBatis深入学习及搭建(十七)——SpringMVC拦截器

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7098753.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十六)--S ...

  3. Spring+SpringMVC+MyBatis深入学习及搭建(十四)——SpringMVC和MyBatis整合

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7010363.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十三)--S ...

  4. 四、记一次失败的 CAS 搭建 之 结果总是那么伤(客户端)

    四.记一次失败的 CAS 搭建 之 结果总是那么伤(客户端) ===================================================================== ...

  5. java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))

    springmvc框架 什么是springmvc springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.(struts2与Spring整合的时候需 ...

  6. SpringMVC→简介、MVC、SpringMVC工作原理、Maven搭建第一个SpringMVC、请求参数接收、重定向、文件上传、AJAX异步访问、请求参数接收绑定JSON、@注解及传参

    MVC SpringMVC工作原理 Maven搭建第一个SpringMVC 目录结构 web.xml *-servlet.xml Controller请求处理类 跳转页面 Maven运行服务器项目 浏 ...

  7. Spring+Mybatis+SpringMVC+Maven+MySql(SSM框架)搭建实例

    这篇文章我们来实现使用maven构建工具来搭建Spring+Mybatis+SpringMVC+MySql的框架搭建实例.工程下载 使用maven当然得配置有关环境了,不会配置的请看我前几篇文章,都有 ...

  8. Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(九)--My ...

  9. Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发

    前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)--MyBatis的基础知识.MybatisFirst中存在大量重复的代码.这次简化下代码: 使用MyBatis开发Dao ...

最新文章

  1. Leetcode-520. 检测大写字母
  2. JavaWeb学习之路——SpringBoot整合Mybatis(二)
  3. Draconian,自由或保姆状态:Java,C#,C,C ++,Go和Rust中的并发意识形态
  4. java debug 宏_#ifdef _DEBUG用法小结
  5. 完全卸载vs2015
  6. 恢复更新--vue源码系列1之如何看源码
  7. 《符号学:原理与推演》(一)符号的构成
  8. matlab求一维热传导方程数值解代码,一维热传导方程数值解法及matlab实现
  9. 二级索引 -> 普通索引 与 唯一索引
  10. python抓取淘宝评论_python3抓取淘宝评论内容
  11. css中img间有空隙
  12. 会议OA项目排座功能以及送审功能
  13. 11.14-11.21
  14. 十大常见的电子元器件
  15. Bugku:Snowfall
  16. TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-captu
  17. # Sql语句过长报错、查询慢优化方案探索
  18. 传统虚拟化的技术实现
  19. ​ 斯科特·马特森​与MIMO发明者谈话节选
  20. 分享 :准备数据时如何避免数据泄漏

热门文章

  1. 可用于企业的 7 个开源 Web 服务器
  2. matlab基本矩阵运算,MATLAB入门:基本操作与矩阵运算
  3. C# 反射(Reflection)
  4. Java反射方法赋值,java反射挟制赋值
  5. SQL中的触发器是什么?
  6. vSphere Web Client 添加主机进VSAN集群时“SAN 主机移至目标群集: vSAN 群集的 UUID 不匹配”报错
  7. 一次关于ETCD客户端(ETCD4J)问题的定位
  8. JS页面跳转请求方法
  9. prometheus+grafana可视化实时jvm监控工具
  10. 最新js文件打开方式