最近の Zookeeper ビルド (バージョン = 3.4.3-1240972、2012 年 2 月 6 日 10:48 GMT にビルド) を使用しており、すべてのクライアント接続で SASL を強制的に使用するのに問題があります。
リリースのローカル conf/ ディレクトリを使用して、次の構成を使用します (Ubuntu 12.04 で実行)。
conf/zoo.cfg
tickTime=2001
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
conf/jaas.conf
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="1adminsecret";
};
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required
username="super"
password="1adminsecret";
};
conf/java.env
export JVMFLAGS="-Djava.security.auth.login.config=`pwd`/conf/jaas.conf"
zkCli.sh スクリプトから接続すると、正しく認証されますが、jaas.conf ファイルを変更するとクエリができなくなります。これは予期される動作です。
ただし、ルビーの「zookeeper」gem を使用して (irb を使用して) 実行すると、次のようになります。
require 'zookeeper'
z = Zookeeper.new("localhost:2181")
z.get_children(:path => "/")
z.create(path:'/asdf', data:'test')
結果を適切に返します。ログインに SASL が必要な場合、Ruby クライアントがセキュリティをバイパスしているのはなぜですか。キーも作成できるので、読み取りと書き込みの問題だけではないことはわかっています。