CAS单点登录学习笔记--CAS Server搭建(一)

CAS单点登录学习笔记–CAS Server搭建(一)

最近在学习单点登录框架CAS,首先先尝试搭建CAS Server,在其中遇到了各种问题,也参考了很多前辈的博客文章。做一个总结,避免以后走弯路。
一、下载cas server源代码,这里下载cas 4.2.7版本
1、下载地址:https://github.com/apereo/cas/releases/tag/v4.2.7
2、首先确保本地安装配置好了gradle,jdk。我本地配置 gradle用的4.6版本;jdk用的1.8版本
3、进入DOS窗口运行gradle -version和java -version看环境是否配置好。
4、解压第一步下载的cas 4.2.7版本,进入到cas-server-webapp目录,执行gradle build


注意事项:
1、cas 4.2.7版本默认jdk是1.7,我本地配置的jdk1.8;所以修改代码中的jdk版本。gradle.properties
sourceCompatibility=1.8
targetCompatibility=1.8

2、有个jar包中央仓库中没有,nl.eveoh:gradle-aspectj:1.6,自己去github:https://github.com/eveoh/gradle-aspectj下载下来编译打包,并上传到Maven仓库

mvn install:install-file -Dfile=F:\workspace_sourceCode\gradle-aspectj-1.6\gradle-aspectj-1.6\build\libs\gradle-aspectj-1.6.jar -DgroupId=nl.eveoh -DartifactId=gradle-aspectj -Dversion=1.6 -Dpackaging=jar

3、修改build.gradle的仓库下载顺序,优先有本地仓库下载jar包。
在这里插入图片描述
在这里插入图片描述
二、生成jdk证书
1、生成jks

keytool -genkey -alias cascer -keyalg RSA -keypass 123456 -keystore cascer.jks -storepass 12345

在这里插入图片描述
2、导出cer证书

keytool -export -file cascer.cer -alias cascer -keystore cascer.jks -storepass 123456

3、将cer证书导入到jdk中被信任:

将cascer.cer拷贝到D:\tools\java\jre1.8.0_25\lib\security,进入DOS窗口的D:\tools\java\jre1.8.0_25\lib\security目录
输入:keytool -import -trustcacerts -alias cascer -file cascer.cer -keystore "D:\tools\java\jre1.8.0_25\lib\security\cacerts" 
输入密码:changeit
 java中cacerts证书库默认密码为changeit
需要自行修改cacerts文件路径

在这里插入图片描述
如果报错FileNotFound错误就是没导入成功,cas客户端访问的时候会报错。
三、配置TOMCAT
1、将第生成的包cas-server-webapp-4.2.7.war,拷贝到webapps目录下,修改成cas.war包,解压,然后删除war包
2、配置修改tomcat的配置conf/server.xml

    <Connector port="8443" 
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="conf/cascer.jks" 
			   keystorePass="123456" protocol="org.apache.coyote.http11.Http11NioProtocol"/>

3、修改WEB-INF\cas.properties的默认登录用户名和密码,多个用户名和密码用逗号分隔

accept.authn.users=casuser::Mellon,root/123456

4、启动tomcat,浏览器访问:https://localhost:8443/cas,用casuser/Mellon登录
在这里插入图片描述
登录成功:
在这里插入图片描述
四、通过访问数据库,查询表,登录验证
1、TOMCAT项目目录\webapps\cas\WEB-INF\lib,新增两个jar包cas-server-support-jdbc-4.2.7.jar,mysql-connector-java-5.1.32.jar
2、修改deployerConfigContext.xml,注释掉

 <!--<alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler" /> -->

新增配置:

	<!--begin 从数据库中查询用户名密码 -->
	<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">
		<constructor-arg value="MD5"/>
	</bean>
	
	<bean id="queryDatabaseAuthenticationHandler" name="primaryAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
		<property name="passwordEncoder" ref="MD5PasswordEncoder" />
	</bean>
	
	<alias name="dataSource" alias="queryDatabaseDataSource"/>

	<bean id="dataSource" 
		class="com.mchange.v2.c3p0.ComboPooledDataSource" 
		p:driverClass="com.mysql.jdbc.Driver" 
		p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/cas_server?characterEncoding=utf8" 
		p:user="root" 
		p:password="123456" 
		p:initialPoolSize="6" 
		p:minPoolSize="6" 
		p:maxPoolSize="18" 
		p:maxIdleTimeExcessConnections="120" 
		p:checkoutTimeout="10000" 
		p:acquireIncrement="6" 
		p:acquireRetryAttempts="5" 
		p:acquireRetryDelay="2000" 
		p:idleConnectionTestPeriod="30" 
		p:preferredTestQuery="select 1"/>
	<!--begin 从数据库中查询用户名密码 -->

备注:注意修改成自己的数据库连接
3、修改\webapps\cas\WEB-INF\cas.properties文件

cas.jdbc.authn.query.sql=select password  from  user  where userName=? and isValid='1'

4、执行建表语句

drop table user;
CREATE TABLE `user` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `userName` varchar(32) DEFAULT NULL COMMENT '用户名',
  `password` varchar(64) DEFAULT NULL COMMENT ' MD5加密的密码',
  `isValid` char(1) DEFAULT '0' COMMENT ' 是否有效 0-无效,1-有效',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1000000000 DEFAULT CHARSET=utf8;

INSERT INTO `user`(userName,password,isValid) VALUES ('root', 'e10adc3949ba59abbe56e057f20f883e', '1');
INSERT INTO `user`(userName,password,isValid) VALUES ('casuser', '9414f9301cdb492b4dcd83f8c711d8bb', '1');

备注:密码是MD5加密的
用户名/密码:root/123456,casuser/Mellon
5、重新登录验证

参考博客:
https://blog.51cto.com/wangguangshuo/2050364
https://blog.csdn.net/u010734213/article/details/81774405

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章