【问题标题】:mysql-proxy cleartext passwordsmysql-proxy 明文密码
【发布时间】:2017-06-19 18:58:46
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: mysql lua mysql-proxy


    【解决方案1】:

    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.

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

    更多资源:

    【讨论】:

    • 我假设 PAM 身份验证插件不能与代理一起使用?
    • Pam 身份验证需要企业版 Mysql,但有几个开源实现。我不明白为什么它不能与代理一起使用。我正在旅行,所以我无法快速提供链接。但如果我这样做并且需要代理,我会使用角色方法。
    • 只是另一个快速评论 - 您是否无法在应用程序级别处理此问题?如果你愿意的话,制定你的出路......
    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2012-02-06
    • 2020-07-04
    相关资源
    最近更新 更多