Я использую версию zookeeper 3.4.12 и при попытке включить SASL найденная ниже ошибка. Может ли кто-нибудь помочь в этом.
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
useTicketCache=true
keyTab = "/tmp/kafka/zookeeper.service.keytab
principal = "zookeeper/[email protected]";
};
Ошибка :
2018-11-02 09:35:01,998] ERROR SASL authentication failed using login context 'Client' with exception: {} (org.apache.zookeeper.client.ZooKeeperSaslClient) javax.security.sasl.SaslException: Error in authenticating with a Zookeeper Quorum member: the quorum member's saslToken is null
Какие изменения вы внесли? Вы проверяли этот раздел в документации Kafka: kafka.apache.org/documentation/#zk_authz

Я думаю, проблема в том, что вам не хватает двойной кавычки на
keyTab = "/tmp/kafka/zookeeper.service.keytab
Похоже, я пропустил это при публикации вопроса, он есть. Но у вас все еще та же проблема, что бы это могло быть
Первым шагом в обеспечении безопасности Zookeeper является обеспечение связи между узлами кворума. Полное объяснение здесь.
В вашем jaas-файле Zookeeper должны быть разделы QuorumServer и КворумУченик.
Затем вы можете защитить связь между кластером Zookeeper и клиентами как Kafka. Полное объяснение здесь
Вы добавляете раздел Сервер в файл jaas Zookeeper, и в вашем файле Kafka jaas должен быть раздел Клиент
Проблема устранена, пробелы в jaas вызывали проблему
У меня была такая же проблема ...
SaslException: Error in authenticating with a Zookeeper Quorum member: the quorum member's saslToken is null
Эта ошибка также была в журнале Zookeeper Server:
ERROR [NIOWorkerThread-6:ZooKeeperServer@1191] - cnxn.saslServer is null: cnxn object did not initialize its saslServer properly.
Моя конфигурация, использующая взаимную аутентификацию Kerberos между экземплярами zookeeper.
Отсутствует раздел "Сервер"
Моя проблема заключалась в том, что у меня не было раздела Server в моей конфигурации jaas сервера для Zookeeper.
Мне нужно что-то вроде:
QuorumServer {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab = "/etc/security/keytabs/zookeeper.keytab"
storeKey=true
useTicketCache=false
debug=false
principal = "zookeeper/[email protected]";
};
QuorumLearner {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab = "/etc/security/keytabs/zookeeper.keytab"
storeKey=true
useTicketCache=false
debug=false
principal = "zookeeper/[email protected]";
};
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab = "/etc/security/keytabs/zookeeper.keytab"
storeKey=true
useTicketCache=false
principal = "zookeeper/[email protected]";
};
Когда клиенты подключаются к Zookeeper, они будут проходить аутентификацию в разделе Server этой конфигурации. Это необходимо для работы SASL.
Также убедитесь, что у вас установлен conf/java.env с чем-то вроде:
SERVER_JVMFLAGS = "${SERVER_JVMFLAGS} -Djava.security.auth.login.config=/opt/zookeeper/conf/server-jaas.conf"
CLIENT_JVMFLAGS = "${CLIENT_JVMFLAGS} -Djava.security.auth.login.config=/opt/zookeeper/conf/client-jaas.conf"
[2018-11-02 10: 05: 24,321] ОШИБКА аутентификации SASL с использованием контекста входа «Клиент» с исключением: {} (org.apache.zookeeper.client.ZooKeeperSaslClient) javax.security.sasl.SaslException: Ошибка аутентификации с член кворума Zookeeper: saslToken члена кворума имеет значение NULL. по адресу org.apache.zookeeper.client.ZooKeeperSaslClient.createSaslTo ken (ZooKeeperSaslCli ent.java:279) по адресу org.apache.zookeeper.client.ZooKeeperSaslClient.respondToSerache ver (at.zooKli) .zookeeper.ClientCnxn $ SendThread.readResponse