Kafka SASL zookeeper authentication

后端 未结 2 1756
情深已故
情深已故 2020-12-07 23:34

I am facing the following error while enabling SASL on Zookeeper and broker authentication.

[2017-04-18 15:54:10,476] DEBUG Size of client SASL token: 0 
(or         


        
2条回答
  •  攒了一身酷
    2020-12-08 00:06

    I found the issue by increasing the log level to DEBUG. Basically follow the steps below. I don't use SSL but you will integrate it without any issue.

    Following are my configuration files:

    server.properties

    security.inter.broker.protocol=SASL_PLAINTEXT
    sasl.mechanism.inter.broker.protocol=PLAIN
    sasl.enabled.mechanisms=PLAIN
    
    authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
    allow.everyone.if.no.acl.found=true
    auto.create.topics.enable=false
    broker.id=0
    listeners=SASL_PLAINTEXT://localhost:9092
    advertised.listeners=SASL_PLAINTEXT://localhost:9092
    num.network.threads=3
    num.io.threads=8
    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    socket.request.max.bytes=104857600
    
    advertised.host.name=localhost
    num.partitions=1
    num.recovery.threads.per.data.dir=1
    log.flush.interval.messages=30000000
    log.flush.interval.ms=1800000
    log.retention.minutes=30
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    delete.topic.enable=true
    zookeeper.connect=localhost:2181
    zookeeper.connection.timeout.ms=6000
    super.users=User:admin
    

    zookeeper.properties

    dataDir=/tmp/zookeeper
    clientPort=2181
    maxClientCnxns=0
    authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
    requireClientAuthScheme=sasl
    jaasLoginRenew=3600000
    

    producer.properties

    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN
    bootstrap.servers=localhost:9092
    compression.type=none
    

    consumer.properties

    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN
    zookeeper.connect=localhost:2181
    zookeeper.connection.timeout.ms=6000
    group.id=test-consumer-group
    

    Now are the most important files for making your server starting without any issue:

    zookeeper_jaas.conf

    Server {
       org.apache.kafka.common.security.plain.PlainLoginModule required
       username="admin"
       password="admin-secret"
       user_admin="admin-secret";
    };
    

    kafka_server_jaas.conf

    KafkaServer {
       org.apache.kafka.common.security.plain.PlainLoginModule required
       username="admin"
       password="admin-secret"
       user_admin="admin-secret";
    };
    
    Client {
       org.apache.kafka.common.security.plain.PlainLoginModule required
       username="admin"
       password="admin-secret";
    };
    

    After doing all these configuration, on a first terminal window:

    Terminal 1 (start Zookeeper server)

    From kafka root directory

    $ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/usename/Documents/kafka_2.11-0.10.1.0/config/zookeeper_jaas.conf"
    $ bin/zookeeper-server-start.sh config/zookeeper.properties
    

    Terminal 2 (start Kafka server)

    From kafka root directory

    $ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/usename/Documents/kafka_2.11-0.10.1.0/config/kafka_server_jaas.conf"
    $ bin/kafka-server-start.sh config/server.properties
    

    [BEGIN UPDATE]

    kafka_client_jaas.conf

    KafkaClient {
      org.apache.kafka.common.security.plain.PlainLoginModule required
      username="admin"
      password="admin-secret";
    };
    

    Terminal 3 (start Kafka consumer)

    On a client terminal, export client jaas conf file and start consumer:

    $ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/username/Documents/kafka_2.11-0.10.1.0/kafka_client_jaas.conf"
    $ ./bin/kafka-console-consumer.sh --new-consumer --zookeeper localhost:2181 --topic test-topic --from-beginning --consumer.config=config/consumer.properties  --bootstrap-server=localhost:9092
    

    Terminal 4 (start Kafka producer)

    If you also want to produce, do this on another terminal window:

    $ export KAFKA_OPTS="-Djava.security.auth.login.config=/home/username/Documents/kafka_2.11-0.10.1.0/kafka_client_jaas.conf"
    $ ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic --producer.config=config/producer.properties
    

    [END UPDATE]

提交回复
热议问题