不会触发用于协调器身份验证的Presto自定义PasswordAuthenticator插件

时间:2019-06-19 13:11:46

标签: bigdata presto

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

我创建了Authenticator,AuthenticatorFactory和配置的副本,并对其进行了修改,使其基本上仅从配置中获取用户/密码,并仅允许该用户进入。我还将新类放入PasswordAuthenticatorPlugin注册代码中。

启动presto时,我可以看到插件正在加载,但是尽管没有错误,但它似乎没有执行任何操作。我想念什么?

1 个答案:

答案 0 :(得分:0)

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

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

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

  

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

因此,使其生效的步骤是:

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

如果没有任何意义,我也会在博客上写一些细节。但是,在完成所有这些操作之后,您应该发现它确实需要密码并且确实可以执行您的插件。

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