美文网首页
12. 使用mysql验证用户名和密码

12. 使用mysql验证用户名和密码

作者: 不知名的蛋挞 | 来源:发表于2019-08-22 14:12 被阅读0次

    使用mysql验证用户名和密码

    本次的验证将采用不加密密码模式来完成。本次需要用到如下两台服务器:

    NO 主机名称 IP地址 用途描述
    1 cas-server 192.168.198.203 Tomcat、CAS
    2 cas-mysql 192.168.198.204 MySQL

    1. 【cas-mysql】启动mysql服务

    nohup mysql_safe --user=root >/dev/null 2>& 1 &
    

    2. 【cas-mysql】执行数据库脚本,创建用户表,导入测试数据(可以用Navicat操作)

    一定要记住,此时的密码并没有使用MD5进行加密处理。

    3. 【cas-server】cas服务器连接mysql数据库

    此时的cas服务器需要进行mysql数据库的连接,所以将c3p0、mysql-jdbc、mchange-commons-java、cas-server-support-jdbc组件包上传到Tomcat服务器中:

    • 停止Tomcat当前服务;
    • 将这些*.jar上传到Linux目录下;
    • 将所有的*.jar移动到cas项目里面:
    mv /srv/ftp/*.jar /usr/local/tomcat/webapps/cas/WEB-INF/lib
    

    4.【cas-server】修改cas配置文件

    vim  /usr/local/tomcat/webapps/cas/WEB-INF/deployerConfigContext.xml
    
    • 4.1数据源配置
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/cas?useUnicode=true&amp;characterEncoding=UTF-8"></property>
        <property name="user" value="root"></property>
        <property name="password" value="root"></property>
      </bean>
    
    • 4.2 增加数据库检测认证器
    <bean id="doAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
        <property name="dataSource" ref="dataSource" />
        <property name="sql" value="select password from member where mid=? AND locked=0" />
    </bean>
    
    • 4.3 修改认证授权
    原始数据:<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
    新配置项:<entry key-ref="doAuthHandler" value-ref="primaryPrincipalResolver" />
    

    5. 【cas-server】启动Tomcat服务

    打开浏览器进入cas认证界面进行测试:

    在CAS中使用MD5加密

    之前给出的数据库密码都属于明文的显示,很明显这样的显示不适合于我们的开发,所以在实际的工作之中应该使用密文进行处理。那么本次将采用MD5+盐值的模式来实现密码的加密处理操作。本次加密的时候采用盐值的处理,盐值使用Base64来处理。

    public class TestBase64 {
    
        public static void main(String[] args){
            String str = "saltjava";
            System.out.println(new String(Base64.getEncoder().encode(str.getBytes())));
        }
    }
    

    得到盐值:bWxkbmphdmE=,随后一定要使用MD5进行加密处理,但是这个加密处理采用加密3次的模式完成。

    public class TestPassword {
        public static void main(String[] args){
            String salt = "bWxkbmphdmE=";
            String password = "hello";
            String newpassword = password+"{{"+salt+"}}";
            for(int i=0;i<3;i++){
                newpassword = new MD5Code().getMD5ofStr(newpassword);
            }
            System.out.println(newpassword);
        }
    }
    

    那么之后就可以得到加密后的数据库脚本内容:

    随后就需要进行具体的MD5的加密的验证处理了,此时需要修改cas服务器的配置。

    1. 需要为CAS做一个新的密码加密器

    CAS的密码加密器有自己的一个专属实现类,而这个实现类在“cas-server-core-api-4.1.7.jar”包里面。

    // 此PasswordEncoder为CAS软件包提供,必须进行严格的实现
    public class CustomPasswordEncoder implements PasswordEncoder{
    
        @Override
        public String encode(String password){
            String salt = "bWxkbmphdmE=";
            String newpassword = password+"{{"+salt+"}}";
            for(int i=0;i<3;i++){
                newpassword = new MD5Code().getMD5ofStr(newpassword);
            }
            System.out.println(newpassword);
        }
    }
    

    2. 随后将此开发包进行打包编译处理,打包编译的包名为“md5-code.jar”

    3. 将导出的“md5-code.jar”文件上传到Linux系统,随后将其移动到cas/WEB-INF/lib目录下

    4. 随后需要编辑deployerConfigContext.xml配置文件,引入刚刚定义的密码类的操作

    • 4.1 先定义密码加密处理的bean声明:
    <bean id="passwordEncoder" class="cn.myproject.util.encoder.CustomPasswordEncoder">
    
    • 4.2 修改定义好的数据库认证配置:这里一定要给出“passwordEncoder”这个属性
    <bean id="doAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
        <property name="passwordEncoder" ref="passwordEncoder" />
        <property name="dataSource" ref="dataSource" />
        <property name="sql" value="select password from member where mid=? AND locked=0" />
    </bean>
    

    5. 重新启动Tomcat

    • 停止当前的Tomcat服务
    • 启动服务

    相关文章

      网友评论

          本文标题:12. 使用mysql验证用户名和密码

          本文链接:https://www.haomeiwen.com/subject/mzcmjctx.html