一、前言
好记性不如烂笔头,最近弄完CAS的SSO,把过程整理记录一下,方便以后查阅
本教程使用的SSO服务器是Yelu大学研发的CAS(Central Authentication Server)
官网:http://www.jasig.org/cas
二、环境
Tomcat7
JDK7
CAS Server版本:cas-4.1.x,可上git下载
IDE:IDEA 14.1.7
三、生成服务端
下载CAS服务端压缩包,里面只有源代码,还需要自己打包
使用IDEA打开源码包,见下图,中间maven可能各种报错,这里就不一一说明,自行百度
从右边Maven Projects找到CAS Web Application,双击install,见下图,中间可能各种报错,自行百度
install完成转到左边的项目区,找到cas-server-webapp,看target目录下是否生成cas.war,见下图,到这里,服务端的生成就完成了
四、Tomcat部署服务端
首先生成证书,CAS是需要使用HTTPS的协议的,HTTP协议的也能配,但是实际测试的时候各种问题,不建议
证书生成使用用JDK自带的keytool
进入控制台,到JDK的bin目录,看看是否有个keytool.exe
接下来执行证书生成命令,本地测试的话域名就写localhost好了,默认证书是3个月有效期,可以加个有效期的选项-validity,这个是100年,口令设置好了要记得
注意名称与姓氏一定要填域名,其他项可以不写
命令:keytool -genkey -alias localhost -keyalg RSA -keystore D:/localhost -validity 36500
导出证书
命令:keytool -export -file d:/localhost.crt -alias localhost -keystore d:/localhost
查看是否生成证书了
接下来将证书导入到JDK中,Server端和Client端的都导一下,这边Server端和Client端共用JDK,导一次就好了,路径中带空格的要用双引号
命令:keytool -import -keystore "C:\Program Files\Java\jdk1.7.0_67\jre\lib\security\cacerts" -file D:/localhost.crt -alias localhost
JDK自带证书的密码是changeit,有的文章说把自带的删了,这里会重建一个新的,不要这样做,自带证书有些是有用的,删了会导致其他问题
证书导完了,接下来就可以配置Tomcat了
这里用的是maven的Tomcat插件,首先找到cas-server-webapp的pom.xml,增加插件配置,注意keystoreFile和keystorePass
<plugin>
<!-- 插件在仓库里的group ID -->
<groupId>org.apache.tomcat.maven</groupId>
<!-- 插件在仓库里的artifact ID -->
<artifactId>tomcat7-maven-plugin</artifactId>
<!-- 被使用的插件的版本(或版本范围) -->
<version>2.0</version>
<!-- 作为DOM对象的配置 -->
<configuration>
<port>8001</port>
<path>/cas</path>
<uriEncoding>UTF-8</uriEncoding>
<keystoreFile>${project.basedir}\localhost</keystoreFile>
<keystorePass>123456</keystorePass>
<httpsPort>9001</httpsPort>
</configuration>
</plugin>
复制刚才生成的证书到cas-server-webapp的项目目录下
在Maven Projects处启动Tomcat插件
启动完成后,先打开HTTP的地址http://localhost:8001/cas,上面会提示要使用HTTPS
在打开https://localhost:9001/cas,正常了
默认的登录账户是casuser/Mellon,试一下,登录成功
账户是在WEB-INF的deployerConfigContext.xml里配置,这是一个TODO项,后续要做修改
嗯,Server端的安装到这里结束,下一讲是CAS Server的改造