实战:CAS搭建

一、CAS服务器的搭建

【1】下载CAS服务器的源码,我下载的是CAS Maven WAR Overlay的分支4.2.X版本

注:如若不想了解查找下载地方过程,请直接参见(3)的链接地址

(1)CAS官网地址:https://www.apereo.org/projects/cas

实战:CAS搭建

实战:CAS搭建

(2)点击后可以找到如下地址:https://github.com/apereo/cas,点击Overlay,

跳转到https://apereo.github.io/cas/5.1.x/installation/Maven-Overlay-Installation.html

点击下图CAS Maven WAR Overlay进入github:https://github.com/apereo/cas-overlay-template

实战:CAS搭建

实战:CAS搭建

(3)下载CAS-SERVER:https://github.com/apereo/cas-overlay-template

值得注意的是① 4.1版本与4.2之后的版本配置方式有所不同,所以请下载4.2或之后的版本,本例以4.2版本为例。

② 本人原本想通过idea复制github链接进行直接下载,由于没有SSH配置导致idea无法下载,所以改用下载ZIP方式,如想用命令或idea的github进行直接下载,请自行百度配置方法。

实战:CAS搭建实战:CAS搭建

实战:CAS搭建实战:CAS搭建

【2】CAS-SERVER配置

解压ZIP包,使用idea打开项目

(1)在WEB-INF/spring-configuration/propertyFileConfigurer.xml中,对cas.properties的位置进行修改。

注:由于在windows下进行实验,所以需要修改cas.properties的所处位置,并将etc下的cas.properties放置在相应位置;如果是linux系统,可直接将文件放置在/etc/cas/config下,无需更改配置文件。

<util:properties id="casProperties" location="file:D:\webserver\cas\cas.properties" />

(2)pom.xml

所下载的项目应该是默认使用war打包,为以防万一还是确保package方式为war

检查pom.xml中<packaging>war</packaging> 是否为该配置

【3】打包

使用 mvn package 命令进行打包,生成war文件,我将其更名为cas.war

【4】tomcat的相关配置

cas默认使用HTTPS请求,所以可以有一下两者结局方案:

(1)修改cas项目配置文件,增加HTTP支持

打开${TOMCAT_HOME}\webapps\cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json

修改 "serviceId" :"^(https|imaps)://.*", "serviceId" : "^(https|imaps|http)://.*",


(2)tomcat增加https支持

① 使用keytool创建证书

打开命令行,进入${JAVA_HOME}\bin目录,输入keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -keystore server.keystore

实战:CAS搭建

注:口令为changeit,这里的名字与姓氏指的是你的服务器域名,由于我们是本机测试所以使用localhost,其他可不填

此时${JAVA_HOME}\bin下会有一个server.keystore文件

② 导出证书

keytool -export -alias tomcat -keypass changeit -file server.crt -keystore server.keystore

输入密码changeit

③ 将证书导入jre可信任区

keytool -import -alias tomcat -file server.crt -keypass changeit -keystore C:/JDK8/jre/lib/security/cacerts

输入密码changeit

注:这里的路径要与tomcat配置的路径一致

④ 配置tomcat

打开${TOMCAT_HOME}\conf\server.xml,将端口为8443的代码注释解除,并进行如下修改:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS" keystoreFile="C:/JDK8/bin/server.keystore"

truststoreFile="C:/JDK8/jre/lib/security/cacerts"

keystorePass="changeit"/>

注释代码AJP代码: <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

运行startup.bat文件,访问https://localhost:8443,出现下图表示配置完成

实战:CAS搭建实战:CAS搭建

【5】部署

将打包的cas.war文件放置在${TOMCAT_HOME}\webapps下,进入${TOMCAT_HOME}\bin下,运行startup.bat文件。

【6】测试

https://localhost:8443/cas/login

用户名:casuser

密码:Mellon

实战:CAS搭建实战:CAS搭建

实战:CAS搭建实战:CAS搭建

二、CAS客户端的搭建

【1】创建Spring Boot项目,在pom.xml增加cas-client

<dependency>
<groupId>net.unicon.cas</groupId>
<artifactId>cas-client-autoconfig-support</artifactId>
<version>1.5.0-GA</version>
</dependency>

【2】创建一个cas配置类

package com.cssweb.config;
@Configuration
@EnableCasClient
public class CasConfigure extends CasClientConfigurerAdapter {
@Override
public void configureAuthenticationFilter(FilterRegistrationBean authenticationFilter) {
super.configureAuthenticationFilter(authenticationFilter);
authenticationFilter.getInitParameters().put("authenticationRedirectStrategyClass","com.patterncat.CustomAuthRedirectStrategy");
}
}

注:EnableCasClient注解开启cas-client服务

【3】添加一个控制类

package com.cssweb.controller;
@RestController
@RequestMapping("user")
public class UserController {
@RequestMapping("queryUser")
public Map<String, String> queryUser(HttpServletRequest request){
Map<String,String> map = new HashMap<>();
map.put("name", "jcz");
map.put("session", request.getSession.getId())
return map;
}
}

注:访问 ip:port/user/queryUser进行cas测试

【4】配置application.yml

cas:
server-url-prefix=https://localhost:8443/cas/
server-login-url=https://localhost:8443/cas/login
client-host-url=http://localhost:8080
validation-type=cas

【5】测试

浏览器输入:localhost:8080/user/queryUser,会重定向到cas的服务器进行登录

实战:CAS搭建

实战:CAS搭建

登录后:

实战:CAS搭建

实战:CAS搭建

三、其他问题

CAS is unavailable

由于本人在cas-server选择使用的是Tomcat增加HTTPS支持这种方式,没有在cas服务器中增加HTTP支持,而cas-client使用的是http,所以当登录CAS后出现报错 CAS is unavailable.因此,我又在cas服务器增加HTTP的支持,详见cas服务器搭建【4】

猜想:若客户端也使用HTTPS,我认为应该无需增加HTTP支持(没有亲测)。


四、Github地址

cas-server:

https://github.com/JIANGCHENZHOU/cas-overlay-template-4.2

cas-client:

https://github.com/JIANGCHENZHOU/cas


五、参考资料

tomcat增加HTTPS支持:

http://www.cnblogs.com/wanghaoyuhappy/p/5267702.html

http://www.cnblogs.com/shipengzhi/articles/2628849.html

springboot-cas-client:

http://blog.****.net/liuchuanhong1/article/details/73176603

https://segmentfault.com/a/1190000007278169