CAS Server 4.0二次开发说明文档
1. 环境搭建 2
2. 拓展后最终目录结构 7
3. 修改CAS Server支持HTTP协议 8
4. 修改CAS服务器端登录认证方式为数据库认证 9
4.1. 在pom中添加如下的依赖 9
4.2. 创建ValidUserQueryDBAuthenticationHandler 10
4.3. 修改l 10
5. 登录连续错误三次以上出现验证码校验 11
5.1. 添加kaptcha验证码依赖库 11
5.2. 配置l 12
5.3. UsernamePasswordCaptchaCredentia 12
5.4. 修改cas登录页,添加验证码字段 12
5.5. 添加验证码校验 13
5.6. 自定义异常处理Handler 统计错误次数 16
5.7. 修改配置l 16
5.8. 修改配置l 17
6. CAS服务器端返回多个属性字段 17
6.1. 创建MultipleAttributeUserDao模拟用户自定义属性 18
6.2. 修改l 18
6.3. 修改casServiceValidationSuccess.jsp 18
7. CAS Server集部署时Ticket同步 21
7.1. 添加redis依赖 21
7.2. 创建RedisTicketRegistry 22
7.3. 创建TicketRedisTemplate 22
7.4. 修改l 23
7.5. 修改l 24
8. CAS Server登录页定制 24
8.1. 拷贝资源文件 24
8.2. 修改casLoginView.jsp 25
8.3. 基于theme方式 25
9. 修改CAS Server为移动端设备提供REST登录服务 25
9.1. 添加依赖 26
9.2. 修改l 27
9.3. 请求票据授权 27
9.4. 请求服务授权 28
9.5. Java Client测试 29
在生产环境中,官方提供的CAS Server功能远远不能满足我们的需求。这个时候我们就需要基于源码进行二次开发,以满足我们的线上使用。这里主要是基于CAS服务器端。本文档主要描述目前在CAS Server 4.0版本基础上做了哪些改进。
1.环境搭建
这里为了方便起见采用maven overlays特性(通路径下的同名文件会使用最新的资源文件替换已有war目录中下的资源文件)搭建,因此这里不用将cas-server-webapp模块的所有源码导入到工程里,只需将需要修改的文件按源码里面的目录层次结构排列,最终编译构建打包时会自动添加新特性或替换原有文件,这是一件很方便的事,修改和添加了哪些文件一目了然。
以下列出了本文档所涉及到所有拓展功能及最终编译打包所需的maven依赖。
l
<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.aimeizi</groupId> <artifactId>cas-server-webapp</artifactId> <version>4.0.0</version> <packaging>war</packaging> <name>Jasig CAS Web Application</name> <description>Jasig CAS Server Web Application</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &porting.outputEncoding>UTF-8</porting.outputEncoding> &ding>UTF-8</ding> </properties> <dependencies> <dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-webapp</artifactId> <version>4.0.0</version> <type>war</type> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-core</artifactId> <version>4.0.0</version> <type>test-jar</type> </dependency> <dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-webapp-support</artifactId> <version>4.0.0</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.1.2</version> <type>jar</type> <scope>runtime</scope> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> <type>jar</type> <scope>runtime</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.18</version> </dependency> <dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-support-jdbc</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-integration-restlet</artifactId> <version>4.0.0</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId&stlet.jee</groupId> <artifactId&stlet</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId&stlet.jee</groupId> <artifactId&spring</artifactId> <version>2.1.0</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-asm</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId&stlet.jee</groupId> <artifactId&servlet</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId&stlet.jee</groupId> <artifactId&slf4j</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.1.RELEASE</version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apachemons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId&le.code.kaptcha</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependency> <dependency> <groupId>org.apachemons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> </dependencies> <build> <finalName>cas</finalName> <plugins> </plugins> spring framework版本查看 </build> </project> |
2.拓展后最终目录结构
3.修改CAS Server支持HTTP协议
修改src\main\webapp\WEB-INF\l文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="/schema/p" xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd"> <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator" p:cookieSecure="false" p:cookieMaxAge="3600" p:cookieName="CASTGC" p:rememberMeMaxAge="3600" p:cookiePath="/cas"/> </beans> |
修改src\main\webapp\WEB-INF\l文件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论