部署环境
1 下载CAS Server 4.0 :https://github.com/apereo/cas/releases/tag/v4.0.0
这里选择4.0是因为其有官方release版本的cas-server-webapp-4.0.0.war。其他版本需要下载源码手动打包。
2 JDK 1.8.111 。注意环境变量配置:JAVA_HOME是指向哪个jdk路径,因为CAS Server是war包,用tomcat启动,tomcat通过JAVA_HOME寻找JDK。
3 TomCat 7.0.92 win64 。测试用过TomCat 8.5 出现404,cas-server配置完禁用https后,访问http://localhost:8080/cas/login总是报404,换 TomCat 7就可以正常访问。可能是8.5的默认配置有调整?
安装cas-server
下载CAS Server 4.0 :https://github.com/apereo/cas/releases/tag/v4.0.0 。解压缩下载下来的“cas-server-4.0.0-release.zip”
在“modules”文件夹中找到“cas-server-webapp-4.0.0.war”,将其重命名为“cas.war”,在将“cas.war”拷贝到TomCat 7.0.92的“\webapps”文件夹下。稍等一会儿刷新一下,就会看到Tomcat自动将“cas.war”解压到“cas”文件夹中
CAS禁用HTTPS,设置Cookie过期时间
若安全级别不高,不需要证书,可以选择禁用https启用http访问。
cas-server是基于spring开发的,其配置为spring-bean配置文件
在上一步解压“cas”文件夹中修改:
1.WEB-INF/deployerConfigContext.xml中增加参数 p:requireSecure="false" ,是否需要安全验证,即 HTTPS,false 为不采用 如下:< bean class = "org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref = "httpClient" p:requireSecure= "false" />
2. WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml中将p:cookieSecure="true"修改为 p:cookieSecure="false" 禁用https。p:cookieMaxAge 为过期时间,-1为浏览器关闭后失效。
3. WEB-INF/spring-configuration/warnCookieGenerator.xml中将p:cookieSecure="true"改为 p:cookieSecure="false" 禁用https。p:cookieMaxAge 为过期时间,-1为浏览器关闭后失效。
启动tomcat测试
win环境下双击TomCat 7.0.92\bin\startup.bat,Tomcat默认是8080端口,访问http://localhost:8080/cas/login,正常情况是CAS的官方登录页面。
若修改Tomcat的端口,必须要改CAS服务器的配置\WEB-INF\cas.properties的server.name
请手动输入账号与密码,默认账号:casuser,密码:Mellon; 如果用户名与密码相同,系统也显示登录成功;
图中Non-secure提醒因为禁用了HTTPS
使用startup.bat启动tomcat,可以查看cas-server的控制台信息。
https://blog.csdn.net/shanchahua123456/article/details/85570647
控制台信息:
测试环境是通过NGINX(:80)代理localhost:8787服务,localhost:8787项目配置了通用前缀/b,所以其根地址为localhost:8787/b。
服务端数据源设置
配置数据源,让CAS服务器到数据库中查询用户名密码做登录认证。
(1)修改 cas 服务端中 web-inf 下 deployerConfigContext.xml ,添加如下配置
<!--认证密码查询-->
<bean id="dbAuthHandler"
class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource"
p:sql="select password from tb_user where username = ?"
p:passwordEncoder-ref="passwordEncoder"/>
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/casdb?characterEncoding=utf8"
p:user="root"
p:password="root" />
<!--密码的解码格式-->
<!--CAS也支持已定义encoder,实现org.jasig.cas.authentication.handler.PasswordEncoder接口-->
<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
c:encodingAlgorithm="MD5"
p:characterEncoding="UTF-8" />
然后在配置文件开始部分找到如下配置,添加上面配置的dbAuthHandler
<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
<constructor-arg>
<map>
<entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
<!--添加自己配置的DB源查询-->
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>
<!--默认的primaryPrincipalResolver可以注释掉-->
<!--<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver"/>-->
</map>
</constructor-arg>
<property name="authenticationPolicy">
<bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" />
</property>
</bean>
(2)将以下三个 jar 包放入 webapps\cas\WEB-INF\lib 下
cas-server-support-jdbc-4.0.0.jar(在“cas-server-4.0.0-release.zip” 的“modules”文件夹中), mysql-connector-java-5.1.32.jar,c3p0-0.9.1.2.jar
国际化
修改WEB-INF\spring-configuration\applicationContext.xml,将国际化配置文件切换为汉语
<util:list id="basenames">
<value>classpath:custom_messages</value>
<value>classpath:messages_zh_CN</value>
</util:list>
自定义登录页面
默认统一使用的是CAS提供的登录页面。其路径是Cas-Server项目下\WEB-INF\view\jsp\default\ui\casLoginView.jsp 和 \WEB-INF\view\jsp\default\ui\includes\top.jsp。
将自己的js、css、image放到Cas-Server项目主目录的js、images、css 文件夹中。
修改:将原登录页面的样式/文字修改
替换:可以将自己的同名登录页面覆盖原页面casLoginView.jsp,
注意替换的登录页,要包含原登录页的主要表单元素和引用的js,jsp等标签