Мне нужно настроить аутентификацию user: password для клиентов, обращающихся к данным внутри сервера zookeeper. Я экспериментирую с zkCli и Curator Framework, чтобы выяснить, как это работает, и по какой-то причине код, выполняемый из Curator Framework, обходит все параметры безопасности и ведет себя так, как если бы у него были полные права доступа, когда он не должен их иметь.
Я следил за ответами на эти вопросы:
Использование ACL с куратором
Как получить доступ к защищенному znode из ZooKeeper с помощью zkCli?
zkCli:
[zk: localhost:7999(CONNECTED) 29] create /testpath contents digest:user:smGaoVKd/cQkjm7b88GyorAUz20=:cdrwa
Created /testpath
[zk: localhost:7999(CONNECTED) 4] getAcl /testpath
'digest,'user:smGaoVKd/cQkjm7b88GyorAUz20=
: cdrwa
[zk: localhost:7999(CONNECTED) 30] rmr /testpath
Authentication is not valid : /testpath
[zk: localhost:7999(CONNECTED) 31]
Вышеуказанный результат, как и ожидалось, мы добавили ограничения ACL и теперь не можем получить доступ к созданному узлу. Однако, когда я пытаюсь получить доступ к этому узлу с помощью Curator Framework, он удаляет его, но не должен.
String zkConnectString = "hostname:7999";
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
CuratorFramework client = CuratorFrameworkFactory.builder()
.connectString(zkConnectString)
.retryPolicy(retryPolicy)
.build();
client.start();
try {
client.delete().forPath("/testpath");
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
Таким образом, код java Curator Framework удаляет узел успешно, а не выдает ошибки аутентификации. Что я делаю не так?
версии продукта:
Структура куратора: 2.11.1
Сервер Zookeeper: 3.4.5
Java-клиент Zookeeper: 3.4.12