deployerConfigContext.xml

修改对应添加以下代码

 <bean id="SearchModeSearchDatabaseAuthenticationHandler"
class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"
abstract="false" lazy-init="default" autowire="default" >
<property name="tableUsers">
<value>tenant_user</value>
</property>
<property name="fieldUser">
<value>login_name</value>
</property>
<property name="fieldPassword">
<value>login_password</value>
</property>
<property name="dataSource" ref="dataSource" />
</bean> <!-- DB2 connector-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.ibm.db2.jcc.DB2Driver</value>
</property>
<property name="url">
<value>jdbc:db2://127.0.0.1:50000/SAMPLE</value>
</property>
<property name="username">
<value>administrator</value>
</property>
<property name="password">
<value>111111</value>
</property>
</bean> <!-- MySQL connector -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/partycloud</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>

修改加密方法

SearchModeSearchDatabaseAuthenticationHandler.java

@Override
protected final HandlerResult authenticateUsernamePasswordInternal(final UsernamePasswordCredential credential)
throws GeneralSecurityException, PreventedException {
final Logger logger = LoggerFactory.getLogger(this.getClass());
final String username = credential.getUsername();
final String encyptedPassword = getPasswordEncoder().encode(credential.getPassword());
int count=0;
try {
PasswordEncoder passwordEncoder = new DefaultPasswordEncoder("MD5"); //count = getJdbcTemplate().queryForObject(this.sql, Integer.class, username, encyptedPassword);
List list=getJdbcTemplate().queryForList("select * from tenant_user t where login_name=? ",username );
if(list.size()>0){
HashMap<String,String > map = (HashMap<String, String>) list.get(0);
String salt=map.get("SALT").toUpperCase();
String loginPassword=map.get("LOGIN_PASSWORD");
String md5pass = passwordEncoder.encode( credential.getPassword()).toUpperCase() ;
String saltpass = passwordEncoder.encode( md5pass+salt ) ;
logger.info(" MD5:"+saltpass);
if(saltpass.toUpperCase().equals(loginPassword.toUpperCase())){
count=1;
}
} } catch (final DataAccessException e) {
e.printStackTrace();
throw new PreventedException("SQL exception while executing query for " + username, e);
}
if (count == 0) {
throw new FailedLoginException(username + " not found with SQL query.");
}
return createHandlerResult(credential, new SimplePrincipal(username), null);
}

CAS4.0 之JDBC

deployerConfigContext.xml

 修改对应添加以下代码

<bean id="SearchModeSearchDatabaseAuthenticationHandler"

         class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"

         abstract="false"   lazy-init="default"
autowire="default"  >

       <property  name="tableUsers">

           <value>tenant_user</value>

       </property>

       <property name="fieldUser">

           <value>login_name</value>

       </property>

       <property name="fieldPassword">

           <value>login_password</value>

       </property>

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

   </bean>



 



   <!-- DB2 connector-->

 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

      <property name="driverClassName">

          <value>com.ibm.db2.jcc.DB2Driver</value>

      </property>

      <property name="url">

          <value>jdbc:db2://127.0.0.1:50000/SAMPLE</value>

      </property>

      <property name="username">

          <value>administrator</value>

      </property>

      <property name="password">

          <value>111111</value>

      </property>

  </bean>

<!-- MySQL connector -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

    <property name="driverClassName">

        <value>com.mysql.jdbc.Driver</value>

    </property>

    <property name="url">

        <value>jdbc:mysql://127.0.0.1:3306/partycloud</value>

    </property>

    <property name="username">

        <value>root</value>

    </property>

    <property name="password">

        <value>root</value>

    </property>

</bean>

修改加密方法

SearchModeSearchDatabaseAuthenticationHandler.java

@Override

protected final HandlerResult authenticateUsernamePasswordInternal(final UsernamePasswordCredential credential)

        throws GeneralSecurityException, PreventedException {

    final Logger logger = LoggerFactory.getLogger(this.getClass());

    final String username = credential.getUsername();

    final String encyptedPassword = getPasswordEncoder().encode(credential.getPassword());

    int count=0;

    try {

        PasswordEncoder passwordEncoder = new DefaultPasswordEncoder("MD5");



        //count = getJdbcTemplate().queryForObject(this.sql, Integer.class, username, encyptedPassword);

        List list=getJdbcTemplate().queryForList("select * from tenant_user t  where login_name=?   ",username  );

        if(list.size()>0){

            HashMap<String,String > map = (HashMap<String, String>) list.get(0);

            String salt=map.get("SALT").toUpperCase();

            String loginPassword=map.get("LOGIN_PASSWORD");

            String md5pass = passwordEncoder.encode( credential.getPassword()).toUpperCase() ;

            String saltpass = passwordEncoder.encode( md5pass+salt ) ;

            logger.info(" MD5:"+saltpass);

            if(saltpass.toUpperCase().equals(loginPassword.toUpperCase())){

                count=1;

            }

        }



    } catch (final DataAccessException e) {

        e.printStackTrace();

        throw new PreventedException("SQL exception while executing query for " + username, e);

    }

    if (count == 0) {

        throw new FailedLoginException(username + " not found with SQL query.");

    }

    return createHandlerResult(credential, new SimplePrincipal(username), null);

}

