`

利用CAS实现SSO技术(转)

阅读更多

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,执行任何一个例子也不用再输入密码。


补充:

&#61548; 在多台机器上部署CAS:这些机器必需在同一个域中;服务器端生成证书,客户端导入证书(操作见上)。

&#61548; 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实现sso单点登录原理" CAS(Central Authentication Service)是Yale大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的单点登录解决方法(属于Web SSO)。CAS开始于2001年,并在2004年12月...

    架构师熟悉cas技术方案实现sso

    ### 架构师熟悉CAS技术方案实现SSO #### 一、CAS简介 ##### 1.1 CAS是什么? CAS(Central Authentication Service),即中央认证服务,最初由耶鲁大学发起,是一个面向企业和开源社区的项目,旨在为Web应用提供...

    springboot+cas5.x+shiro+pac4j实现sso集成

    本项目基于SpringBoot、CAS5.x、Shiro和Pac4j实现了SSO集成,下面将详细阐述这些技术组件以及它们在SSO中的作用。 1. **SpringBoot** SpringBoot是Spring框架的一个子项目,它简化了Spring应用的初始搭建和运行...

    Yale CAS SSO JAVA Client

    SSO技术允许用户在登录一次后,无须再次输入凭证即可访问多个相互信任的应用系统。这极大地提高了用户体验,同时也降低了管理多个独立认证系统的复杂性。Yale CAS SSO JAVA Client就是实现这一功能的关键组件。 在...

    SSO单点登录技术

    描述中的“SSO单点登录技术-CAS统一身份认证服务视频”表明这是一个系列教程,通过视频形式详细讲解如何利用CAS来实现SSO。这个系列可能包括了对CAS的介绍、SSO的基本概念、开发环境的搭建、CAS服务器的配置以及实际...

    CAS_LDAP.rar_CAS SSO_cas ldap_cas openldap_cas_ldap_soa和sso

    在这个场景下,`CAS_LDAP.rar` 文件集合提供了一个关于如何将CAS与OpenLDAP集成以实现SSO和SOA的实践指南。 **CAS (Central Authentication Service)** CAS 是一个开源的、基于Web的单一登录协议服务器,它允许...

    cas-server sso单点登录服务端

    在实现SSO的过程中,CAS-server扮演的角色是认证代理,它处理用户的身份验证请求,验证成功后,会向用户颁发一个服务票证(Service Ticket)。这个票证是加密的,包含了用户的认证信息。当用户尝试访问受保护的应用...

    cas sso单点登录

    4. 更新你的应用代码以利用CAS客户端库的功能。 最后,理解SSO和CAS的工作原理对于优化用户体验和提升网络安全至关重要。在实际应用中,你可能还需要考虑多因素认证、自定义登录界面、单点登出(SSLO)等功能,以...

    discuz x2.5和cas集成,实现cas单点登录 sso

    X2.5与CAS(Central Authentication Service)集成是一种常见的身份验证解决方案,它能够实现单点登录(Single Sign-On, SSO)功能。在SSO系统中,用户只需登录一次,就可以在多个相互独立的应用系统之间自由切换,...

    基于Cas的单点登录实现

    单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。它为用户提供了一种方便、高效的访问多系统的方式,同时减少了用户记住多个用户名和密码...

    sso单点登录技术

    实现SSO技术需要考虑以下几个关键点: 1. **安全性**:确保用户认证信息在传输过程中不被窃取,通常采用HTTPS协议加密通信。 2. **兼容性**:支持多种浏览器和设备,以及不同开发语言和框架的系统集成。 3. **性能*...

    sso.rar_DotNetCasClient.dll_sso_sso 单点登录_单点登录_鍗曠偣鐧诲綍

    总的来说,这个压缩包提供了一个关于如何在.NET环境下利用CAS实现跨平台、跨服务器、跨网站的单点登录解决方案的详细资源,涵盖了从理论到实践的各个层面。通过学习和应用这些内容,开发者可以构建起一个高效且安全...

    sso的原理与java实现

    在Java环境中,利用Spring Security和CAS服务器可以轻松实现SSO。理解其工作原理并熟练掌握相关实现技术,对于构建安全、高效的多应用系统至关重要。在实际项目中,还需要根据业务需求和安全性要求对SSO进行定制和...

    关于SSO单点登录的简单实现

    在实际开发中,可以利用开源的SSO框架,如Spring Security的CAS模块,或者使用现成的解决方案,如Okta、Azure AD等,以简化实现过程。 总之,SSO单点登录为用户提供了便捷的访问体验,同时降低了管理多系统登录的...

    CAS SSO

    虽然描述为空,但根据给定的标签和博文链接,我们可以推测这篇博客可能涉及了 CAS SSO 的实现、源码解析或工具使用。通常,开发者可能会讨论如何集成 CAS 到现有项目中,以及如何自定义 CAS 服务器以满足特定需求。...

    基于CAS的统一认证平台的设计与实现.pdf

    - 服务端应用是指那些需要利用CAS进行用户认证的Web应用程序。 4. CAS认证流程: 用户尝试访问服务端应用时,服务端应用会重定向用户到CAS服务器进行认证。用户在CAS服务器上输入凭证后,成功验证身份后,CAS...

    CAS单点登录(SSO)完整教程

    通过这个教程,你不仅能够掌握CAS SSO的基本操作,还能对单点登录的原理和技术有更深入的理解,为实现安全、高效的用户身份验证打下坚实的基础。如果你是初学者,这个教程会是一个很好的起点。尽管链接可能已失效,...

    自定义客户端登录CAS服务器-iframe实现

    标题中的“自定义客户端登录CAS服务器-iframe实现”是指一种基于CAS(Central Authentication Service)的认证方式,它利用iframe在不离开当前页面的情况下实现用户的单点登录(Single Sign-On,SSO)。CAS是一种...

    sso 单点登陆 java 动手写sso

    在Java中实现SSO,我们可以利用Spring Boot框架的强大功能,它提供了丰富的集成功能,使得构建SSO系统变得更为便捷。下面我们将深入探讨SSO的基本原理、实现流程以及如何使用Spring Boot来搭建一个简单的SSO系统。 ...

Global site tag (gtag.js) - Google Analytics