1 安装
1.1系统配置
以下的软件环境是必需的:
1. JDK 1.4.2 or higher
2. Tomcat 5.X
1.2 Tomcat 配置,启用SSL
1. 在要安装CAS的机器上为Tomcat生成用于SSL通讯的密钥:
keytool –genkey –alias tomcat –keyalg RSA
这时需要输入密钥密码和其他参数(第一个参数CN必须设置为CAS机器名,本机使用localhost测试),会在用户目录中生成.keystore密钥文件。
2. 导出密钥文件:
keytool –export –file server.crt –alias tomcat
这时需要输入上一步设定的密码,结果会在当前目录生成server.crt信任状。
3. 为客户端的JVM导入密钥:
keytool –import –keystore $JAVA_HOME\jre\lib\security\cacerts
–file server.crt –alias tomcat
输入密码时注意密码为“changeit”。
4. 修改服务端Tomcat配置文件,启用SSL。修改$CATALINA_HOME\conf\server.xml,去掉有关SSL的那一段的注释,需要在connector字段中加入keystorePass="password"(password即为1、2步中的密码),keystoreFile= "keystorePath"(可以把第一步生成的.keystore复制到$CATALINA_HOME\conf下,这样keystoreFile= "conf/.keystore")。
5. 重启Tomcat,测试https://server:8443是否可以访问(server应换为机器名或IP地址)。
1.3 CAS Server安装
下载CAS Server 3.0.4,将其中的cas.war复制到$CATALINA_HOME\webapps下,当然现在CAS中的用户密码认证Handler是很简陋的,产品化必须重写这部分代码,生成新的cas.jar。这时可以通过访问https://localhost:8443/cas测试CAS是否成功部署,应看到CAS登陆界面。
1.4 CAS Client 部署
利用Tomcat自带的servlets-examples ($CATALINA_HOME\webapps\servlets-examples)和jsp-examples($CATALINA_HOME\ webapps\jsp-examples)进行试验,下载最新版本的Java CAS Client,将casclient.jar复制到这两个项目的WEB-INF目录的lib下(需要新建此目录)。修改两个项目的WEB-INF\ web.xml,添加如下的过滤器:
<!-- CAS Filters -->
<filter>
<filter-name>CASFilter</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://server:8443/cas/login</param-value>
</init-param><!--这里的server是服务端的IP-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://serName:8443/cas/proxyValidate</param-value>
</init-param><!--这里的serName是服务端的主机名,而且必须是-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>client:port</param-value><!--client:port就是需要CAS需要拦截的地址和端口,一般就是这个TOMCAT所启动的IP和port-->
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/servlet/*</url-pattern><!--这里的设置是针对servlets-examples的,针对jsp-examples设置为/*-->
</filter-mapping>
2 测试
重启Tomcat,定位到servlets-examples,执行任何一个例子都会被重定向到CAS登陆页;再定位到jsp-examples,也会被重定向到CAS登陆页;此时登陆(默认的认证Handler只要求username=password,可任意选择用户名);登录后就会进入jsp- examples;继续定位到servlets-examples,执行任何一个例子也不用再输入密码。
补充:
 在多台机器上部署CAS:这些机器必需在同一个域中;服务器端生成证书,客户端导入证书(操作见上)。
 PHP客户端:使用esup-phpcas客户端,验证部分php代码如下:
// import phpCAS lib
include_once('CAS/CAS.php');
// initialize phpCAS
phpCAS::client(CAS_VERSION_2_0,'freeserver.test-toodou.com',8443,'/cas');
// force CAS authentication
phpCAS::forceAuthentication();
// at this step, the user has been authenticated by the CAS server
// and the user's login name can be read with phpCAS::getUser().
// logout if desired
if (isset($_REQUEST['logout'])) {
phpCAS::logout();
}
登录结束后,CAS服务器会自动重定向回本页面。
CAS服务器与数据库连接:实际环境中我们需要到数据库验证用户有效性,在CAS中配置JDBC连接。
首先,我们需要创建自己的数据库验证器,当然也可以使用Jasig提供的cas-server-jdbc.jar,这里我们修改了cas-server- jdbc的源码满足自己的需要。并把mysql的jdbc驱动和修改后的jar部署到CAS%/WEB_INF/lib/。
修改 %CAS%/WEB_INF/deployerConfigContext..xml,其中关于验证器的一段如下:
………………………………..
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select psw from user where username=?" />
<property name="dataSource" ref="dataSource" />
</bean>
</list>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://192.168.1.246:3306/toodou</value></property>
<property name="username"><value>username</value></property>
<property name="password"><value>********</value></property>
</bean>
Jmeter测试:根据目前土豆网的登录流量,我们使用Jmeter对CAS处理性能进行测试,以每分钟20人次登录计,得到平均处理时间为21ms,几次测试中遇到的最长处理时间也仅为78ms。
但当登录人次达到500/min时,会出现明显的性能下降,部分登录请求的处理时间会超过3000ms。
本文来自CSDN博客,转载请标明出处:file:///F:/知识积累/Core%20Java/利用CAS实现SSO技术.mht
分享到:
相关推荐
"CAS实现sso单点登录原理" CAS(Central Authentication Service)是Yale大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的单点登录解决方法(属于Web SSO)。CAS开始于2001年,并在2004年12月...
### 架构师熟悉CAS技术方案实现SSO #### 一、CAS简介 ##### 1.1 CAS是什么? CAS(Central Authentication Service),即中央认证服务,最初由耶鲁大学发起,是一个面向企业和开源社区的项目,旨在为Web应用提供...
本项目基于SpringBoot、CAS5.x、Shiro和Pac4j实现了SSO集成,下面将详细阐述这些技术组件以及它们在SSO中的作用。 1. **SpringBoot** SpringBoot是Spring框架的一个子项目,它简化了Spring应用的初始搭建和运行...
SSO技术允许用户在登录一次后,无须再次输入凭证即可访问多个相互信任的应用系统。这极大地提高了用户体验,同时也降低了管理多个独立认证系统的复杂性。Yale CAS SSO JAVA Client就是实现这一功能的关键组件。 在...
描述中的“SSO单点登录技术-CAS统一身份认证服务视频”表明这是一个系列教程,通过视频形式详细讲解如何利用CAS来实现SSO。这个系列可能包括了对CAS的介绍、SSO的基本概念、开发环境的搭建、CAS服务器的配置以及实际...
在这个场景下,`CAS_LDAP.rar` 文件集合提供了一个关于如何将CAS与OpenLDAP集成以实现SSO和SOA的实践指南。 **CAS (Central Authentication Service)** CAS 是一个开源的、基于Web的单一登录协议服务器,它允许...
在实现SSO的过程中,CAS-server扮演的角色是认证代理,它处理用户的身份验证请求,验证成功后,会向用户颁发一个服务票证(Service Ticket)。这个票证是加密的,包含了用户的认证信息。当用户尝试访问受保护的应用...
4. 更新你的应用代码以利用CAS客户端库的功能。 最后,理解SSO和CAS的工作原理对于优化用户体验和提升网络安全至关重要。在实际应用中,你可能还需要考虑多因素认证、自定义登录界面、单点登出(SSLO)等功能,以...
在实际开发中,可以利用开源的SSO框架,如Spring Security的CAS模块,或者使用现成的解决方案,如Okta、Azure AD等,以简化实现过程。 总之,SSO单点登录为用户提供了便捷的访问体验,同时降低了管理多系统登录的...
X2.5与CAS(Central Authentication Service)集成是一种常见的身份验证解决方案,它能够实现单点登录(Single Sign-On, SSO)功能。在SSO系统中,用户只需登录一次,就可以在多个相互独立的应用系统之间自由切换,...
C#中,我们可以利用.NET Framework的安全性和身份验证功能,如Forms Authentication、Windows Authentication等,来实现SSO。 1. **Forms Authentication**:这是ASP.NET中常用的身份验证方法,适用于Web应用程序。...
总的来说,这个压缩包提供了一个关于如何在.NET环境下利用CAS实现跨平台、跨服务器、跨网站的单点登录解决方案的详细资源,涵盖了从理论到实践的各个层面。通过学习和应用这些内容,开发者可以构建起一个高效且安全...
单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。它为用户提供了一种方便、高效的访问多系统的方式,同时减少了用户记住多个用户名和密码...
实现SSO技术需要考虑以下几个关键点: 1. **安全性**:确保用户认证信息在传输过程中不被窃取,通常采用HTTPS协议加密通信。 2. **兼容性**:支持多种浏览器和设备,以及不同开发语言和框架的系统集成。 3. **性能*...
在Java环境中,利用Spring Security和CAS服务器可以轻松实现SSO。理解其工作原理并熟练掌握相关实现技术,对于构建安全、高效的多应用系统至关重要。在实际项目中,还需要根据业务需求和安全性要求对SSO进行定制和...
虽然描述为空,但根据给定的标签和博文链接,我们可以推测这篇博客可能涉及了 CAS SSO 的实现、源码解析或工具使用。通常,开发者可能会讨论如何集成 CAS 到现有项目中,以及如何自定义 CAS 服务器以满足特定需求。...
- 服务端应用是指那些需要利用CAS进行用户认证的Web应用程序。 4. CAS认证流程: 用户尝试访问服务端应用时,服务端应用会重定向用户到CAS服务器进行认证。用户在CAS服务器上输入凭证后,成功验证身份后,CAS...
标题中的“自定义客户端登录CAS服务器-iframe实现”是指一种基于CAS(Central Authentication Service)的认证方式,它利用iframe在不离开当前页面的情况下实现用户的单点登录(Single Sign-On,SSO)。CAS是一种...
通过这个教程,你不仅能够掌握CAS SSO的基本操作,还能对单点登录的原理和技术有更深入的理解,为实现安全、高效的用户身份验证打下坚实的基础。如果你是初学者,这个教程会是一个很好的起点。尽管链接可能已失效,...
在Java中实现SSO,我们可以利用Spring Boot框架的强大功能,它提供了丰富的集成功能,使得构建SSO系统变得更为便捷。下面我们将深入探讨SSO的基本原理、实现流程以及如何使用Spring Boot来搭建一个简单的SSO系统。 ...