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

Cas(04)——更改认证方式相关推荐

  1. CAS单点登录-配置数据库认证方式

    接下来,说一下配置数据库认证单点登录 如果你之前的单点登录搭成功了,之后就简单多了,只需要添加一些配置和jar包即可.若未成功,请参考CAS单点登录入门配置 步骤: 1.引入相关jar包 2.创建数据 ...

  2. Apereo CAS 5.0.X 配置数据库认证方式

    Apereo CAS 5.0.X 使用Spring Boot的方式重构了项目,配置也发生了很大的变化.配置文件都在cas项目下的WEB-INF/classes目录下面,配置文件较多,后边详细说,这里先 ...

  3. oracle用户身份认证,oracle用户身份认证方式

    数据库身份认证 数据库身份认证比较好理解,就是数据库用户口令以加密的方式保存在数据库内部,当用户连接数据库时必须输入用户名和密码,通过数据库认证后才可以登录到数据库.例如,创建一个数据库认证的用户,语 ...

  4. Ubuntu 18.04 LDAP认证

    将ubuntu配置为通过ldap认证,使其成为ldap client,系统版本ubuntu 18.04. 一 软件安装 apt-get install ldap-utils libpam-ldap l ...

  5. 为ASP.NET MVC配置基于Active Directory的表单认证方式

    为ASP.NET MVC配置基于Active Directory的表单认证方式 最近一直在研究基于Active Directory的表单认证方式,同时也在关注ASP.NET MVC的情况,同时也在应用 ...

  6. 阿里云接入的认证方式,一机一密、一型一密、动态注册

      设备接入阿里云物联网平台之前,需通过身份认证.目前,阿里云平台支持使用设备密钥.ID²和X.509证书进行设备身份认证.   必须要明白产品和设备的关系,他们是从属关系,比如某个小区的水表就是一个 ...

  7. php 登录安全认证,介绍几种常用的web安全认证方式

    本文为大家介绍了五种常用的web安全认证方式,具有一定的参考价值,希望能对大家有所帮助. 1.Http Basic Auth 这是一种最古老的安全认证方式,这种方式就是简单的访问API的时候,带上访问 ...

  8. Authentication-- 更改现有Sharepoint网站的认证方式,让其支持FBA:1.前期准备

    前公司开发的Sharepoint 网站使用的是Classic Mode Authentication方式(基于Windows AD方式),近期的客户需求需要使这个已投入使用的Sharepoint应用不 ...

  9. 客户端与服务器端的认证方式(cookie,token,session)

    目录 ■问题起因 方式1:cookie ●cookie保存位置 ●cookie文件的形式 ●cookie的内容 (时代在发展) 方式2:session ■cookie・session ■查看cooki ...

最新文章

  1. oracle创建序列seq起始值为1_oracle 重置序列从指定数字开始的方法详解
  2. DIV+CSS网页布局常用的一些基础知识
  3. html5 项目案例_互动案例技术分析(3)
  4. Python于*args 和**kwargs使用
  5. 网易云信荣获2021年度智慧教育典型案例奖项,并入选《智慧教育发展及产业图谱研究报告》...
  6. 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?
  7. [POJ2195]Going Home(带权最大匹配,KM,最小费用流)
  8. java中文汉字转拼音
  9. 计算机网络驱动坏了怎么解决办法,网卡驱动异常怎么办_网卡驱动异常解决办法_飞翔教程...
  10. kdj买卖指标公式源码_买卖点KDJ (副图指标 源码 )
  11. element ui 手动清除表单效验提示语
  12. 力扣(66.67)补8.27
  13. OpenHarmony驱动子系统开发
  14. 华为荣耀9青春版系统像鸿蒙,荣耀9青春版参数配置
  15. 计算机镜像怎么恢复,教你如何在win7系统创建系统恢复镜像
  16. html加拼音注释,HTML——格式化文本标记、拼音/音标注释ruby 标记和rt/rp 标记、段落缩进标记blockquote、预格式化标记pre...
  17. 简要损益科目口诀,营业外收支和其他业务收支的区别
  18. python中result函数用法_python中函数的参数和返回值
  19. mac系统时间自动校准仍然不准确修复方式
  20. Android电池电量检测

热门文章

  1. 有了这7个高质量的黑科技软件,工作效率翻倍!
  2. 微积分----极限(一)
  3. 微信查看共同好友python_微信中怎么查看共同好友?
  4. MATLAB中a(1,2:4)的含义、意思
  5. Python基础教程,Python神仙级入门教程(非常详细)
  6. 条形码编码数据区分及使用建议
  7. 利用Javascript输出多个图片
  8. 我接手了一个“垃圾”系统,全栈优化后将性能提升了350倍
  9. sqlmap超详细讲解
  10. 马斯克自述:我很痛苦,我一无所有,我不后悔