CAS数据库查询认证(xml配置)

上篇博客介绍的CAS的Demo,登录界面用户名、密码并没有通过数据库查询认证。本博客,将介绍如何通过xml配置,进行CAS登录数据库查询认证。

所需数据库sso_cas,库中的表:tb_user,表中字段:Id、username、password;

数据库查询认证(通过xml配置)

1,修改cas服务端配置

tomcat下webapps/cas/WEB_INF/deployerConfigContext.xml 文件做如下修改:

<beanclass="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/>

修改为:

<beanclass="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

<propertyname="dataSource" ref="dataSource" ></property>

<propertyname="sql" value="select password from tb_user whereusername=?" ></property>

</property>

</bean>

添加datasource bean的定义:

<beanid="dataSource"

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<propertyname="driverClassName" value="com.mysql.jdbc.Driver" />

<propertyname="url" value="jdbc:mysql://localhost/sso_cas" />

<propertyname="username" value="root" />

<propertyname="password" value="root" />

</bean>

注意

1,QueryDatabaseAuthenticationHandler是cas-server-support-jdbc提供的查询接口其中一个是通过配置一个
SQL 语句查出密码,与所给密码匹配;

2,sql语句:select password from tb_user whereusername=?根据用户名username
查询表tb_user中密码password字段,CAS会匹配用户输入的密码,如果匹配则通过;

注:可配置多个数据库

如果需要配置多个数据库,可以配置多个QueryDatabaseAuthenticationHandler和多个datasource

假如a_user中有一个用户:auser,b_user中有一个用户buser,这样你无论用哪一个用户登录,CAS就会先查a_user,如果用户名密码都正确,那么就通过,如果a_user中验证失败,那么CAS就会再查b_user,用户名密码都正确就算通过了,此时不正确,就算这次登录验证没通过。

添加相关的jar

需要在web项目的lib下添加两个包:cas-server-support-jdbc-x.x.x.jar 和 mysql-connector-java-x.x.x-bin.jar(具体版本号根据情况而定)

按如下配置好后,进入CAS登录页,用户名密码需要通过查询数据库来认证,输入用户名admin,密码123,才可登录成功;如果输入用户名admin,密码admin是不能登录成功。

时间: 2024-08-30 03:48:15

CAS数据库查询认证(xml配置)的相关文章

CAS 实现单点登录(SSO)数据库查询认证机制-自定义编码方式(四)

通过xml配置方式实现数据库查询认证,的确简单但是不够灵活.但是如果登录验证逻辑稍微复杂些,可能通过这种配置方式就不能满足需求了,比如:当用户登录时,需要判断该用户是否绑定了邮箱,如果未绑定,拒绝登录并给出提示信息. 遇到类似的情况,就需要使用自定义登录来完成,并且给出的提示信息也需要是自定义的.  自定义登录验证(默认实现QueryDatabaseAuthenticationHandler) CAS内置了一些AuthenticationHandler实现类,如下图所示,在cas-server-

CAS 实现单点登录(SSO)数据库查询认证机制-xml方式(三)

继前面介绍过基于CAS实现单点登录(SSO)的实例演示,演示过程中服务端认证机制采用的是默认配置即CAS Servier默认用户名和密码一致即可登录成功,那么本文将侧重于应用方面,真正通过查询用户名密码来进程验证用户是否可以登录. CAS Server添加相关的jar包 需要在web项目的lib下添加两个包:cas-server-support-jdbc-x.x.x.jar和 mysql-connector-java-x.x.x-bin.jar(具体版本号根据情况而定) 修改CAS Server

XMPP 之Openfire的用户数据库整合(openfire.xml配置参数)

如果手动一步步设置 删除默认, 首先停止正常运行的Openfire服务器 默认的库ofProperty的如下记录删除 provider.auth.classname provider.user.classname provider.group.classname 建立一个第三方的表 CREATE TABLE myUser ( username NVARCHAR(64) NOT NULL, plainPassword NVARCHAR(32), encryptedPassword NVARCHAR

jsp采用数据库连接池的方法获取数据库时间戳context.xml配置,jsp页面把时间格式化成自己需要的格式

<?xml version="1.0" encoding="UTF-8"?> <!-- 数据库连接池配置文件 --> <Context> <Resource name="jdbc/ConnectionPool" auth="Application" type="javax.sql.DataSource" username="root" passw

cas server 基础 数据库 验证码实现及其配置

由于需要从业务上将系统拆分成多个独立的子系统,所以需要sso.这里主要是讲述一下server 端的配置. 下面按照几个步骤进行描述 下载cas-server-4.1.9 (https://github.com/apereo/cas) 构建 server (maven)工程. 目录结构 基本配置 验证码配置 1.下载 在 https://github.com/apereo/cas 可以下载cas-server 的源代码 也可以在直接使用maven 进行构建. 如果是下载源码,那么复制里面的工程(c

CAS server 连接mysql的deployerConfigContext.xml配置

1.deployerConfigContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www

Confluence 6 配置数据库查询超时时间

如果数据库的查询时间太长同时你的应用程序显示没有响应,你可以配置数据库的查询超时时间.在默认情况下 Confluence 没有超时时间.希望配置数据库查询超时时间,在你的测试服务器上进行下面的操作: 1. 关闭 Confluence. 2. 从 confluence-x.x.x.jar 文件中解压出 databaseSubsystemContext.xml.这个文件在 confluence/WEB-INF/lib/,同时拷贝到 confluence/WEB-INF/classes/ 目录下面.

外键关联非主键id时-hbm.xml配置,及其分页查询DaoImpl

表关联时,外键关联非主键id时-hbm.xml配置: (由于hibernate默认为关联主键查询,故需要配置相关hql语句的属性) <many-to-one name="areas" class="com.hnqy.entity.Areas" fetch="select" property-ref="areaid" foreign-key="areaid"> <column name=&q

【SSO单点系列】(7):CAS4.0 SERVER通过数据库方式认证用户

在前几篇中有简单介绍服务端的认证方式,默认的是直接在 deployerConfigContext.xml 文件中 一个叫做 primaryAuthenticationHandler 的bean中配置.不过这只支持一个账号,而且是固定的,这有非常大的局限性,在现实系统中是肯定不能用这样的方式的. 现在的应用系统一般都是通过读取数据库的方式验证用户名.密码是否正确,进而进行认证的.因此在这一篇文章中将会介绍,怎么把服务端的默认认证方式改造成数据库验证的方式,以此满足系统的基本需求. 1.增加数据源配