使用CAS实现单点登陆的相关配置,步骤如下:
1. 配置SSL
a) 生成证书
b) 将证书导出为证书文件
c) 将证书文件导入到java证书库cacerts中
d) 修改<TOMCAT_HOME>/conf下面得server.xml文件
2. 部署CAS服务器
3. 修改CAS登录的用户库
4. 测试是否配置成功
5. 配置过程中可能会出现的错误
下面就按照上面的步骤详细阐述:
1. 使用SSL
使用SSL需要使用的java提供的keytool.exe工具,如果配置了java环境变量,可以直接在命令窗口使用,如果没有则学要将目录CD到jdk的bin下。
a) 生成密钥对
使用下面的的命令
keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
密码是:changeit
姓名是:localhost
其他的提示输入的信息可以随便
这个命令生成的文件默认在当前目录,即CMD的当前目录C:\Documents and Settings\Administrator(如果没有使用cd命令)。
b) 将服务器证书导出为证书文件
使用下面的命令
keytool -export -alias tomcat -file tomcat.crt -keystore tomcat.keystore
这里注意一点,导出来的crt证书文件在双击打开的时候可能会看到有红叉在证书上, 这个时候只要按照向导安装完成就可以了。
c) 将证书文件导入到java证书库cacerts中
将在C:\Documents and Settings\Administrator下的tomcat.crt文件和在C:\Program Files\Java\jdk1.5.0_15\jre\lib\
(JDK不同位置可能不同)下的security拷贝到c:\下,然后运行下面的命令:
keytool -import -file c:\tomcat.crt -keystore c:\cacerts -alias tomcat
然后将cacerts文件拷贝回去,注意备份源文件。
tomcat.crt可以拷到tomcat_home下,这里为C:\Program Files\tomcat5.5.26。
这里还要注意一点的便是,使用的到底是jdk中的jre还是jre,要将证书导入相应的证书库中。
d) <TOMCAT_HOME>/conf下面得server.xml文件
打开server.xml文件,定位到
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"/>
-->
将下面的注释去掉并加入两个属性:
keystoreFile="C:\Program Files\tomcat5.5.26\tomcat.keystore"
keystorePass="changeit"
如下:
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="C:\Program Files\tomcat5.5.26\tomcat.keystore"
keystorePass="changeit"/>
其中keystoreFile指定tomcat.keystore文件的位置,
keystorePass指定服务器证书文件的密码。
2. 部署CAS服务器的WAR包
将cas-server-3.1.1-release.zip解压缩,把modules文件夹中的cas-server-webapp-3.1.1.war
文件拷贝到<TOMCAT_HOME>/webapps/下,改名为cas(这里的名字只是一种习惯,当然可以改成其他或不改),然后启动服务器,其会自动解压。
3. 修改CAS登录的用户库
CAS的默认设置是只要用户名和密码相同,即可进行登录成功,真正的系统用户名和密码相同的可能性极小,所以我们需要修改默认的设置。
主要的修改在deployerConfigContext.xml文件里
位置:<TOMCAT_HOME>/webapps/cas/WEB-INF。
首先找到
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
注释该行,加入下面的bean:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from clientuser where username=?" />
<property name="dataSource" ref="dataSource" />
</bean>
这里bean的class属性用到的是CAS服务器端封装的JDBC包cas-server-jdbc-3.0.5-rc2.jar里的
QueryDatabaseAuthenticationHandler方法,所以要将此包拷贝到/WEB-INF下的lib中。
这里sql属性是从clientuser表中根据cas登陆名查找密码。
dataSource属性需要再添加一个bean,如下:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://192.168.1.130:3306/sso</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>pass</value>
</property>
</bean>
4. 测试是否配置成功
启动tomcat之后,新打开得浏览器中输入https://localhost:8443即可看到安全报警对话框,选择是正确显示。说明CAS服务器已经配置成功并完成。
5. 配置过程中可能会出现的错误
a) 系统找不到指定的文件:(服务器启动时)
情况一,
C:\Documents and Settings\Administrator\.keystore (系统找不到指定的文件。)
情况二,
C:\Program Files\tomcat-5.5.26\server.keystore (系统找不到指定的文件。)
如果您只是在tomcat的server.xml配置中打开了8443端口,但没有用keystoreFile属性,
tomcat默认去找C:\Documents and Settings\Administrator\.keystore文件,如果没有找到就会出现情况一的错误,
如果使用了keystoreFile属性,但仍然没有server.keystore文件,就会出现情况二的错误。
b) Keystore was tampered with, or password was incorrect(服务器启动时)
当使用了keystorePass时且提供了错误的密码便会出现这个错误。
c) No name matching localhost found
这就是步骤 1-a)要求 姓名是:localhost的原因,当姓名不是localhost的时候,我们在CASFilter中使用localhost就会报这个错。
d) unable to find valid certification path to requested target
当服务器证书没有导入到jre的cacerts证书库的时候会出现这个错误,同样要注意要讲证书导入到tomcat使用的jre中。
相关推荐
cas服务端从头到尾完整构建文档。很详细。哪些容易出现的错误都标注好了。
CAS服务端的war包,执行build.sh run可以直接运行,如果运行时报错,则需要安装\etc\cas\thekeystore,这个是个证书。
CAS单点登录服务端部署
包括CAS服务器端war包和CAS两个客户端war包,用于单点登录cas实例的部署
本项目采用的maven构建,直接maven导入项目即可
cas服务端应用,war包,可直接使用,解压放进工程可直接配置
cas服务端代码,版本是4.0版本这个版本是maven 版本,稳定性不错所以我选这个
PHP CAS Server是一个基于Laravel框架开发的CAS服务端实现,旨在解决使用PHP技术栈的中小型公司因无法对Java版CAS服务端二次开发而放弃使用CAS的问题,因此本项目的核心目标之一就是易于扩展。功能:目前已经实现了...
采用https协议,mysql数据库,参考文档http://blog.csdn.net/qq_27556567/article/details/77880295;有问题可以留言
cas代码及其相关内容,代码内有注释,方便理解,简单配置直接运行,需要先配好证书
包含cas源码、cas使用说明文档(包含配置信息)、连接数据库所需jar包、cas服务端自定义返回值等
cas4.2.7服务端+cas客户端+示例程序+环境搭建之客户端war包 一切跑不起来的程序和走不通的...该客户端的这个URL还演示了如何调用cas服务端获取当前登录用户的相关信息(由服务端负责从数据库中读取后返回给cas客户端)。
cas服务端和客户端可用代码,数据库是直接查询mysql 自定义。客户端是spring boot项目。直接运行可用
cas 服务端 单点登录 集中验证 源码 cas 服务端 单点登录 集中验证 源码
对CAS的服务端进行改造,改造时使用了Maven来管理代码。此次改造实现了自定义登录验证、向客户端传输更多用户信息、登出允许携带参数等功能。应用中用到的Oframer请至我的资源中下载。
Cas服务端部署 认证采用MD加密方式 只需要修改 deployerConfigContext.xml 中的配置信息即可直接使用
cas服务端所需jar包,c3p0-0.9.1.2.jar 、cas-server-support-jdbc-4.0.0.jar、 mysql-connector-java-5.1.13-bin.jar
CAS5.3.2Docker 部署方案CAS5.3.2Docker 部署方案CAS5.3.2Docker 部署方案
java单点登录服务端代码,基于开源的cas架构。
NULL 博文链接:https://starbhhc.iteye.com/blog/2302902