2013-09-23 56 views
2

我想讓服務使用一些憑證進行ZooKeeper驗證,以便他們可以訪問配置信息。ZooKeeper Digest Authentication - 安全替代?

Digest authentication是不是我的要求確保充分的:「認證通過發送用戶名完成:在明文密碼」。

是否有簡單又安全的備選方案?我可以使用Curator,並且該項目是基於Java的。

如果不是,創建我自己的身份驗證方法將涉及哪些步驟?執行AuthenticationProvider,在服務器上設置zookeeper.authProvider.1以使用此提供程序,然後將byte[]參數傳遞給CuratorFrameWorkFactory構建器,然後傳遞任何身份驗證令牌(可能是用戶名/密碼哈希)?

回答

2

通過HTTPS使用摘要(甚至基本身份驗證)。讓傳輸層加密處理您的安全問題。試圖推出自己的應用層加密技術既困難又極有可能導致安全漏洞。

UPDATE:

關於動物園管理員和SSL。據動物園管理員網站:

新在3.4:Netty的是一個基於NIO客戶端/服務器通信框架,它簡化了(超過NIO直接使用)的許多Java應用程序的網絡層通信的複雜性。另外,Netty框架內置了對加密(SSL)和認證(證書)的支持。這些是可選功能,可以單獨打開或關閉。

zookeeper文檔在配置上有點稀疏,我建議你看一下Netty文檔。

+0

ZooKeeper絕對支持SSL嗎?可以使用當前的文檔(http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html)提及Netty,但管理證書的部分標記爲「TBD」 –

+0

@Deejay,請參閱更新。 – Aurand

1

的ZooKeeper的文件說,要將此屬性設置爲使用的Netty: zookeeper.serverCnxnFactory = org.apache.zookeeper.server.NettyServerCnxnFactory

我看着爲NettyServerCnxnFactory的源代碼和它的內部類「CnxnChannelHandler」和很明顯,3.4.5中的現有Zookeeper代碼沒有內置的「配置」能力來使用SSL。

我在這裏猜測......但使用SSL的一種可能方式是子類Zookeeper的Ne​​ttyServerCnxnFactory並添加必要的代碼以使用Netty的SSL功能。然後將zookeeper屬性設置爲指向新的連接工廠。