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
    

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

  • 相关阅读:
    rally测试后生成的html报告,无法正常展示
    开机自动执行的脚本
    python设计模式-命令模式
    解决docker命令行终端显示不全的问题
    ansible简单入门
    python函数的执行过程
    rally task配置文件
    python调试工具remote_pdb
    rally使用tempest进行测试
    rally测试opentack------安装部署和简单实践
  • 原文地址:https://www.cnblogs.com/lewskay/p/10268337.html
Copyright © 2011-2022 走看看