`
leo123456
  • 浏览: 13447 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

CAS 配置使用方法

阅读更多

                                                        CAS 配置使用方法

 

1.//服务器用:
//选择删除以前的认证
keytool -delete -alias tomcatsso -keystore cacerts -storepass changeit
//查询是否还有
keytool -list -keystore cacerts -storepass changeit
//生成cacerts认证
keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=localhost" -keystore cacerts -storepass changeit

说明:在生成key的过程,"cn=www.test.com" 中的www.test.com为Server端的域名(必填)。
将cacerts文件复制到TOMCAT的conf目录下修改server.xml
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="443" />

<Connector port="8443" minSpareThreads="5" maxSpareThreads="75"   
           enableLookups="true" disableUploadTimeout="true"     
           acceptCount="100" maxThreads="200"   
           scheme="https" secure="true" SSLEnabled="true"   
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="conf/cacerts" keystorePass="changeit"
           truststoreFile="conf/cacerts"/>


deployerConfigContext.xml配置
a、在%CATALINA_HOME%/webapps/cas/WEB-INF/deployerConfigContext.xml文件中添加

<bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName"> 
        <value>oracle.jdbc.driver.OracleDriver</value> 
    </property> 
    <property name="url"> 
        <value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value> 
    </property> 
    <property name="username"> 
        <value>stock</value> 
    </property> 
    <property name="password"> 
        <value>111111</value> 
    </property> 
</bean> 
b、在 cas-server-support-jdbc-3.3.jar 包中,提供了 3 个基于 JDBC 的 AuthenticationHandler,分别为 BindModeSearchDatabaseAuthenticationHandler, QueryDatabaseAuthenticationHandler, SearchModeSearchDatabaseAuthenticationHandler。其中 BindModeSearchDatabaseAuthenticationHandler 是用所给的用户名和密码去建立数据库连接,根据连接建立是否成功来判断验证成功与否;QueryDatabaseAuthenticationHandler 通过配置一个 SQL 语句查出密码,与所给密码匹配;SearchModeSearchDatabaseAuthenticationHandler 通过配置存放用户验证信息的表、用户名字段和密码字段,构造查询语句来验证。使用哪个 AuthenticationHandler,需要在 deployerConfigContext.xml 中设置,默认情况下,CAS 使用一个简单的 username=password 的 AuthenticationHandler,在文件中可以找到如下一行:

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
我们可以将其注释掉,换成我们希望的一个 AuthenticationHandler,比如,使用QueryDatabaseAuthenticationHandler 或 SearchModeSearchDatabaseAuthenticationHandler 可以分别选取

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> 
    <property name="dataSource" ref="casDataSource" /> 
    <property name="sql" value="select password from xt_yhxx where lower(YHMC) = lower(?)" /> 
    <property name="passwordEncoder" ref="myPasswordEncoder"/> 
</bean>
或者

<bean id="SearchModeSearchDatabaseAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler" 
      abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default"> 
<property name="tableUsers"> 
   <value>xt_yhxx</value> 
</property> 
<property name="fieldUser"> 
   <value>YHMC</value> 
</property> 
<property name="fieldPassword"> 
   <value>password</value> 
</property> 
<property name="dataSource" ref=" casDataSource " /> 
</bean>
c、由于存放在数据库中的密码通常是加密过的,所以 AuthenticationHandler 在匹配时需要知道使用的加密方法,在 deployerConfigContext.xml 文件中我们可以为具体的 AuthenticationHandler 类配置一个 property,指定加密器类

<bean id="myPasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> 
    <constructor-arg value="MD5"/> 
</bean>
CAS自带的DefaultPasswordEncoder默认有MD5和SHA1两种加密方式,我们这里指定加密方式为MD5。另外,这里 myPasswordEncoder 是根据实际情况自己定义的加密器,实现 PasswordEncoder 接口及其 encode() 方法。

d、将commons-pool-1.4.jar、commons-dbcp-1.2.2.jar、spring-jdbc-2.5.5.jar、commons-collections-3.2.jar、cas-server-support-jdbc-3.3.jar拷贝到%CATALINA_HOME%/webapps/cas/WEB-INF/lib中。




2.//客户端用:
//生成tomcatsso.crt
keytool -export -alias tomcatsso -file tomcatsso.crt -keystore cacerts -storepass changeit
//客户端证书导入tomcatsso.crt
注意先进入%JAVA_HOME%\jre\lib\security目录,并将tomcatsso.crt copy到其下.执行下面命令.
%JAVA_HOME%\jre\lib\security>:keytool -import -alias tomcatsso -file tomcatsso.crt -keystore cacerts -storepass changeit
//查询
keytool -list -keystore cacerts -storepass changeit


将casclient.jar拷贝到WEB-INF/lib下。
在web.xml中添加过滤器:
<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/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/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 Filter</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping


3.其它
CASFilter 必需的参数
edu.yale.its.tp.cas.client.filter.loginUrl 指定 CAS 提供登录页面的 URL 
edu.yale.its.tp.cas.client.filter.validateUrl 指定 CAS 提供 service ticket 或 proxy ticket 验证服务的 URL 
edu.yale.its.tp.cas.client.filter.serverName 指定客户端的域名和端口,是指客户端应用所在机器而不是 CAS Server 所在机器,该参数或 serviceUrl 至少有一个必须指定 
edu.yale.its.tp.cas.client.filter.serviceUrl 该参数指定过后将覆盖 serverName 参数,成为登录成功过后重定向的目的地址 


CASFilter 可选参数:

edu.yale.its.tp.cas.client.filter.proxyCallbackUrl 用于当前应用需要作为其他服务的代理(proxy)时获取 Proxy Granting Ticket 的地址 
edu.yale.its.tp.cas.client.filter.authorizedProxy 用于允许当前应用从代理处获取 proxy tickets,该参数接受以空格分隔开的多个 proxy URLs,但实际使用只需要一个成功即可。当指定该参数过后,需要修改 validateUrl 到 proxyValidate,而不再是 serviceValidate 
edu.yale.its.tp.cas.client.filter.renew 如果指定为 true,那么受保护的资源每次被访问时均要求用户重新进行验证,而不管之前是否已经通过 
edu.yale.its.tp.cas.client.filter.wrapRequest 如果指定为 true,那么 CASFilter 将重新包装 HttpRequest,并且使 getRemoteUser() 方法返回当前登录用户的用户名 
edu.yale.its.tp.cas.client.filter.gateway 指定 gateway 属性 

传递登录用户名

CAS 在登录成功过后,会给浏览器回传 Cookie,设置新的到的 Service Ticket。但客户端应用拥有各自的 Session,我们要怎么在各个应用中获取当前登录用户的用户名呢?CAS Client 的 Filter 已经做好了处理,在登录成功后,就可以直接从 Session 的属性中获取
// 以下两者都可以

session.getAttribute(CASFilter.CAS_FILTER_USER); 
session.getAttribute("edu.yale.its.tp.cas.client.filter.user");
通过 JSTL 获取登录用户名

<c:out value="${sessionScope[CAS:'edu.yale.its.tp.cas.client.filter.user']}"/>
另外,CAS 提供了一个 CASFilterRequestWrapper 类,该类继承自HttpServletRequestWrapper,主要是重写了 getRemoteUser() 方法,只要在前面配置 CASFilter 的时候为其设置“ edu.yale.its.tp.cas.client.filter.wrapRequest ”参数为 true,就可以通过 getRemoteUser() 方法来获取登录用户名:

通过 CASFilterRequestWrapper 获取登录用户名

CASFilterRequestWrapper reqWrapper=new CASFilterRequestWrapper(request); 
out.println("The logon user:" + reqWrapper.getRemoteUser());




本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pengchua/archive/2009/01/12/3758422.aspx

 

以上来自http://hi.baidu.com/lurim/blog/item/7e09fdf46b6e9a2cbc3109df.html

分享到:
评论

相关推荐

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

    总的来说,这个压缩包提供了一套完整的CAS实施教程,从源码到配置,再到实际应用,对于想要理解和使用CAS的开发者来说是一份宝贵的资源。通过学习和实践,你可以掌握CAS的核心概念,实现自定义认证策略,以及优化...

    cas配置实现sso登录

    在这个场景中,我们将探讨如何使用CAS配置来实现单点登录。 首先,我们需要理解CAS服务器的角色。CAS服务器作为认证中心,负责验证用户的身份。当用户尝试访问受保护的资源时,他们会被重定向到CAS服务器进行登录。...

    cas使用配置.txt

    根据给定文件“cas使用配置.txt”的标题、描述、标签以及部分内容,我们可以提炼出一系列关于CAS(Central Authentication Service)在IT环境中的配置与部署的重要知识点。以下是对这些知识点的详细阐述: ### CAS...

    spring security 结合cas配置

    spring security 结合cas 单点登录系统 cas客户端的配置文件

    CAS多数据库配置单点登录

    首先,需要在项目中引入CAS客户端的jar包cas-client-core-3.3.3.jar,以便使用CAS客户端提供的单点登录功能。 2. 修改Web.xml配置 在项目的Web.xml文件中,需要添加以下配置: * 单点退出监听器:org.jasig.cas....

    WAS与CAS配置

    WAS环境中的应用要想与其他通过CAS进行单点登录的系统集成,应用本身必须采用WAS平台的认证机制,而不是自定义的认证方法。这通常意味着在应用的login-config部分的必须使用"BASIC"认证,而不是"FORM"认证。 SSO...

    CAS Server全部配置详解

    CAS Server全部配置详解

    H3C CAS云计算最佳实践和配置指导手册汇总集.rar

    02 H3C CAS-云容器引擎配置指导 03 H3C CAS 虚拟机快照配置指导 04 H3C CAS-虚拟机防病毒配置指导 05 H3C CAS SR-IOV配置指导 06 H3C CAS vGPU热迁移配置指导 07 H3C CAS 内存管理最佳实践 08 H3C CAS 磁盘...

    VMware虚拟机转换华三CAS虚拟机配置方法

    在配置新虚拟机时,内存和CPU的大小应与原VMware虚拟机相同,以保持一致性。在磁盘选项中,选择“镜像文件”,浏览并选择刚刚转换的.qcow2文件作为虚拟机的系统盘。 至此,整个转换流程结束。一旦虚拟机创建完成,...

    cas客户端登陆配置文档

    4. **自定义登录界面**:如果你想自定义客户端的登录界面,可以在应用中创建一个定制的登录页面,然后配置CAS客户端库以使用该页面。你需要确保页面能够收集用户的凭证(通常是用户名和密码)并提交到CAS服务器进行...

    关于cas安装和配置

    CAS 安装和配置的关键在于正确配置 CAS Server 和客户端应用,确保服务器能够正确处理认证请求,客户端应用能够识别并响应 CAS Server 的认证结果。通过这种方式,你可以构建一个安全、高效的单点登录系统,提升用户...

    CAS原理和配置过程

    ### CAS原理详解 CAS(Central Authentication Service)是一种...通过上述步骤,我们可以理解CAS如何实现单点登录的功能,并掌握其基本配置方法。这为开发者提供了高效便捷的身份验证方案,极大地提升了用户体验。

    Liferay5.2.3和CAS配置成SSO

    本案例中,我们将探讨如何将Liferay 5.2.3与CAS(Central Authentication Service)配置为SSO系统。 Liferay是一款开源的企业级门户平台,它提供了一个灵活的框架来构建和管理Web应用程序。而CAS则是一个开源的身份...

    CAS示例环境部署及配置

    2. **配置 CAS 验证**:在客户端应用的配置文件中,设置 CAS Server 的地址、服务验证 URL 和登出 URL。 3. **测试 SSO 功能**:确保在同一个浏览器会话中,访问 app1 和 app2 不需要再次登录,且可以获取登录用户...

    CAS配置全攻略

    CAS(Central Authentication Service)是基于Java的开源身份验证框架,用于实现单一登录(Single Sign...通过本文的介绍,你应该对CAS配置有了全面的认识,接下来就是实践操作,让CAS在你的项目中发挥安全保障的作用。

    cas-server 配置mysql数据源

    总结,配置CAS Server 4.0.0使用MySQL数据源涉及多个步骤,包括修改配置文件以提供数据库连接信息,定义数据源bean,创建数据库表结构,以及进行连接测试和可能的自定义配置。确保每个步骤都正确执行,才能使CAS ...

    liferay + cas + ldap 集成配置

    标题 "Liferay + CAS + LDAP 集成配置" 涉及到的是在企业级内容管理系统 Liferay 中集成 Central Authentication Service (CAS) 和 Lightweight Directory Access Protocol (LDAP) 的过程。这种集成允许用户通过CAS...

    单点登录cas的配置过程

    ### 单点登录CAS的配置过程详解 #### 一、引言 单点登录(Single Sign-On, SSO)是一种身份验证机制,允许用户通过一次登录即可访问多个应用系统而无需再次登录。CAS (Central Authentication Service) 是一种开源的...

    使用CAS在Tomcat中实现单点登录参考代码及配置

    ### 使用CAS在Tomcat中实现单点登录的关键知识点 #### 一、CAS简介与特性 - **CAS**(Central Authentication Service)是由耶鲁大学发起的一个开源项目,它为Web应用程序提供了一种简单可靠且功能强大的单点登录...

Global site tag (gtag.js) - Google Analytics