【问题标题】:Presto custom PasswordAuthenticator plugin for coordinator authentication is not triggered未触发协调器身份验证的 Presto 自定义 PasswordAuthenticator 插件
【发布时间】:2019-11-02 05:49:03
【问题描述】:

我通过制作 LDAP 插件的副本并对其进行修改,创建了一个 presto 自定义密码验证器插件(内部)。您可以在此处查看该代码:https://github.com/prestodb/presto/tree/master/presto-password-authenticators/src/main/java/com/facebook/presto/password

我创建了 Authenticator、AuthenticatorFactory 和配置的副本,并将它们修改为基本上只从配置中获取用户/密码并且只允许该用户进入。我还将新类放在 PasswordAuthenticatorPlugin 注册代码中。

我可以在 presto 启动时看到插件加载,但尽管没有出现任何错误,但它似乎没有做任何事情。我错过了什么?

【问题讨论】:

    标签: bigdata presto


    【解决方案1】:

    注意:我已经找到了解决方案,我只是在 SO 上记录它,因为我最初来到这里并没有找到任何帮助。

    要使自定义密码插件正常工作,您实际上需要启用 HTTPS 才能与协调器通信。您实际上可以在他们的文档底部看到此建议:

    https://prestodb.github.io/docs/current/develop/password-authenticator.html

    此外,协调器必须配置为使用密码验证并启用 HTTPS。

    因此,使其工作的步骤是:

    1. 确保您的主 config.properties 具有“http-server.authentication.type=PASSWORD”。
    2. 确保在配置属性旁边添加密码验证器.properties,其内容类似于上面链接中的示例。但请确保使用身份验证器中的字符串作为名称,并添加配置属性(用户名和密码)。
    3. 设置 JKS 存储或真实证书(此处来自 Presto for JKS 的一些说明:https://prestodb.github.io/docs/current/security/tls.html)。
    4. 将 SSL 配置添加到您的 config.properties。
      • http-server.https.enabled=true
      • http-server.https.port=8443
      • http-server.https.keystore.path=/etc/presto-keystore/keystore.jks
      • http-server.https.keystore.key=password123
    5. 设置您的 JDBC 驱动程序以使用相同的密钥库。

    如果其中任何一个没有意义,我也会写一篇关于它的博客,其中包含更多细节。但是在完成所有这些之后,您应该会发现它确实需要密码并且确实强制执行您的插件。

    https://coding-stream-of-consciousness.com/2019/06/18/presto-custom-password-authentication-plugin-internal/

    【讨论】:

    • 嗨,约翰,感谢您的帖子。你有没有为此制作一个外部插件?
    • 抱歉,我们在公司维护了一个分支,所以我只是复制了另一个内部分支并根据需要对其进行了修改。我曾经尝试过的唯一外部插件是自定义配置单元插件,但它似乎没有成功......项目结构中不断出现奇怪的依赖问题(我不确定它是否可以与配置单元插件一起使用;我确实花了相当多的时间,并在论坛上询问)。所以,最后我不得不在那里做一个内部的(这就是我们开始分叉的方式)。
    猜你喜欢
    • 2020-04-08
    • 2013-11-19
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多