ZooKeeper摘要认证 - 安全替代方案?

时间:2013-09-23 15:36:13

标签: java security authentication apache-zookeeper apache-curator

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

<强>更新

关于zookeeper和SSL。根据zookeeper网站:

  

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

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

答案 1 :(得分:1)

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

我查看了NettyServerCnxnFactory的源代码及其内部类“CnxnChannelHandler”,很明显3.4.5中现有的Zookeeper代码没有“配置”使用SSL的内置功能。<​​/ p>

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