1、环境准备
软件 | 下载地址 |
---|---|
JDK8 | http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html |
Tomcat 8.5 | https://tomcat.apache.org/download-80.cgi |
Cas 5.1.X | https://github.com/apereo/cas-overlay-template |
2、配置流程
1)域名映射;
2)安装jdk并配置系统环境变量;
3)安装tomcat,创建密钥;
4)编译生成CAS war包。下载解压cas-overlay-template,在pom.xml文件中添加依赖包信息,修 改\etc\cas\config下的cas.properties文件,然后Maven编译生成cas.war;
5)部署war 包cas.war到Tomcat的\webapps\下,然后启动Tomcat实施CAS静态认证测试;
6)启动数据库服务。mysql数据,拟定数据结构,将测试数据导入数据库,启动mysql数据库服务
7)CAS认证配置。编辑\tomcat\webapps\cas\WEB-INF\classes下的application.properties文件,配置CAS,然后启动Tomcat实施CAS动态认证测试;
8)客户端应用单点登录测试。安装CAS客户端程序,在\tomcat\webapps\cas\WEB-INF\classes\services下添加JSON格式的客户端注册文件,客户端单点登录并返回用户认证的属性信息。
3、配置
3.1 域名映射
打开C:\Windows\System32\drivers\etc下的hosts文件,为本机地址127.0.0.1/localhost添加服务端域名(cas.server.org),以及两个客户端的域名(app1.client.org,app2.client.org)。
3.2 安装JDK 8
下载并安装JDK 8,安装完毕配置Windows系统环境变量,这样执行Java命令行工具时就不用敲全路径了:
1)新建JAVA_HOME变量,例如:C:\Program Files\Java\jdk1.8.0_112
2)在Path中添加路径:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
3)在Classpath中添加路径:.;
3.3 安装Tomcat 8.5,创建密钥
- 下载并安装Tomcat 8.5,安装完毕点击Tomcat \bin下的startup.bat启动Tomcat,然后在浏览器的地址栏输入http://cas.server.org:8080,显示如下Tomcat8.5页面表示安装成功,Tomcat HTTP协议的缺省端口为8080。
2)创建Tomcat服务的密钥库文件,进入C:\Program Files\Java\jdk1.8.0_112\jre\lib\security文件下,java的keytool工具命令为:
keytool -genkey -alias tomcat -keyalg RSA -validity 3650 -keystore D:\tomcat.keystore
其中:“-validity 3650”表示证书有效期10年,有效期缺省值90天;
“-alias tomcat”表示密钥库的别名是tomcat,实际操作都用别名识别,所以这个参数很重要;
下图中:“密钥库口令” 我设的是“123456”;
“名字与姓氏” 输入服务器域名
,其他的一路回车,最后如果显示正确输入“y”就行了;
密钥口令我采用与密钥库相同,即也是“123456”,因此也是一路回车。
之后进入D盘下,执行以下命令:keytool -list -keystore tomcat.keystore
查看生产密钥库的文件内容:
导出信任证书tomcat.cer,执行以下命令:keytool -export -alias tomcat -file d:/tomcat.cer -keystore d:/tomcat.keystore -validity 36500
将导出的信任证书tomcat.cer导入%JAVA_HOME%\jre\lib\security下的Java 运行环境证书库cacerts,证书库cacerts的缺省口令为changeit,执行一下命令:keytool -import -keystore cacerts -file d:\tomcat.cer -alias tomcat -storepass changeit
3)打开Tomcat8.5 文件夹下 /conf目录下的server.xml添加如下的Tomcat HTTPS协议配置信息,默认端口:8080
<Connector port="8080"
SSLEnabled="true" clientAuth="false" keystoreFile="d:\tomcat.keystore"
keystorePass="123456" maxThreads="150" protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https" secure="true" sslProtocol="TLS" connectionTimeout="20000" />
其中:clientAuth=“false” 表示单向HTTPS认证,就是服务器要向客户端出示信任证书(即:如果客户端也走HTTPS协议,只需要将tomcat信任证书导入客户端的keystore证书库中就可以了,客户端不用向服务器端出示证书)
4) 双击已经生产的tomcat.cer文件,将证书作为根证书导入浏览器,如果浏览器允许(火狐,任务自签名的证书不是安全证书)
4、MySql依赖
添加mysql数据库的依赖pom(cas-overlay-template下的pom)
<dependencies>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-webapp${
app.server}</artifactId>
<version>${
cas.version}</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
<!--服务注册-->
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-json-service-registry</artifactId>
<version>${
cas.version}</version>
</dependency>
<!--数据库认证相关 start-->
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc-drivers</artifactId>
<version>${
cas.version}</version>
</dependency>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-jdbc</artifactId>
<version>${
cas.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<!--数据库认证相关 end-->
</dependencies>
<properties>
<cas.version>5.1.3</cas.version>
<springboot.version>1.5.3.RELEASE</springboot.version>
<app.server>-tomcat</app.server>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
5、LDAP 依赖
添加LDAP的依赖pom(cas-overlay-template下的pom)
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-ldap</artifactId>
<version>${
cas.version}</version>
</dependency>
<properties>
<cas.version>5.1.3</cas.version>
<springboot.version>1.5.3.RELEASE</springboot.version>
<app.server>-tomcat</app.server>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
6、配置文件etc/cas/config/cas.properties中的域名
cas.server.name: https://cas.server.org:8080
cas.server.prefix: https://cas.server.org:8080/cas/login
cas.adminPagesSecurity.ip=127\.0\.0\.1
logging.config: file:/etc/cas/config/log4j2.xml
#客户端连接的话把注释去掉
#cas.serviceRegistry.config.location: classpath:/services
7、客户端应用单点登录
客户端连接服务端,服务端需要修改两个地方:
1)cas.properties 文件中
“#cas.serviceRegistry.config.location: classpath:/services”需要去掉注释。
2)将此文件创建cas-overlay-template-master\src\main\resources\services目录下
{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "^(https