Hi Kafka Users,

I am trying to setup a Simple Authentication Mechanism for my Kafka
Instance running on my Virtual Box VM.
I am facing a lot of difficulty in starting the Zookeeper 3.4.10.

The scenario is like this...
I have a single admin User called sharjosh who's starting both the
Zookeeper and Kafka processes on the VM.

I tried to use the following command to start the zookeeper

~/zookeeper-3.4.10$ export
JVMFLAGS='-Djava.security.auth.login.config=/home/sharjosh/kafka_2.10-0.10.2.1/config/zk_server_jaas.conf';
bin/zkServer.sh start-foreground conf/zoo.cfg

and get

 at
org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
at
org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:116)
at
org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:53)
at
org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:87)
at
org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:117)
at
org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:82)
at
org.apache.zookeeper.server.ServerCnxnFactory.configureSaslLogin(ServerCnxnFactory.java:200)java.io.IOException:
No JAAS configuration section named 'Server' was foundin
'/home/sharjosh/kafka_2.10-0.10.2.1/config/zk_server_jaas.conf'.2017-06-04
22:43:31,324 [myid:] - ERROR [main:ZooKeeperServerMain@64] - Unexpected
exception, exiting abnormally2017-06-04 22:43:31,323 [myid:] - ERROR
[main:ServerCnxnFactory@199] - No JAAS configuration section named 'Server'
was foundin '/home/sharjosh/kafka_2.10-0.10.2.1/config/zk_server_jaas.conf'.

My JAAS Config file for Zookeeper is
Server {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    useTicketCache=true
    keyTab="/home/sharjosh/kafkaSecurity/sharjosh.keytab"
    principal="sharjosh@localhost"
};

My zoo.cfg file is
# The number of milliseconds of each tick
tickTime=2000

# The number of ticks that the initial
# synchronization phase can take
initLimit=10

# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/sharjosh/zookeeper-3.4.10/data

# the port at which the clients will connect
clientPort=2181

# the maximum number of client connections.
# increase this if you need to handle more clients
maxClientCnxns=500

# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
autopurge.snapRetainCount=3

# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=1

#
https://cwiki.apache.org/confluence/display/ZOOKEEPER/Client-Server+mutual+authentication
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

My Kafka startup command is
export KAFKA_OPTS='-Djava.security.krb5.conf=/etc/krb5.conf
-Djava.security.auth.login.config=/home/sharjosh/kafka_2.10-0.10.2.1/config/kafka_server_jaas.conf
-Dzookeeper.sasl.client=zKClient'; ./kafka-server-start.sh
/home/sharjosh/kafka-0.10.2.1-src/config/server.properties

My Kafka server's JAAS file is
KafkaServer {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    serviceName=kafka
    useTicketCache=true
    keyTab="/home/sharjosh/kafkaSecurity/sharjosh.keytab"
    principal="sharjosh@localhost"
};

zKClient {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    storeKey=true
    serviceName=zookeeper
    useTicketCache=true
    keyTab="/home/sharjosh/kafkaSecurity/sharjosh.keytab"
    principal="sharjosh@localhost"
};

My security settings in kafka's server.properties
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://:9092

security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=GSSAPI,PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN

zookeeper.connect=localhost:2181

# Timeout in ms for connecting to zookeeper
zookeeper.connection.timeout.ms=6000

On the other hand in Kafka Broker startup also I get errors as there's no
Zookeeper available.

org.apache.kafka.common.KafkaException: Exception while loading Zookeeper
JAAS login context 'Client'
 at
org.apache.kafka.common.security.JaasUtils.isZkSecurityEnabled(JaasUtils.java:154)
 at kafka.server.KafkaServer.initZk(KafkaServer.scala:310)
 at kafka.server.KafkaServer.startup(KafkaServer.scala:187)
 at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:39)
 at kafka.Kafka$.main(Kafka.scala:67)
 at kafka.Kafka.main(Kafka.scala)
Caused by: java.lang.SecurityException: java.io.IOException: Configuration
Error:
 Line 9: expected [option key]
 at sun.security.provider.ConfigFile$Spi.<init>(ConfigFile.java:137)
 at sun.security.provider.ConfigFile.<init>(ConfigFile.java:102)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
 at java.lang.Class.newInstance(Class.java:442)
 at javax.security.auth.login.Configuration$2.run(Configuration.java:255)
 at javax.security.auth.login.Configuration$2.run(Configuration.java:247)
 at java.security.AccessController.doPrivileged(Native Method)
 at
javax.security.auth.login.Configuration.getConfiguration(Configuration.java:246)
 at
org.apache.kafka.common.security.JaasUtils.isZkSecurityEnabled(JaasUtils.java:151)
 ... 5 more
Caused by: java.io.IOException: Configuration Error:
 Line 9: expected [option key]
...


So please advice me on what I am missing in the Configs to properly start
Zookeeper to move forward. I have put in many days of investigation leading
to pretty much the same result.
I am eagerly hoping the group and its users might have already conquered it
and would help me. Waiting to hear back from you.

Thanks a lot,
Sharat

Reply via email to