【SSO单点系列】(5):CAS4.0 之JDBC的更多相关文章

  1. 【SSO单点系列】(2):CAS4.0 登录页的个性化定制

    上一篇 [SSO单点系列](1):CAS环境的搭建介绍了CAS最简单环境的搭建,以及一个例子用来讲解CAS的一个最基础的用法. 今天主要是介绍如何对CAS登录页进行个性化定制.    一.开始 下图是 ...

  2. Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

    上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * ...

  3. (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  4. Spring Cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  5. 【SSO单点系列】(1):CAS4.0 环境的搭建

    一.概述 今天开始写CAS相关的第一篇文章,这篇文章主要是关于CAS环境的搭配,提供给刚刚接触CAS的一个入门指南,并演示一个CAS的最简单的实例 二.环境要求 博主的环境如下: win8.1 64 ...

  6. 【SSO单点系列】(3):CAS4.0 登录页验证码的添加

    2016.08.23 更新 注意:这个教程只适合4.0版本的,4.1以及以上的版本的已经不试用了, 后面几篇有人提到过 源码网盘链接更新了下 : 链接: http://pan.baidu.com/s/ ...

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

    在前几篇中有简单介绍服务端的认证方式,默认的是直接在 deployerConfigContext.xml 文件中 一个叫做 primaryAuthenticationHandler 的bean中配置. ...

  8. 【SSO单点系列】(6):CAS4.0 单点流程序列图(中文版)以及相关术语解释(TGT、ST、PGT、PT、PGTIOU)

    CAS 相关的内容好久没写了,可能下周会继续更新一些内容吧. 在上一篇中的单点流程序列图由于是从官网直接下载来的,上面都是英文,可能有的朋友看不懂,因此修改成中文的. PS:只修改了一个,第二个图明天 ...

  9. 【SSO单点系列】(4):CAS4.0 SERVER登录后用户信息的返回

    接着上一篇,在上一篇中我们描述了怎么在CAS SERVER登录页上添加验证码,并进行登录.一旦CAS SERVER验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户 ...

  10. 【SSO单点系列】(5):CAS4.0 单点流程序列图

    刚过元旦假期,感觉自己好久没写博客了,今天更新一篇,主要是CAS 的一个流程图. ps: 这两张图 是直接从官网上找的,都是简单的英语,我这种英语四级没过都看得懂,大家应该没有压力. 1.CAS 基本 ...

随机推荐

  1. TypeDB Forces 2023 (Div. 1 + Div. 2, Rated, Prizes!) A-E

    比赛链接 A 题意 给一个正整数 \(n\) ,找到一组正整数 \(x,y \leq n\) ,满足 \(x^y \cdot y + y^x \cdot x = n\) . 题解 知识点:数学. 尝试 ...

  2. Java 进阶P-4.4+P-4.5

    子类和父类的关系 在java中规定:一个父类可以有多个子类,但是一个子类只能有一个父类.子类可以通过extends关键字来继承父类.做个比较通俗的比喻,就像一个父亲可以有多个亲孩子,但是一个孩子只能有 ...

  3. 内存概述-java虚拟机的内存划分

    内存概述 内存是计算机中的重要原件,临时存储区域,作用是运行程序,我们编写写的程序是存放在硬盘中的,在硬盘中的程 序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存. Java虚拟机要运行程 ...

  4. 读Java8函数式编程笔记03_高级集合类和收集器

    1. 方法引用 1.1. 一种引用方法的轻量级语法 1.1.1. 提供了一种简短的语法 1.1.2. 标准语法为Classname::methodName 1.2. 凡是使用Lambda表达式的地方, ...

  5. 笔记: C#RabbitMQ初步使用记录

    Rabbitmq 的使用场景有哪些? ①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列.就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式. ②. 多个应用之间 ...

  6. linux08-进程管理

    1.任务调度 2.进程 3.服务 4.进程.网络监控 1.任务调度crond 1.1基本说明 任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: 1.系统工作:有些重要的工作必须周而 ...

  7. 为什么sleeping的会话会造成阻塞

    背景 客户反映HIS数据库每天22点后都会发生阻塞,阻塞的源头是一个sleeping的会话,越阻塞越多,只能通过手动KILL掉才能解决,十分不解为什么状态为sleeping的会话会造成阻塞. 现象 在 ...

  8. 一牛X同学的报告分享

    https://indico.cern.ch/event/743699/contributions/3072640/attachments/1750517/2836233/ARIES_Workshop ...

  9. Hbase一:Hbase介绍及特点

    转载请注明出处: 1.Google的三篇论文 2003年,Google发布Google File System论文,(GFS)这是一个可扩展的分布 式文件系统,用于大型的.分布式的.对大量数据进行访问 ...

  10. 简单添加table线条

    <table style="width: 100%; margin: 0 auto; border: 1px solid #BBBBBB; border-collapse: colla ...