我运行了MySQL代理,并且我有一个带read_auth()
函数的LUA,但是在验证期间传递的密码是经过哈希处理的(如预期的那样)。
我要求我们使用的格式可以使用并发布,因此明文。在MySQL客户端上启用明文插件没有任何效果,我怀疑MySQL代理并不要求客户端以明文形式发送它,因此默认为散列。
基本上:您对如何在MySQL代理的read_auth()
函数中获取明文验证详细信息有任何想法吗?
注意:我的最终目标是使用LDAP进行身份验证,但是我获取密码的唯一方法(哈希是否哈希)是通过实际绑定到LDAP,无法通过搜索获得。
答案 0 :(得分:8)
MySQL网络协议不允许以明文形式发送密码,您可以捕获的只是加密版本。
但是,如果您尝试发送(从客户端到服务器)明文,客户端明文插件应该工作...
从MySQL 5.5.27开始,为了不太可能无意中使用此插件,需要客户端明确启用它。这可以通过以下几种方式完成:
将LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN环境变量设置为以1,Y或y开头的值。这为所有客户端连接启用了插件。
mysql,mysqladmin和mysqlslap客户端程序支持--enable-cleartext-plugin选项,该选项在每次调用的基础上启用插件。
mysql_options()C API函数支持MYSQL_ENABLE_CLEARTEXT_PLUGIN选项,该选项在每个连接的基础上启用插件。此外,任何使用libmysqlclient并读取选项文件的程序都可以通过在客户端库读取的选项组中包含enable-cleartext-plugin选项来启用该插件。
或者,还有一些其他选项可以通过LDAP进行身份验证。例如,您可以使用PAM身份验证插件,它允许您使用任何可用的PAM模块来提供身份验证服务,there is a pam_ldap module that is easy to configure.
您还可以考虑使用角色并将用户名映射到角色,因此您将拥有一些具有权限的角色和许多映射到这些角色的用户名。你可以在这里找到更多相关信息。
更多资源: