2

我想让服务使用一些凭据向 ZooKeeper 进行身份验证,以便他们可以访问配置信息。

摘要式身份验证对我的要求不够安全:“身份验证是通过以明文形式发送用户名:密码来完成的”。

是否已经有一个简单而安全的替代方案可用?我可以使用 Curator,并且该项目是基于 Java 的。

如果不是,创建我自己的身份验证方法将涉及哪些步骤?实现AuthenticationProviderzookeeper.authProvider.1在服务器上设置以使用此提供程序,然后将任何身份验证令牌(可能是用户名/密码哈希)CuratorFrameWorkFactory作为参数传递给构建器byte[]

4

2 回答 2

2

通过 HTTPS 使用摘要(甚至基本身份验证)。让传输层加密处理您的安全问题。尝试推出自己的应用层加密既困难又很可能导致安全漏洞。

更新:

关于动物园管理员和 SSL。根据动物园管理员网站:

3.4 中的新功能:Netty 是一个基于 NIO 的客户端/服务器通信框架,它简化了(通过直接使用 NIO)Java 应用程序的网络级通信的许多复杂性。此外,Netty 框架内置了对加密 (SSL) 和身份验证(证书)的支持。这些是可选功能,可以单独打开或关闭。

zookeeper 文档在配置上有点稀疏,我建议您查看 Netty 文档。

于 2013-09-23T16:39:12.230 回答
1

ZooKeeper 文档说要将此属性设置为使用 Netty:zookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory

我查看了 NettyServerCnxnFactory 的源代码,它是内部类“CnxnChannelHandler”,很明显 3.4.5 中现有的 Zookeeper 代码没有内置的“配置”能力以使用 SSL。

我在这里猜...但是使用 SSL 的一种可能方法是对 Zookeeper 的 NettyServerCnxnFactory 进行子类化,并添加使用 Netty 的 SSL 功能所需的代码。然后将 zookeeper 属性设置为指向您的新连接工厂。

于 2014-02-10T18:51:34.633 回答