在Cas Server的WEB-INF目录下有一个deployerConfigContext.xml文件,该文件是基于Spring的配置文件,里面存放的内容常常是部署人员需要修改的内容。其中认证方式也是定义在这个文件中的,id为authenticationManager的bean的authenticationHandlers即定义了需要使用的AuthenticationHandler列表。默认使用了两个AuthenticationHandler,第一个是用来确保当前使用的是https协议的HttpBasedServiceCredentialsAuthenticationHandler,第二个是我们需要改的,其简单认证用户名与密码相等的SimpleTestUsernamePasswordAuthenticationHandler。我们只需要更改这里的SimpleTestUsernamePasswordAuthenticationHandler就行了。Cas中已经为我们提供了不少AuthenticationHandler的实现,包括基于数据库认证的实现,当然用户也可以实现自己的AuthenticationHandler。下面将以使用数据库进行认证为例讲解如何更改认证方式。
Cas的各个模块都是基于Maven开发的,Cas Server也不例外。所以官方推荐我们使用Maven的War覆盖机制来修改Cas Server的配置文件。Maven的War覆盖机制是指当一个package类型为war的Maven项目A中引入了一个package类型为war的项目B作为依赖时,最终项目A打包的war包中不仅会包含项目A的内容,还会包含项目B的内容,且相同位置的文件项目A中的会覆盖项目B中的,即当项目A和项目B在WEB-INF下都拥有一个web.xml文件时,最终生成的war包中将使用项目A在WEB-INF下的web.xml文件;而当项目A在WEB-INF下没有web.xml文件,而项目B在WEB-INF下拥有web.xml文件时最终生成的war包中将使用项目B在WEB-INF下的web.xml文件。所以如果我们要修改Cas Server的配置文件,我们可以建立一个自己的基于Maven的Web项目,然后引入Cas Server作为依赖,并在自己的项目中建立对应的deployerConfigContext.xml文件。下面来看详细步骤。
1、建立基于Maven的Web项目,取名为myCasServer。
2、打开pom.xml文件,删除默认的依赖项,添加如下内容。
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>cas</warName>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-webapp</artifactId>
<version>${cas.version}</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
</dependencies>
<properties>
<cas.version>3.5.2</cas.version>
</properties>
<repositories>
<repository>
<id>ja-sig</id>
<url>http://oss.sonatype.org/content/repositories/releases/ </url>
</repository>
</repositories>
3、删除myCasServer项目中src/main/webapp下的index.jsp文件和src/main/webapp/WEB-INF下的web.xml文件,因为在cas-server-webapp中都存在对应的文件,不删除的话打包后的结果将是myCasServer中的覆盖cas-server-webapp中的。如果这个时候使用Maven进行打包的话你将得到一个和cas-server-webapp一模一样的war包。
4、使用数据库进行认证的话还需要添加对应的依赖,打开myCasServer的pom.xml文件,添加如下依赖。
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-support-jdbc</artifactId>
<version>${cas.version}</version>
<scope>runtime</scope>
</dependency>
5、将cas-server-webapp/WEB-INF下的deployerConfigContext.xml文件copy到myCasServer的src/main/webapp/WEB-INF目录下。
6、基于数据库的AuthenticationHandler有多种,这里以QueryDatabaseAuthenticationHandler为例。QueryDatabaseAuthenticationHandler需要配置两个参数,dataSource和sql。dataSource就是数据源,表示从哪个数据源进行查询。sql是对应的查询语句,其会接收username作为参数,然后查询出对应的密码,之后QueryDatabaseAuthenticationHandler会将查询出来的密码与用户提交的密码进行匹配。所以这里我们打开复制到myCasServer中的deployerConfigContext.xml文件,找到id为authenticationManager的bean的authenticationHandlers属性定义,将最后一个AuthenticationHandler替换成我们想要的QueryDatabaseAuthenticationHandler。
替换前:
<property name="authenticationHandlers">
<list>
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" />
<bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
</list>
</property>
替换后:
<property name="authenticationHandlers">
<list>
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" />
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource"/>
<property name="sql" value="select password from t_user where username = ?"/>
</bean>
</list>
</property>
像dataSource的定义及其需要使用到的依赖包我就不贴了,比较常用。
打包以后生成的war包中使用的AuthenticationHandler就会是我们在myCasServer的src/main/webapp/WEB-INF目录下的deployerConfigContext.xml文件中定义的QueryDatabaseAuthenticationHandler了。以后需要修改Cas Server中的其它内容也可以依照此种方式进行修改。
(注:本文是基于cas 3.5.2所写)
(注:原创文章,转载请注明出处。原文地址:http://elim.iteye.com/blog/2128869)
相关推荐
在本文中,我们将探讨如何在普通方式和Spring Boot方式下配置和使用CAS客户端和服务端。 首先,让我们了解一下`CMD生成证书命令.txt`。在CAS部署中,安全通信通常依赖于SSL/TLS证书,用于加密传输数据。这个文件...
标题中的“让CAS支持客户端自定义登陆页面——客户端篇”表明了本文主要探讨的是如何在中央认证服务(Central Authentication Service, CAS)系统中,允许客户端应用程序实现自定义登录页面的配置与实现。CAS是一个...
### 让CAS支持客户端自定义登录页面——服务器篇 #### 概述 本文档主要介绍如何在CAS(Central Authentication Service)系统中实现客户端自定义登录页面的功能,并且着重讲解服务器端的修改步骤与注意事项。CAS...
默认的配置文件可能需要根据具体环境进行调整,例如更改服务URL、认证方式等。 2. **服务注册**:为了保护Web应用程序,需要在CAS服务器上注册这些服务。每个服务都有一个唯一的ID和服务URL,允许或拒绝用户访问。 ...
### 统一身份认证——CAS配置实现 #### 一、背景描述 随着信息化技术的快速发展,政府、企业和各种机构在互联网或内部网(Intranet)上部署了大量的业务系统,例如在线申报系统、在线审批系统、办公自动化(OA)系统等...
#### 四、CAS的高级功能——代理模式 除了基本的单点登录功能外,CAS还支持代理模式,这是一种更高级别的应用场景。在代理模式下,一个CAS Client不仅可以代表原始用户请求资源,还可以代表其他服务请求资源。这种...
此外,可能需要根据实际需求调整CASServer的配置文件,如修改登录页面、数据库连接等。 3. **CASClient集成**:在各个需要保护的Web应用中集成CASClient,这通常涉及在应用的web.xml文件中添加过滤器,以实现对用户...
这个压缩包包含的是Acegi Security的一个特定版本——0.8.3,以及相关的支持文件。 Acegi Security是Spring Framework的前身,它在Spring Security之前被广泛使用。这个框架允许开发者以声明式的方式定义安全策略,...
**JASIG CAS 3 学习笔记 1 —— 开始之旅** JASIG CAS(Central Authentication Service)是一款开源的身份验证系统,广泛应用于多应用系统中的单点登录(Single Sign-On, SSO)。CAS 3 是其第三个主要版本,提供了...
### 让CAS支持客户端自定义登录页面——服务器端配置详解 #### 一、背景与目的 随着企业级应用系统的不断扩展和发展,身份认证系统(如CAS)的安全性和灵活性变得尤为重要。CAS(Central Authentication Service)...
3. **部署与配置**:安装CAS Server通常涉及下载CAS服务器的最新稳定版本(如cas-3.5.3),配置服务器环境,比如Java运行时环境(JRE或JDK)、Tomcat或其他Servlet容器,以及修改相应的配置文件以适应组织的特定需求...
- 它可以保护任何应用——从简单的应用到复杂的多层企业级应用。 #### 二、基础篇 ##### 1. 一个简单的 HelloWorld 示例 - **配置过滤器**: Spring Security 提供了一组预定义的过滤器,可以轻松地在应用中集成...
- **修改applicationContext.xml**:更新配置文件以启用CAS支持。 - **运行配置了CAS的子系统**:部署并运行配置了CAS的子系统,确保单点登录功能正常工作。 - **为CAS配置SSL** - **生成密钥**:生成用于HTTPS...
描述中提到的"cas-4.2.1"是一款流行的认证与授权服务——Central Authentication Service(CAS)的版本。CAS是一个开放源代码项目,旨在提供单一登录(Single Sign-On, SSO)服务,用于管理多个应用系统的用户认证。...
- **cas_client/cas_server**:集群认证服务客户端/服务器。 - **Devices**:设备驱动程序。 - **Infocenter**:信息中心,提供系统文档和技术支持信息。 - **openssh_client/openssh_server**:SSH客户端/...
Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...