美文网首页
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验证用户名和密码

    使用mysql验证用户名和密码 本次的验证将采用不加密密码模式来完成。本次需要用到如下两台服务器: 1. 【cas...

  • Python偷懒代码|持续更新

    1.urllib方式验证用户名和密码 2.Selenium方式需要验证用户名和密码 3.urllib使用代理Pro...

  • SQL-查询(一)

    查询机制 打开mysql命令行工具,使用用户名和密码登陆 一旦服务器通过用户名和密码的验证,则为用户成立一个数据库...

  • 用户名密码

    <个人开发工具用户名密码命名方法> 对于个人开发学习mysql使用,建议mysql用户名和密码都设置为root(或...

  • MySQL 面试系列:MySQL 命令和内置函数

    如何用命令行方式连接 MySQL 数据库? 使用 mysql -u用户名 -p密码; 输入用户名和密码就可以正常进...

  • 7.登录验证和登出

    一、FBV 方式1.1 登录验证并加入 session用户登录时,使用 authenticate 验证用户名和密码...

  • Mac下mysql的安装与卸载

    使用homebrew安装mysql 1、安装mysql 2、启动mysql服务 3、设置root密码 设置验证密码...

  • mysql常用命令

    mysql登录 mysql -u用户名 -p密码 查询数据库: mysql> SHOW DATABASES; 使用...

  • 关于登录的测试用例

    一.功能测试 1.输入已注册的用户名,和密码验证是否成功登录 2.输入正确的用户名和错误密码验证是...

  • 08.Docker-搭建Eolinker接口管理平台

    默认mysql用户名和密码都为root

网友评论

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

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