这几天公司业务上需要使用到CAS单点登录,于是自己动手做了一个简易的小例子。
一、环境:
1.tomcat-7.0.70
2.jdk1.7.0_79
3.CAS Server版本 : 4.0.0(https://www.apereo.org/projects/cas/download-cas)4.CAS Client版本:3.3.3(http://developer.jasig.org/cas-clients/)
二、创建证书
这里使用的是本机上安装的JDK自带的keytool工具生成证书。
生成证书命令:keytool -genkey -alias ymkj -keyalg RSA -keystore d:/key/ymkjkey(先已手动创建了D盘下key文件夹)
三、导出证书
导出证书命令:D:\keys>keytool -export -file d:/key/ymkj.crt -alias ymkj -keystore d:/key/ymkjkey
命令:keytool -import -keystore C:\Java\jdk1.7.0_79\jre\lib\security\cacerts -file d:/key/ymkj.crt -alias ymkj
注意,因为通常情况下JDK是安装在C:\Program Files目录下,所以会出现这样的问题:
因此,故将C:\Program Files目录下的JAVA文件夹拷贝到C盘目录下,再更新环境变量JAVA_HOME、JRE_HOME为当前的路径。最后执行导入证书命令并信任这个认证(输入y)。
如果提示:
keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect,那么输入密码:changeit
这是因为JDK安装后会默认创建一个密钥库,密码为:changeit
五、应用证书到tomcat
打开tomcat目录的conf/server.xml文件,找到:
修改为:
maxThreads="150" port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
scheme="https" secure="true" sslProtocol="TLS"/>
六、配置CAS Server
可在网上下载 cas-server-webapp-4.0.0.war文件,然后改名为cas.war,然后复制cas到tomcat/webapps目录下
在C:\Windows\System32\drivers\etc\hosts内,添加:
127.0.0.1 sso.ymkj.com
127.0.0.1 sso.ymkj1.com
127.0.0.1 sso.ymkj2.com
第一个用于 CAS Server,第二个和第三个将用于CAS Client1和CAS Client2
访问CAS应用了,要使用HTTPS加密协议访问,
1.在地址栏输入:https://sso.ymkj.com:8443/cas/login
2.点击继续浏览,输入CAS Server 4.0.0默认的登录名和密码casuser /Mellon :
4.如果需要退出,地址栏输入: https://sso.ymkj.com:8443/cas/logout
至此,CAS Server 配置初步完成。
九、配置客户端
1.下载两个tomcat,改名为tomcat-ym1,tomcat-ym2
2.增加新环境变量CATALINA_HOME1,CATALINA_HOME1,以及CATALINA_BASE1, CATALINA_BASE2,值分别为两个新的tomcat的地址
3.修改tomcat-ym1,tomcat-ym2中的startup.bat,把其中所有的CATALINA_HOME改为 相应的CATALINA_HOME1,CATALINA_HOME2。
4.修改tomcat-ym1,tomcat-ym2中的catalina.bat,把其中所有的CATALINA_HOME改为相应的CATALINA_HOME1,CATALINA_HOME2。CATALINA_BASE改为相应的CATALINA_BASE1,CATALINA_BASE2。
5.修改tomcat的端口(5处)
在tomcat-ym1,tomcat-ym2中的conf/server.xml文件中找到如下3处内容:
、
、
,
分别改为:
以及
6.配置拦截器
在tomcat-ym1,tomcat-ym2中的webapps\root\WEB-INF\web.xml 中,分别添加:
casServerLogoutUrl
https://sso.ymkj.com:8443/cas/login
org.jasig.cas.client.session.SingleSignOutHttpSessionListener
CAS Single Sign Out Filter
org.jasig.cas.client.session.SingleSignOutFilter
CAS Single Sign Out Filter
/*
CAS Filter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
https://sso.ymkj.com:8443/cas/login
serverName
http://sso.ymkj1.com:18080
CAS Filter
/*
CAS Validation Filter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
https://sso.ymkj.com:8443/cas
serverName
http://sso.ymkj1.com:18080
CAS Validation Filter
/*
CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CAS HttpServletRequest Wrapper Filter
/*
CAS Assertion Thread Local Filter
org.jasig.cas.client.util.AssertionThreadLocalFilter
CAS Assertion Thread Local Filter
/*
和:
casServerLogoutUrl
https://sso.ymkj.com:8443/cas/login
org.jasig.cas.client.session.SingleSignOutHttpSessionListener
CAS Single Sign Out Filter
org.jasig.cas.client.session.SingleSignOutFilter
CAS Single Sign Out Filter
/*
CAS Filter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
https://sso.ymkj.com:8443/cas/login
serverName
http://sso.ymkj2.com:28080
CAS Filter
/*
CAS Validation Filter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
https://sso.ymkj.com:8443/cas
serverName
http://sso.ymkj2.com:28080
CAS Validation Filter
/*
CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CAS HttpServletRequest Wrapper Filter
/*
CAS Assertion Thread Local Filter
org.jasig.cas.client.util.AssertionThreadLocalFilter
CAS Assertion Thread Local Filter
/*
7.添加jar包
下载cas-client-3.3.3,解压之后将modules目录下的jar包根据自身情况拷入到tomcat-ym1\webapps\ROOT\WEB-INF\lib里(我是选择全部拷入)和tomcat-ym2\webapps\ROOT\WEB-INF\lib里。
我使用的是MySQL数据库:
1、需要的jar包有cas-server-support-jdbc.jar,mysql-connector-java-5.1.24, c3p0-0.9.1.2.jar,拷入到webapps\cas\WEB-INF\lib 中
2、在cas\WEB-INF下找到deployerConfigContext.xml进行修改:
注释掉:
添加:
再找到id=authenticationManager的bean,
是为了注释掉key-ref="primaryAuthenticationHandler"的部分,然后引入id=dbAuthHandler的bean。
3、重启tomcat 进行验证:打开tomcat-ym1,然后输入数据库user表中存储的用户名和密码:
点击login,验证成功。
page 1 welcome you
to page 2----
-------logout
和
page 2 welcome you
to page 1----
-------logout
tomcat-ym1页面:
点击超链接跳转到tomcat-ym2:
至此,这个小例子就完成了~