`
隐形的翅膀
  • 浏览: 498386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CAS Java Client 配置

    博客分类:
  • Jsp
阅读更多
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完成,基本完成单点登录和退出功能。


<上篇完>
分享到:
评论
4 楼 隐形的翅膀 2011-04-15  
.net 下需要自己写code去读CAS Server返回的信息.
3 楼 隐形的翅膀 2011-04-15  
不好意思, 才看到你的留言, 我的站点就是asp.net  已经集成成功.
2 楼 michael88wen 2011-01-07  
.net  PHP  的能否给个 方案
1 楼 michael88wen 2011-01-05  
感谢楼主,本机测试成功,其他机器无法访问,是不是要改hosts 文件 ,怎么改?

相关推荐

    Yale CAS SSO JAVA Client

    整合Yale CAS SSO JAVA Client到Java应用中,开发者需要理解CAS的工作原理,包括Ticket Granting Ticket(TGT)和Service Ticket的概念,以及如何在应用程序中配置和调用CAS客户端库。同时,为了保证安全性,需要...

    java-cas客户端client安装包

    在本安装包中,"java-cas-client-master" 涵盖了Java CAS客户端的主要源代码和资源,为开发者提供了集成CAS服务器的必要组件。 一、CAS简介 CAS(Central Authentication Service)是一种基于票证的认证协议,主要...

    cas_client.zip_cas java

    对于"cas_client.zip_cas java"中的源代码,开发者应进行集成测试,确保在不同环境和配置下,客户端能正常工作并与CAS服务器协同完成SSO。 总之,"cas_client.zip_cas java"提供了CAS客户端的源码,开发者可以通过...

    cas-client-2.0.11.zip_cas client_cas-clie_cas-client-2._java CAS

    5. **集成应用**:将CAS客户端集成到Java应用中,通常需要修改Web应用的web.xml配置,添加CAS过滤器和监听器,确保在用户访问受保护的页面时能够触发SSO流程。 6. **安全性**:CAS客户端提供了一种安全的身份验证...

    cas-client3.5单点登录官方客户端程序demo

    在这个"cas-client3.5单点登录官方客户端程序demo"中,我们可以深入理解如何在Java环境中集成CAS客户端来实现单点登录功能。 首先,CAS客户端3.5是为Java应用程序设计的,它允许这些应用与CAS服务器进行通信,验证...

    cas-client-autoconfig-support, Apereo Java客户端支持基于注释的配置.zip

    cas-client-autoconfig-support, Apereo Java客户端支持基于注释的配置 cas-client-autoconfig-support 为CAS Java客户端提供基于注释的配置支持的库,这个项目是作为Unicon的开源支持程序的一部

    java-cas-client-3.2.0

    CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的...

    spring boot整合CAS Client实现单点登陆验证的示例

    在 CAS Client 中,我们还可以配置多种认证方式,例如 CAS、CAS3、SAML 等。这些认证方式都可以通过 cas.validation-type 属性来配置。例如,我们可以使用 CAS 认证: ```properties cas.validation-type=CAS ``` ...

    cas_client_test_demo

    通过分析"cas_client_test_demo",开发者可以学习如何配置CAS客户端,如何处理CAS的登录、验证流程,以及如何在实际应用中实现SSO功能。对于想要集成CAS的开发者来说,这是一个非常实用的学习资源。同时,配合"CAS...

    cas-client扩展拦截器支持excludes

    压缩包子文件“cas-client1”可能包含了扩展后的CAS客户端源代码、配置示例或其他相关资源,供开发者参考和使用。为了更好地理解和使用这个扩展,需要解压并查看源代码,了解具体的实现细节。 总的来说,"cas-...

    cas java cas java 实例

    - 使用提供的CAS Java实例进行测试,确保配置正确无误,可以通过模拟不同场景,如正常登录、无效凭证、单点登出等,来检查CAS功能是否正常运行。 - 注意检查日志输出,这有助于识别和解决可能出现的问题。 总之,...

    cas client

    1. CAS客户端库:项目中可能包含了CAS的Java客户端库,如`cas-client-support-spring-boot-starter`,这个库使得集成CAS服务器变得简单。它提供了配置和过滤器,用于拦截请求并重定向到CAS服务器进行身份验证。 2. ...

    cas_client.zip CAS认证中心客户端starter

    在"cas_client.zip"中,`cac_client`可能包含了客户端的Java代码或配置文件,以便在你的应用中集成。 2. **集成方式**:这个starter项目设计为易于集成到你的应用程序中。通常,只需将解压后的文件添加到你的项目...

    Yale CAS Server的部署及cas-java-client 3.2的应用

    1. 添加依赖:在你的项目Maven或Gradle配置文件中,添加cas-java-client 3.2的依赖。 2. 初始化配置:创建`CasClientConfiguration`对象,配置CAS服务器URL、服务验证URL等。 3. 创建`CasAuthenticationHandler`:这...

    CAS单点登录(SSO)服务端自定义认证+CAS客户端配置+CAS完整使用文档+CAS4.2.7 cas-serv服务端源码 cas-client客户端源码

    CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,简称SSO)框架,主要用于解决网络应用中的身份验证问题。本压缩包提供了CAS服务端自定义认证的实现,以及CAS客户端的配置...

    cas-client-java-2.1.1

    "cas-client-java-2.1.1"是一个特定版本的CAS客户端库,它允许Java应用程序与CAS服务器进行通信,实现用户的身份验证。在这个版本中,开发者可以集成CAS服务到他们的Java应用中,为用户提供安全的登录体验。 这个...

    cas-client-3.2.1 cas-server-3.4.11

    综上,"cas-client-3.2.1"和"cas-server-3.4.11"的集成与实施涉及客户端配置、服务器部署、安全策略设定等多个环节,是构建一个高效、安全的身份验证系统的基石。了解并熟练掌握这些知识点,对于管理和维护复杂的...

    cas-client-3.2.0-release

    3. **示例配置**:可能包含示例配置文件(如`cas-client-config.xml`),展示了如何在应用程序中配置CAS客户端。这些配置文件通常会指示CAS服务器的位置、服务URL、认证模式等关键设置。 4. **许可证和版权信息**:...

    casclient.jar

    `casclient.jar`是CAS客户端库的核心组件,它在Java应用中扮演着至关重要的角色,使得应用能够与CAS服务器进行交互,实现用户的身份验证。 在CAS配置中,`casclient.jar`是必不可少的,因为它包含了处理CAS协议所需...

Global site tag (gtag.js) - Google Analytics