11

我正在运行 MySQL 代理,并且我有一个带有函数的 LUA,read_auth()但是在身份验证期间传递的密码是散列的(如预期的那样)。

我要求它们采用一种我可以使用并继续发布的格式,所以是明文。在 MySQL 客户端上启用明文插件没有效果,我怀疑 MySQL 代理不要求客户端以明文形式发送它,因此默认为散列。

所以基本上:您对如何在read_auth()MySQL 代理的功能中获取明文身份验证详细信息有任何想法吗?

注意:我的最终目标是使用 LDAP 进行身份验证,但是我可以获得密码(散列或不散列)的唯一方法是实际绑定到 LDAP,它不能通过搜索获得。

4

1 回答 1

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 模块来提供身份验证服务,并且有一个易于配置的 pam_ldap 模块。

您还可以考虑使用角色并将用户名映射到角色,因此您将拥有一些具有权限的角色,并且许多用户名映射到这些角色。您可以在此处找到更多信息。

更多资源:

于 2017-02-08T23:07:38.743 回答