Cas(04)——更改认证方式

在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>

<beanclass="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>

<beanclass="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"

p:httpClient-ref="httpClient" />

<beanclass="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://haohaoxuexi.iteye.com/blog/2128869

时间: 2024-11-20 07:45:14

Cas(04)——更改认证方式的相关文章

修改CAS源码是的基于DB的认证方式配置更灵活

最近在做CAS配置的时候,遇到了数据源不提供密码等数据的情况下,怎样实现密码输入认证呢? 第一步:新建Java项目,根据假面算法生成CAS加密工具 出于保密需要不提供自定义的加密工具,在您的实际项目中,你可采用cas默认的加密方式比如md5. 第二步:修改CAS源码 找到cas-server-support-jdbc子模块找到包路径cas-server-support-jdbc\src\main\java\org\jasig\cas\adaptors\jdbc\,在复制一份QueryDataba

oracle 认证方式

Oracle登录的时候有两种认证方式,一种是“操作系统认证”,一种是“口令文件认证”.1.当采取操作系统认证的时候,在本地用任何用户都可以以sysdba登陆:(默认方式)2.当采取口令文件认证的时候,就不是任何用户都可以用sysdba登陆了,这个时候必须输入正确的用户名口令才可以(其实这种方法才是安全的)3.至于你本地的到底采用哪种认证方式,是可以通过parameter来设置的. ORACLE数据库通过sqlnet.ora文件中的参数sqlnet.authentication_services,

Centos 6.8安装openvpn.三种认证方式

Centos X64 6.8下安装Openvpn,三种认证方式 环境说明: 主机名称:openvpn01 安装版本为openvpn-2.3.11-1.el6.x86_64 相关资源下载连接如下: 链接:http://pan.baidu.com/s/1c2zDX5Y  密码:mooz 链接:http://pan.baidu.com/s/1bAXh6m  密码:vgq8 链接:http://pan.baidu.com/s/1qYkwty8  密码:1n32 1. 安装"EPEL"源 # r

CAS去掉HTTPS认证

如何去掉HTTPS认证? 说明:默认情况下HTTP也是可以访问CAS SERVER的,但认证,登陆,退出等操作均没有任何的效果.所以必须作出下面的修改 1.进入WEB-INF\spring-configuration目录  打开warnCookieGenerator.xml文件 修改p:cookieSecure的值为false 2.打开ticketGrantingTicketCookieGenerator.xml文件  同样修改p:cookieSecure的值为false 3.打开WEB-INF

oracle登陆认证方式

转自:http://blog.itpub.net/14359/viewspace-683064/ 案例: 1,发现此时操作系统认证不成功: C:\Users\Administrator.WIN-20100719IOX>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 12月 31 14:25:52 2010 Copyright (c) 1982, 2005, Oracle.  All rights reser

修改SQL Server登陆认证方式

在安装Sqlserver的过程中,默认情况下是Windows认证方式,安装之后若想修改认证方式,则需要按如下步骤操作. 1.登陆Sql Server Management Studio,右击数据库引擎,点击属性: 2.在服务器属性对话框中,点击“安全性”选项,并在右边选择“SQL Server和Windows混合身份验证模式”,并点击确定. 3.在Management Studio的对象资源管理器中,逐一点开服务器引擎->安全性->登录名. 4.如果不想用sa,或者没有sa,则在登录名上右击选

ios开发使用Basic Auth 认证方式

我们app的开发通常有2种认证方式   一种是Basic Auth,一种是OAuth:现在普遍还是使用OAuth的多,而使用Basic Auth认证的少,正好呢我今天给大家介绍的就是使用的比较少的Badic Auth认证方式,这种认证方式开发和调试简单, 没有复杂的页面跳转逻辑和交互过程,更利于发起方控制.然而缺点就是安全性更低,不过也没事,我们可以使用https安全加密协议,这样才更安全. 我使用的是AFNetworking发送的网络请求,因此我们用Basic Auth认证方式就不能再使用AF

基于http协议的api接口对于客户端的身份认证方式以及安全措施[转]

基于http协议的api接口对于客户端的身份认证方式以及安全措施 由于http是无状态的,所以正常情况下在浏览器浏览网页,服务器都是通过访问者的cookie(cookie中存储的jsessionid)来辨别客户端的身份的,当客户端进行登录服务器也会将登录信息存放在服务器并与客户端的cookie中的jsessionid关联起来,这样客户端再次访问我们就可以识别用户身份了. 但是对于api服务器,我们不能让访问者先登录再进行访问这样不安全,也不友好.所以一般情况我们都是需要客户端提供一个key(每个

Java 实现 SSH 协议的客户端登录认证方式--转载

背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间能够进行正常的网络通信,不至于出现在一台机器上发出的指令到另一台机器上成了不可认的乱码,SSH 就是众多协议的其中之一.经典的七层 OSI 模型(Open System Interconnection Reference Model)出现后,大大地解决了网络互联的兼容性问题,它将网络划分成服务.接口