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完成,基本完成单点登录和退出功能。
<上篇完>
分享到:
相关推荐
CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的...
cas-client-autoconfig-support, Apereo Java客户端支持基于注释的配置 cas-client-autoconfig-support 为CAS Java客户端提供基于注释的配置支持的库,这个项目是作为Unicon的开源支持程序的一部
cas 配置client 1.0 &2.0 及proxy DEMO 说明 1 cas server 搭建 1.1 资源准备 cas server 下载 http://www.ja-sig.org/downloads/cas/cas-server-3.3.1-release.zip 1.2 解压后打开cas-server-3.3.1-release\cas-...
cas单点登录源代码,客户端源代码,无错,配置好后,与服务器端结合在一起,可直接运行
单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决...CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
CAS认证中心starter,项目打包后放到要使用的项目中即可,通过简单的配置文件就可以使用了,注意本文提供的只是客户端 服务端需要自定搭建
Java Apereo CAS客户端介绍这是Java Apereo CAS客户端的官方主页。 客户端由一系列Servlet过滤器组成,这些过滤器...建立 git clone git@github.com:apereo/java-cas-client.gitcd java-cas-clientmvn clean package
1.如果客户端项目采用shiro控制权限 则需要将cas-client 认证过滤交给shiro来管理 2.从shiro下载相应版本的shiro-cas-xxxx. Jar或者在maven里直接添加
本人亲自试验的cas单点登录配置,服务端用cas-server-3.5.2,客户端用cas-client-3.2.1,里边详细描述了具体每一步的配置过程及遇到的问题及异常,相信你也会碰到的,cas-client-3.2.1中需要修改一个java类的源代码...
资源列表(1:cas CAS Server,2:Cas_Client_One 授权系统,3:graduationDesign 用户组织管理系统,4:CAS单点登录论文.doc,5:CAS单点登录文献综述.doc,6:基于CAS的用户管理单点登录门户系统ppt.ppt)
CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。 邮箱 erp oa 有一个特点 就是密码和用户名 单点登录 客户端到服务端 1首先要有一...
示例CASified Java Web应用程序这是一个示例Java Web应用程序,它通过Java CAS Client行使CAS协议功能。配置在文件中调整CAS服务器和应用程序服务器的url端点。 如果您希望执行代理身份验证,请在同一文件Cas20...
CAS 是 Yale (耶鲁)大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠...•CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,永久有效。 课程简介 本课程主要通过CAS来实现...l CAS Client客户端的搭建和配置 l 单点登录的测试 l 单点登出的实现和测试测试 l 单点登录、登出的原理探究等
受 Shiro CAS 客户端保护的 Java webapp ( ) Maven 演示使用来自 Shiro 项目 (v1.2.3) 的 CAS 客户端来保护 Web 应用程序。 使用mvn clean compile jetty:run在上启动 webapp。 url 'protected/index.jsp' 受保护...
springboot(springboot + shiro + oracle) + vue 集成cas
[置顶] SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) http://blog.csdn.net/ae6623/article/details/8851801 [置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas...
cas 单点登录 据演示需求,用修改hosts 文件的方法添加域名最简单方便(这个非常重要,因为CAS单点登录系统是基于JAVA安全证书的 https 访问, 要使用CAS单点登录必须要配置域名, cas是不能通过ip访问的.),编辑...