搭建cas单点登陆
- cas部署war包下载
去官网(https://www.apereo.org/projects/cas/download-cas)下载源码。注意由于新版本的源码不包含war包,需要自己编译构建,故本博下载的是4.0.0版本,https://github.com/apereo/cas/releases/tag/v4.0.0。安装war包在:对应下载目录/cas-server-4.0.0/modules/cas-server-webapp-4.0.0.war 。为了方便访问路径,修改war名称为cas.war
- 生成证书,此步可跳过
由于https访问必须带证书,故需生成证书。本博采用http访问,故不详细介绍
- 部署war并启动tomcat服务器
tomcat容器默认8080端口,如未修改过端口,访问URL:http://localhost:8080/cas/。如图
默认登陆名:casuser,密码:Mellon。
用户密码在此处cas/WEB-INF/deployerConfigContext.xml配置:
<bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"><property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
</bean>
- 读取数据库用户信息
默认用户名肯定不能满足需求,故需要让用户名密码读取数据库信息。打开配置文件cas/WEB-INF/deployerConfigContext.xml。将用户名密码的这个bean注释掉。
<!--
<bean id="primaryAuthenticationHandler"
class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
</bean>
-->
新增如下配置:
<!--**********************************新增**************************************************-->
<!-- Define the DB Connection -->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://192.186.88.31:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8"
p:user="test"
p:password="test" />
<!--密码不能明文显示,此处采用md5加密-->
<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
c:encodingAlgorithm="MD5"
p:characterEncoding="UTF-8" />
<bean id="primaryAuthenticationHandler"
class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource"
p:sql="select password from cas_user where user_name=?"
p:passwordEncoder-ref="passwordEncoder"/>
<!--***********************************新增*************************************************-->
- 新增cas用户表,新增用户
CREATE TABLE `cas_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`user_name` varchar(50) DEFAULT NULL COMMENT '用户名',
`password` varchar(100) DEFAULT NULL COMMENT '密码的md5值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='cas登陆用户';
插入一个用户密码。nnnn的md5值:e371cc061fc928ff5a6072f477b18c67
INSERT into cas_user (user_name,password) VALUES ('yangxiaohu', 'e371cc061fc928ff5a6072f477b18c67');
增加c3p0-0.9.1.2.jar,MySQL-connector-Java-5.1.21.jar,cas-server-support-jdbc-4.0.0.jar,依赖jar包,重启tomcat
此时输入用户名:yangxiaohu,密码:nnnn 即可登录成功。