zoukankan      html  css  js  c++  java
  • 单点登录 CAS 5.*

    前面演示的项目 都是使用的固定用户,现在,可以尝试从数据库获取用户+密码尝试登录,

    创建表和数据:

    CREATE TABLE `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `user_name` varchar(255) DEFAULT NULL,
      `password` varchar(255) DEFAULT NULL,
      `age` int(4) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- 除了小明是明文  其他的都是MD5加密过的 密码均是123456
    INSERT INTO `user`( `name`, `user_name`, `password`, `age`) VALUES ( '管理员', 'admin', 'e10adc3949ba59abbe56e057f20f883e', 5);
    INSERT INTO `user`( `name`, `user_name`, `password`, `age`) VALUES ( '小明', 'xiaoming', '123456', 10);
    INSERT INTO `user`( `name`, `user_name`, `password`, `age`) VALUES ( '小红', 'xiaohong', 'e10adc3949ba59abbe56e057f20f883e', 25);
    

      

    pom.xml增加jar包

              <dependency>
                        <groupId>org.apereo.cas</groupId>
                        <artifactId>cas-server-support-jdbc</artifactId>
                        <version>${cas.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apereo.cas</groupId>
                        <artifactId>cas-server-support-jdbc-drivers</artifactId>
                        <version>${cas.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.36</version>
                    </dependency>
    

      

    继续修改 application.properties 文件,增加

    #数据源信息
    cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/cas?useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
    cas.authn.jdbc.query[0].user=root
    cas.authn.jdbc.query[0].password=123456
    cas.authn.jdbc.query[0].sql=select * from user where user_name=?
    cas.authn.jdbc.query[0].fieldPassword=password
    cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
    

      然后启动测试server  就不启动client测试了,尝试下xiaoming 123456 明文密码进行登录  

    登陆成功,但是一般数据库密码都不会明文存储,cas提供了MD5,salt等加密方式,并且支持自定义密码校验。现在尝试一下MD5,首先 application.properties中继续增加

    #配置密码加密方式
    cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
    cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
    cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

      重启server  使用xiaoming便不会登录成功,其他两个测试账号则可以成功登录

     自定义密码加密方式解密,增加自己的解密工具类  MyPasswordEncoder.java 当然只是随便写了写,校验一下明文密码

    package com.xpsd.cloud.security;
    
    import org.springframework.security.crypto.password.PasswordEncoder;
    
    /**
     * @Author: L.swallow
     * @Date: 2019/1/15 17:39
     */
    public class MyPasswordEncoder implements PasswordEncoder {
        /**
         * 对输入的密码加密过程
         */
        @Override
        public String encode(CharSequence charSequence) {
            return charSequence.toString();
        }
    
        /**
         * 密码校验过程
         */
        @Override
        public boolean matches(CharSequence inputPwd, String dbPwd) {
            if(dbPwd.contentEquals(inputPwd)){
                return true;
            }
            return false;
        }
    }
    

      

    修改配置文件:application.properties 

    #配置密码加密方式
    #cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT
    #cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
    #cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
    
    #自定义密码加密方式
    cas.authn.jdbc.query[0].passwordEncoder.type=com.xpsd.cloud.security.MyPasswordEncoder
    cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
    

      明文密码的只有小明,就拿小明试试吧。然后就又登陆成功啦!

  • 相关阅读:
    当期所得税费用总额
    所得税净利润算法
    [AGC028B]Removing Blocks 概率与期望
    bzoj 4319: cerc2008 Suffix reconstruction 贪心
    bzoj 2430: [Poi2003]Chocolate 贪心
    BZOJ 2839: 集合计数 广义容斥
    luogu 5505 [JSOI2011]分特产 广义容斥
    CF504E Misha and LCP on Tree 后缀自动机+树链剖分+倍增
    CF798D Mike and distribution 贪心
    CF707D Persistent Bookcase 可持久化线段树
  • 原文地址:https://www.cnblogs.com/lewskay/p/10268337.html
Copyright © 2011-2022 走看看