我想让服务使用某些凭据通过ZooKeeper进行身份验证,以便它们可以访问配置信息。
Digest authentication不够安全,无法满足我的要求:“通过以明文形式发送用户名:密码来完成身份验证”。
是否已有一种简单且安全的替代方法可用?我能够使用Curator,并且该项目基于Java。
如果没有,创建我自己的身份验证方法将涉及哪些步骤?实现AuthenticationProvider
,在服务器上设置zookeeper.authProvider.1
以使用此提供程序,然后将任何身份验证令牌(也许是用户名/密码哈希)传递给CuratorFrameWorkFactory
构建器作为byte[]
参数?
最佳答案
通过HTTPS使用摘要(甚至基本身份验证)。让传输层加密处理您的安全问题。尝试推出自己的应用程序层加密既困难又很可能导致安全漏洞。
更新:
关于Zookeeper和SSL。根据动物园管理员的网站:
3.4中的新功能:Netty是一个基于NIO的客户端/服务器通信框架,它简化了Java应用程序的网络级别通信的许多复杂性(通过直接使用的NIO)。此外,Netty框架内置了对加密(SSL)和身份验证(证书)的支持。这些是可选功能,可以单独打开或关闭。
zookeeper文档在配置上有点稀疏,建议您改为查看Netty文档。
关于java - ZooKeeper摘要式身份验证-安全替代方案?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18963302/