转自:http://hi.baidu.com/zh_m_zhou/blog/item/a6236da5765bd6f09052ee8f.html
作者:pocky
引言
SSO,即Single sign on/off,单点登录/退出。
CAS,全称JA-SIG Central Authentication Service,实现SSO的开源项目。
说明
CAS的相关文档在网上可谓铺天盖地,可是对于企图搭架构起CAS服务的新手,往往会发现,介绍理论的文章没有结合操作;介绍操作的文章又缺胳膊断腿,并不能真正按部就班的架构起一个完整的单点登录/退出的服务。
本文就将以操作步骤为主,尽可能完整的讲述一个cas的客户端和服务端在tomcat下部署和配置的过程,至于理论知识,请读者自行搜索,或者参考文章末尾的参考资料。
环境
Windows XP
JDK1.5
Tomcat6.0
准备1
安装JDK,eclipse,tomcat
准备2
到CAS官方站点下载CAS的客户端和服务器端
官方地址为:http://www.ja-sig.org/products/cas/
下载页面为:http://www.ja-sig.org/products/cas/downloads/index.html
到下载页面下载以下3个zip包:
第一个,CAS Server,这个是CAS的服务器端(当前最新版本是3.3.1)
第二个,JA-SIGCAS Java Client,这个是官方开发的CAS的客户端,用于单点退出。特别注意事项:当前只有这个客户端(JA-SIGCAS Java Client)的3.1.2及以上版本支持单点退出(当前最新版本是3.1.3)
第三个,Yale CAS Client,这个是耶鲁大学开发的CAS的客户端,用于单点登录,不支持单点退出(当前最新版本是2.0.11)
下载后的ZIP包安放于c:\resource\cas目录下,分别解压于当前目录。
准备工作结束,开始正式操作。
步骤1:制作密钥
开始-运行-CMD
先测试一下,键入:(键入尖括号右面的代码。尖括号不要键入,下同)
>keytool
如果没有出现帮助说明,说明Path没有配置,如何配置不会的自己baidu。
配置好了重新打开CMD窗口,转到c:\resource\cas目录下。
怎么转?好吧,不会的按照下面的代码键入:
>c:
>cd\
>cd resource\cas
接下来开始生成密钥,键入:
>keytool -genkey -alias tomcat -keystore ./mykeystore -keyalg RSA -validity 2000
password:changeit
Common Name/Your Name:localhost
剩下的随便输入
确认,输入"yes",中文的话输入"是"
最后,使用密码相同,直接回车
操作成功的话,会在c:\resource\cas目录下产生一个mykeystore的文件
继续键入:
>keytool -export -alias tomcat -keystore ./mykeystore -file server.crt
Keystore password:changeit
操作成功的话,会在c:\resource\cas目录下产生一个server.crt的文件
继续键入:
>keytool -import -alias tomcat -file ./server.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts
Keystore password:changeit
特别说明:这个%JAVA_HOME%是指tomcat需要使用的JDK,当然,如果按照本文后面的用eclipse里配置的tomcat,那%JAVA_HOME%就是eclipse中tomcat所配置的JDK,如果你配到其他的jdk上,到后面实际访问服务端的时候会出现异常:unable to find valid certification path to requested target
tomcat所配置的JDK是哪个?不知道?查看eclipse中tomcat所配置的JDK的方法:
Eclipse下菜单window-preperences-myEclipse-servers-tomcat-tomcat6-jdk-tomcat JDK name,这个tomcat JDK name对应的是window-preperences-java-installed JREs下的name属性,其对应的location就是jdk的路径了。
至此,步骤1完成。
步骤2:配置tomcat
打开%TOMCAT_HOME%/conf/server.xml,其中有这么一段代码
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
这段代码当前状态是被注释掉的,将他打开,并完善成如下代码:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="c:/resource/cas/mykeystore "
keystorePass="changeit"/>
注意事项:其中的keystoreFile="c:/resource/cas/mykeystore" ,配置上后此文件不可被删除,不然tomcat会报错:找不到此文件。
保存关闭文件,步骤2完成。
步骤3:配置CAS服务端
在c:\resource\cas\cas-server-3.3.1-release\cas-server-3.3.1\modules目录下,有个cas-server-webapp-3.3.1.war的war包,复制到%TOMCAT_HOME%/webapps目录下,并更名为cas_server.war
因为我们刚才配置的是eclipse使用的JDK,所以现在通过eclipse启动tomcat
访问http://localhost:8080/cas_server,出现登录页面,说明部署成功。
尝试下登录,用户名和密码相同就可以登录成功。
步骤4:配置CAS客户端
在eclipse中新建一个web工程,名字:cas_client1
将c:\resource\cas\cas-client-2.0.11\cas-client-2.0.11\java\lib\casclient.jar复制到工程cas_client1的lib下面(用于单点登录)
将c:\resource\cas\cas-client-3.1.3-release\cas-client-3.1.3\modules目录下的cas-client-core-3.1.3.jar复制到工程cas_client1的lib下面(用于单点退出)
将c:\resource\cas\cas-client-3.1.3-release\cas-client-3.1.3\modules目录下的commons-logging-1.1.jar复制到工程cas_client1的lib下面(用于单点退出)
在工程cas_client1的web.xml中增加如下代码:
<!-- 用于单点退出 -->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<!-- 用于单点登录 -->
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://localhost:8443/cas_server/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://localhost:8443/cas_server/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意事项:web.xml中的filter要注意先后顺序,CAS Single Sign Out Filter相关配置要放在原先配置的CAS Filter的前面(至少filter-mapping要在前面)
至此,步骤4完成。
测试:同时将cas_client1和cas_server发布一下,访问http://localhost:8080/cas_client1,将自动跳转到服务端的登录页面,填写相同的用户名和密码,则成功登录并跳转回客户端的。
步骤5:单点登录和退出
按照步骤4 的流程,再创建web工程,名字:cas_client2
同时部署server,client1,client2
测试1:访问client1,登录后可以直接访问client2
测试2:访问client2,登录后可以直接访问client1
测试3:登录client1,退出后可以不可访问client1和client2
如何退出?访问https://localhost:8443/cas_server/logout就退出了。
注意事项:访问形如http:// localhost:8080/cas_server/logout,这种通过http方式访问退出是不行的!!因为你不通过https来注销,CAS Server怎么"杀"掉它通过https发给你的TGC Cookie?
至此,步骤5完成,基本完成单点登录和退出功能。
<上篇完>
分享到:
相关推荐
通过以上步骤,你将成功地在Tomcat上配置了一个基于CAS的SSO系统,实现了用户一次登录,多处通行的目标。不过需要注意的是,实际部署中可能还需要考虑安全性、性能优化以及与其他系统的集成等问题,因此在生产环境中...
总结来说,实现使用CAS在Tomcat6中进行单点登录,需要理解SSO的基本概念,熟悉CAS的工作原理和协议流程,掌握CAS Server的部署和配置,以及CAS Client在Tomcat中的集成。通过这些步骤,可以构建一个安全且方便的单点...
基于Tomcat6的CAS SSO配置涉及的主要知识点包括SSO(Single Sign-On,单点登录)、CAS(Central Authentication Service,中心认证服务)、SSL(Secure Socket Layer,安全套接层)以及Tomcat服务器的配置。...
然后,CAS Server作为Java Web应用部署在Tomcat上,通常需要根据具体需求扩展用户验证接口,以适应不同组织的认证策略。 部署CAS Server的步骤包括: 1. 配置Tomcat使用HTTPS,这涉及到生成SSL证书和修改Tomcat的`...
综上所述,通过使用CAS在Tomcat中实现单点登录不仅能够提高用户体验,还能显著增强系统的安全性。开发者需要注意的是,虽然CAS提供了许多内置功能来简化开发过程,但仍然需要仔细配置各项参数以满足特定需求。此外,...
2. 配置CAS客户端:在每个需要SSO的应用(即Tomcat上的Web应用)中,配置CAS客户端库,如jasig-cas-client,修改`web.xml`文件,设置相关参数如CAS服务器URL和服务验证URL。 3. 跨域配置:如果应用分布在不同的域下...
SSO(Single Sign-on)技术是一种允许...通过以上步骤,我们可以成功地在Tomcat环境中搭建一个基于CAS的SSO系统,实现用户单点登录的需求。SSO技术极大地提高了用户体验,减少了登录次数,同时也简化了系统的安全管理。
4. **部署CasServer**:将CasServer的WAR文件放入Tomcat的`webapps`目录下,Tomcat会自动解压并启动CasServer的服务。 5. **测试与调试**:启动Tomcat后,访问CasServer的默认URL(通常是`...
2. **配置CAS Client**:在每个需要SSO功能的Tomcat应用中,部署CAS客户端组件,如`cas-server-support-spring-boot-starter`。这通常涉及修改应用的`web.xml`或使用Spring Boot的配置来配置客户端的URL、服务验证...
- 灵活的部署方式:CAS可以部署在各种Web服务器上,如Tomcat等。 #### CAS 的部署步骤详解 为了更好地理解CAS的工作流程和具体实施步骤,以下将详细介绍如何搭建一套简单的CAS环境: 1. **下载CAS Server与Client...
SSO(Single Sign-On)是单点登录的缩写,是一种网络用户认证的机制,它允许用户在一次登录后,可以访问多个相互信任的应用系统,而无需...在阅读文档和实践操作的过程中,你将深入理解SSO的工作原理和CAS的实施细节。
在Tomcat服务器中集成Yale CAS以实现SSO,首先需要下载CAS服务器和客户端的发行包。这两个包可以从官方提供的链接获取,分别是cas-server-2.0.12.zip和cas-client-2.0.11.zip。解压缩CAS服务器的war文件(cas.war)...
2. **Tomcat配置**:在"apache-tomcat-8.0.30-cas"目录下,部署了CAS服务器,需要配置CAS服务器的相关参数,如服务器地址、端口、数据库连接等。而"apache-tomcat-8.0.30-app1"和"apache-tomcat-8.0.30-app2"则作为...
9. **部署与配置**:CAS可以部署在多种环境中,如Tomcat、Jetty等Web服务器,配置通常涉及设置服务器端点、数据库连接、认证策略等。 10. **最佳实践**:在实施CAS时,应考虑最佳实践,如使用HTTPS、定期更新CAS...
在这个实例教程中,我们将重点讨论如何使用中央认证服务(Central Authentication Service,简称CAS)在Apache Tomcat服务器上实现SSO。 CAS是一个开源的身份验证框架,它提供了统一的登录界面,用户只需一次登录,...
CAS(Central Authentication Service...总的来说,这些文档提供了全面的指导,帮助开发者在Linux上的Tomcat环境中实现CAS单点登录,涵盖了从基础理论到具体实践的各个层面,对于理解SSO机制和实际操作具有很大的价值。
3. **CAS服务器的部署**:将CAS服务器的war文件部署到Tomcat或其他Servlet容器中,并根据组织的特定需求进行定制,如自定义登录界面或集成其他认证机制。 4. **客户端集成**:每个需要SSO功能的应用需要配置为CAS...
通常,CAS会使用Tomcat或Jetty等应用服务器进行部署。 3. **CAS认证流程**: - **预认证阶段**:用户尝试访问受保护的应用,被重定向到CAS Server的登录页面。 - **登录验证**:用户提交用户名和密码,CAS Server...
在4.2.7版本中,CAS的部署方式采用了WAR overlay技术,这是一种优化的打包策略,允许开发者在不修改CAS源码的情况下,自定义CAS服务器的行为和外观。 首先,理解WAR文件:WAR(Web Application Archive)是Java Web...
1. **安装CAS服务器**:在一台服务器上部署CAS服务,例如使用Tomcat或其他支持Java的Web服务器。 2. **配置CAS服务**:定制CAS服务器的配置,如认证策略、主题模板等。 3. **CAS客户端集成**:在Linux系统或应用中...