我通过复制LDAP插件并对其进行修改,创建了一个presto自定义密码身份验证器插件(内部)。 你可以在这里看到该代码:https://github.com/prestodb/presto/tree/master/presto-password-authenticators/src/main/java/com/facebook/presto/password。
我创建了身份验证器,身份验证器工厂和配置的副本,并修改了它们,基本上只从配置中获取用户/密码,并且只允许该用户进入。 我还把新类放在PasswordAuthenticatorPlugin注册码中。
我可以在启动 presto 时看到插件加载,但尽管不存在错误,但它似乎没有做任何事情。 我错过了什么?
注意:我已经找到了解决方案,我只是在SO上录制它,因为我最初来到这里并没有找到任何帮助。
要使自定义密码插件正常工作,您实际上需要启用HTTPS才能与协调器进行通信。 您实际上可以在其文档的底部看到此建议:
https://prestodb.github.io/docs/current/develop/password-authenticator.html
此外,必须将协调器配置为使用密码身份验证并启用 HTTPS。
因此,使其工作的步骤是:
- 确保主配置属性具有"http-server.authentication.type=PASSWORD"。
- 请确保在配置属性旁边添加密码身份验证器.properties,其中包含类似于上面链接中的示例的内容。 但请确保使用身份验证器中的字符串作为名称,并改为添加配置属性(用户名和密码)。
- 设置一个 JKS 存储或一个真实的证书(这里有一些来自 Presto for JKS 的说明:https://prestodb.github.io/docs/current/security/tls.html)。
- 将 SSL 配置添加到您的配置属性中。
- 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
- 将 JDBC 驱动程序设置为使用相同的密钥库。
我写了一篇关于它的博客,如果其中有任何没有意义,也会更详细。 但是完成所有这些操作后,您应该发现它确实需要密码,并且确实强制执行您的插件。
https://coding-stream-of-consciousness.com/2019/06/18/presto-custom-password-authentication-plugin-internal/