技术分享 CAS单点登录 服务端配置 查看内容

cas 入门之十:cas 认证处理器-JDBC简述(上)

老高 | 发布于 2017-05-05 13:20| 浏览()| 评论() | 收藏() | 点赞() | 打印

jdbc认证处理器

需要增加cas-server-support-jdbc-3.5.2.jar

对于jdbc认证处理器,包含三个

1.org.jasig.cas.adaptors.jdbc.BindModeSearchDatabaseAuthenticationHandler

根据提供的用户名及密码,认证是否能够连上相应的数据库,如何可以则认证成功,反之则认证失败,它需要一个参数datasource 数据源

2.org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler

根据提供的用户名及密码,认证该用户与数据库表的存储的用户信息相匹配,如果匹配则认证成功,反之则认证失败。它所需要至少两个参数

a.datasource 数据源;

b.sql,sql具体内容与如下类似select user_password from user_table where user_name =? 根据用户名去获取用户的密码;

c.passwordEncoder 密码的加密方式,这个是可选的;

所以QueryDatabaseAuthenticationHandler的认证过程就很简单明了,即根据sql语句到datasource中查询password,然后根据passwordEncoder将用户提供

的明码进行加密与password进行比对,如果相等就成功,否则认证失败。cas同时提供MD5密码加密方式,配置如下方式

 <bean class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
p:encodingAlgorithm="MD5"
p:characterEncoding="UTF-8"/>

3.org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler

这个认证处理器与QueryDatabaseAuthenticationHandler类似,只是不需要提供sql,换之提供相应的用户表名tableUsers,用户名字段fieldUser,

用户密码字段fieldPassword,及数据源dataSource,它会自动生成如下sql语句:

select count('x') from tableUsers where fieldUser=? And fieldPassword=?

这里passwordEncoder 密码的加密方式属性也是可选的.

通过这样一句sql语句查询用户数,当至少有一个用户存在则认证成功,否则失败。这个认证处理器与QueryDatabaseAuthenticationHandler不同是,这里并不需要用户名的唯一性,这是这两个认证处理器的最大不同。对于不同的用户信息采用不同的处理方式,但是可以达到同样的效果即对用户进行认证。

发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情