Kafka“, le module de Connexion n'est pas spécifié dans JAAS config”
J'ai un problème de communication avec Kafka sécurisé avec sasl
à l'aide de la console de scripts. Kafka est sécurisé avec sasl
, l'auditeur est SASL_PLAINTEXT
et le mécanisme est PLAIN
.
Ce que j'ai fait:
J'ai essayé de l'inscription de certaines données à l'aide de l'un de kafka scripts:
bin/kafka-consumer-groups.sh --bootstrap-server (address) --list
Mais j'ai
WARN Bootstrap broker (address) disconnected (org.apache.kafka.clients.NetworkClient)
et commande échoue, ce qui est compréhensible parce que c'est sécurisé avec sasl.
J'ai donc essayé de comment ajouter de la client nom d'utilisateur/mot de passe à cette commande.
Tout d'abord, j'ai essayé d'exécuter kafka-console-consumer
script, j'ai utilisé --command-config
pour ajouter des fichiers nécessaires. J'ai rapidement découvert que je ne peux pas ajouter jaas
fichier directement et j'avais besoin d'utiliser .properties
fichier, je l'ai fait.
Mon fichier de propriétés(gardez à l'esprit que les crochets indiquent "censuré" de données, je ne peux pas mettre toutes les données réelles ici):
bootstrap.servers=(address)
zookeeper.connect=127.0.0.1:2181
zookeeper.connection.timeout.ms=6000
sasl.jaas.config=(path)/consumer_jaas.conf
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
group.id=(group)
Mon fichier jaas:
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username=(username)
password=(password);
};
Ce jaas
fichier fonctionne dans mon standard des applications java.
Cependant, lorsque j'essaie de l'exécuter, soit kafka-consumer-groups
script ou kafka-console-consumer
, j'obtiens cette erreur:
Exception in thread "main" org.apache.kafka.common.KafkaException: java.lang.IllegalArgumentException: Login module not specified in JAAS config
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:94)
at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:93)
at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:51)
at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:84)
at kafka.admin.AdminClient$.create(AdminClient.scala:229)
at kafka.admin.AdminClient$.create(AdminClient.scala:223)
at kafka.admin.AdminClient$.create(AdminClient.scala:221)
at kafka.admin.ConsumerGroupCommand$KafkaConsumerGroupService.createAdminClient(ConsumerGroupCommand.scala:454)
at kafka.admin.ConsumerGroupCommand$KafkaConsumerGroupService.<init>(ConsumerGroupCommand.scala:389)
at kafka.admin.ConsumerGroupCommand$.main(ConsumerGroupCommand.scala:65)
at kafka.admin.ConsumerGroupCommand.main(ConsumerGroupCommand.scala)
Caused by: java.lang.IllegalArgumentException: Login module not specified in JAAS config
at org.apache.kafka.common.security.JaasConfig.<init>(JaasConfig.java:68)
at org.apache.kafka.common.security.JaasUtils.jaasConfig(JaasUtils.java:59)
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:85)
Ce jaas
fichier est une copie directe d'un fichier que j'utilise en java application qui communique avec kafka et il fonctionne, mais ici, en utilisant les outils de la console, il ne fonctionne tout simplement pas. J'ai essayé de chercher une solution mais je ne peux pas trouver quelque chose d'utile.
Quelqu'un peut-il m'aider?
OriginalL'auteur Tomasz | 2017-08-18
Vous devez vous connecter pour publier un commentaire.
Il y a 2 façons de fournir la configuration JAAS à la Kafka clients.
Via le client de la propriété:
sasl.jaas.config
. Dans ce cas, vous définissez à la configuration JAAS entrée. Par exemple, votre fichier de configuration devient:Comme vous l'avez déjà compris, vous pouvez utiliser
--command-config
pour passer d'un fichier de propriétés pourkafka-consumer-groups.sh
.Via la propriété Java:
java.security.auth.login.config
. Dans ce cas, vous définissez le chemin d'accès de votre fichier JAAS. Aussi, si vous définissez dansKAFKA_OPTS
,kafka-consumer-groups.sh
ramasser automatiquement.Lors de l'utilisation de sasl.jaas.la configuration, vous pouvez définir uniquement à la configuration JAAS entrée il ne fonctionne pas avec le chemin d'accès à un fichier. Au contraire avec la propriété Java, il fonctionne uniquement avec le chemin d'accès à un fichier.
OriginalL'auteur Mickael Maison