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

简介:          在Cas Server的WEB-INF目录下有一个deployerConfigContext.xml文件,该文件是基于Spring的配置文件,里面存放的内容常常是部署人员需要修改的内容。

 

       Cas ServerWEB-INF目录下有一个deployerConfigContext.xml文件,该文件是基于Spring的配置文件,里面存放的内容常常是部署人员需要修改的内容。其中认证方式也是定义在这个文件中的,idauthenticationManagerbeanauthenticationHandlers即定义了需要使用的AuthenticationHandler列表。默认使用了两个AuthenticationHandler,第一个是用来确保当前使用的是https协议的HttpBasedServiceCredentialsAuthenticationHandler,第二个是我们需要改的,其简单认证用户名与密码相等的SimpleTestUsernamePasswordAuthenticationHandler。我们只需要更改这里的SimpleTestUsernamePasswordAuthenticationHandler就行了。Cas中已经为我们提供了不少AuthenticationHandler的实现,包括基于数据库认证的实现,当然用户也可以实现自己的AuthenticationHandler。下面将以使用数据库进行认证为例讲解如何更改认证方式。

       Cas的各个模块都是基于Maven开发的,Cas Server也不例外。所以官方推荐我们使用MavenWar覆盖机制来修改Cas Server的配置文件。MavenWar覆盖机制是指当一个package类型为warMaven项目A中引入了一个package类型为war的项目B作为依赖时,最终项目A打包的war包中不仅会包含项目A的内容,还会包含项目B的内容,且相同位置的文件项目A中的会覆盖项目B中的,即当项目A和项目BWEB-INF下都拥有一个web.xml文件时,最终生成的war包中将使用项目AWEB-INF下的web.xml文件;而当项目AWEB-INF下没有web.xml文件,而项目BWEB-INF下拥有web.xml文件时最终生成的war包中将使用项目BWEB-INF下的web.xml文件。所以如果我们要修改Cas Server的配置文件,我们可以建立一个自己的基于MavenWeb项目,然后引入Cas Server作为依赖,并在自己的项目中建立对应的deployerConfigContext.xml文件。下面来看详细步骤。

 

       1、建立基于MavenWeb项目,取名为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、使用数据库进行认证的话还需要添加对应的依赖,打开myCasServerpom.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文件copymyCasServersrc/main/webapp/WEB-INF目录下。

       6、基于数据库的AuthenticationHandler有多种,这里以QueryDatabaseAuthenticationHandler为例。QueryDatabaseAuthenticationHandler需要配置两个参数,dataSourcesqldataSource就是数据源,表示从哪个数据源进行查询。sql是对应的查询语句,其会接收username作为参数,然后查询出对应的密码,之后QueryDatabaseAuthenticationHandler会将查询出来的密码与用户提交的密码进行匹配。所以这里我们打开复制到myCasServer中的deployerConfigContext.xml文件,找到idauthenticationManagerbeanauthenticationHandlers属性定义,将最后一个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就会是我们在myCasServersrc/main/webapp/WEB-INF目录下的deployerConfigContext.xml文件中定义的QueryDatabaseAuthenticationHandler了。以后需要修改Cas Server中的其它内容也可以依照此种方式进行修改。

 

(注:本文是基于cas 3.5.2所写)

(注:原创文章,转载请注明出处。原文地址:http://elim.iteye.com/blog/2128869

 

 

目录
相关文章
|
应用服务中间件 Linux nginx
Linux系列——Nginx的安装、测试详解以及关于Nginx的常用命令介绍
Linux系列——Nginx的安装、测试详解以及关于Nginx的常用命令介绍
|
Linux 开发者 云计算
linux内核符号表kallsyms简介
在使用perf排查问题时,我们经常会发现[kernel.kallsyms]这个模块。这到底是个什么东西呢?
19968 0
|
Java 数据库连接 Maven
springBoot:项目建立&配置修改&yaml的使用&resource 文件夹(二)
本文档介绍了如何创建一个基于Maven的项目,并配置阿里云仓库、数据库连接、端口号、自定义启动横幅及多环境配置等。同时,详细说明了如何使用YAML格式进行配置,以及如何处理静态资源和模板文件。文档还涵盖了Spring Boot项目的`application.properties`和`application.yaml`文件的配置方法,包括设置数据库驱动、URL、用户名、密码等关键信息,以及如何通过配置文件管理不同环境下的应用设置。
986 1
|
Linux 编译器
一起来认识Linux中的 BUILD_BUG_ON 宏
一起来认识Linux中的 BUILD_BUG_ON 宏
|
XML 监控 数据库
互联网架构演进:从传统单体到Service Mesh
互联网架构演进:从传统单体到Service Mesh
539 0
|
存储 NoSQL Java
Spring Data Repositories使用详解( Spring Data CRUD)
Spring Data Repositories使用详解( Spring Data CRUD)
583 1
|
XML 存储 缓存
SpringBoot 使用cas5.3 sso概念
最近一直在集成cas单点登录,这套文章记录一步一步讲解如何详细将cas集成单点登录,所以刚好把这些知识总结一下。如果文章中存在错误,期望大家指出。
702 0
|
JavaScript 前端开发 开发者
【Vue2从入门到精通】超简单的vue2开发环境安装
Vue是一款非常流行的JavaScript框架,它可以帮助开发者轻松地构建交互式的Web应用程序。在本文中,我们将会讲解如何搭建Vue2的开发环境,让你可以快速开始开发自己的Vue应用程序。
1055 0
【Vue2从入门到精通】超简单的vue2开发环境安装
|
Java Spring
Spring Boot 中的 Session 是什么,如何使用
Spring Boot 中的 Session 是什么,如何使用