CAS单点登录服务器搭建

关于cas单点登录的原理及介绍这里不做说明了,直接开始:

1、war包下载

去官网(https://www.apereo.org/projects/cas/download-cas)下载cas_server-webapp_xxx.war文件,这里使用的是cas-server-webapp-4.0.0.war。(这里吐槽下,由于cas源码及war包都已经放到github上面去了,导致下载速度很慢或者无法下载,最后无奈之下去CSDN下载了。。。)

2、创建证书

证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;由于是个人学习测试所以就直接用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供商去购买,证书认证一般都是由VeriSign认证,中文官方网站:http://www.verisign.com/cn/

用JDK自带的keytool工具生成证书:

keytool -genkey -alias cas -keyalg RSA -keystore e:/keys/cas

根据提示信息输入相关数据回车即可(这里注意要记住创建时的密码)。

3、导出证书

keytool -export -file e:/keys/cas.crt -alias cas -keystore e:/keys/cas

如果提示:

keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

那么请输入密码:changeit

至此导出证书完成,可以分发给应用的JDK使用了。

4、为客户端的JVM导入证书

keytool -import -keystore "C:Program FilesJavajdk1.8.0_101jrelibsecuritycacerts" -file e:/keys/cas.crt -alias cas

同第3步一样,如果提示输入密码,请输入changeit,至此证书的创建、导出、导入到客户端JVM都已完成,下面开始使用证书到Web服务器中,这里我使用的是tomcat7服务器。

5、应用证书到web服务器

打开tomcat目录的conf/server.xml文件,设置如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="e:/keys/cas"  
               keystorePass="111111"/>

参数说明:

  • keystoreFile:在第一步创建的key存放位置
  • keystorePass:创建证书时的密码

6、启动tomcat服务器

将第1步下载好的war包放到tomcat的webapp目录下,启动tomcat,访问https://localhost:8443/cas/login页面,输入casuser/Mellon可以成功登录表示服务器已经搭建完成。

查看配置文件deployerConfigContext.xml可以获取默认的用户名和密码信息,后续会详细说明该配置文件。

 登录成功

7、数据库用户认证方式配置

在之前的步骤里面,我们已经初步完成了cas单点登录服务器的搭建,但是很明显上述用户的验证方式不是我们想要的,下面我们来进一步配置cas服务器怎么读取数据库的信息进行身份验证,首先打开:

webapp/cas/WEB-INF/deployerConfigContext.xml

然后进行如下配置修改:

  <!--**********************************注释*****************************************************
  <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
  **************************************注释**************************************************-->   <entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver" /> <!--**********************************注释***************************************************** <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://localhost:3306/ssm?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" p:user="root" p:password="1234" /> <!-- Define the encode method--> <bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" c:encodingAlgorithm="MD5" p:characterEncoding="UTF-8" /> <bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler" p:dataSource-ref="dataSource" p:sql="select password from t_user where username=?" p:passwordEncoder-ref="passwordEncoder"/> <!--***********************************新增*************************************************-->

最后,加入以下依赖包:c3p0-0.9.1.2.jar,MySQL-connector-Java-5.1.21.jar,cas-server-support-jdbc-4.0.0.jar

重启tomcat服务器,发现已经可以使用数据库用户进行登录了。

---------------------------------------------------------------------------------------------------------------------------- 

ps:除了代码之外,咱还可以聊点别的,有兴趣可以关注我的个人微信公众号!

原文地址:https://www.cnblogs.com/ssrstm/p/6001394.html