2016-09-15 199 views
3

我試圖複製在所描述的SASL_PLAIN或SASL_SSL認證:http://docs.confluent.io/3.0.0/kafka/sasl.html#sasl-configuration-for-kafka-brokers卡夫卡認證生產者無法連接生產者

在配置/ server.properties,添加以下4行:

listeners=SASL_SSL://localhost:9092 
security.inter.broker.protocol=SASL_SSL 
sasl.mechanism.inter.broker.protocol=PLAIN 
sasl.enabled.mechanisms=PLAIN 

在配置/ producer.properties,添加以下兩行:

security.protocol=SASL_SSL 
sasl.mechanism=PLAIN 

然後我設置服務器終端以下環境變量:

KAFKA_OPTS=/home/kafka/kafka_server_jaas.conf 

這個文件有以下內容:

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

而在生產者端I定義下面的環境變量:

KAFKA_OPTS=/home/kafka/kafka_client_jaas.conf 

而這個文件有以下內容:

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

I用下面的命令啓動服務器:

./bin/kafka-server-start.sh config/server.properties 

並與下面的命令生產商:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 

開始都沒有問題。但是,只要我的製片人控制檯上輸入的時候,我得到了以下信息,不斷滾動:

WARN Bootstrap broker localhost:9092 disconnected (org.apache.kafka.clients.NetworkClient) 
Bootstrap broker localhost:9092 disconnected (org.apache.kafka.clients.NetworkClient) 
WARN Bootstrap broker localhost:9092 disconnected (org.apache.kafka.clients.NetworkClient) 
WARN Bootstrap broker localhost:9092 disconnected (org.apache.kafka.clients.NetworkClient) 
WARN Bootstrap broker localhost:9092 disconnected (org.apache.kafka.clients.NetworkClient) 
WARN Bootstrap broker localhost:9092 disconnected (org.apache.kafka.clients.NetworkClient) 
WARN Bootstrap broker localhost:9092 disconnected (org.apache.kafka.clients.NetworkClient) 
WARN Bootstrap broker localhost:9092 disconnected (org.apache.kafka.clients.NetworkClient) 

如果我從服務器和生產配置中刪除安全配置,按預期工作的一切。我正在使用Kafka 0.10.0.1。

更新: 我做了一些更多的調查,把日誌級別調試運行在服務器揭示了一些奇怪的。只要我在server.properties中指定偵聽器字段,服務器就會處於奇怪的狀態。它建立了它自己無法驗證的連接。這種情況下的協議是SASL_PLAINTEXT。

日誌如下:

2016-09-15 21:43:02 DEBUG SaslClientAuthenticator:204 - Set SASL client state to RECEIVE_HANDSHAKE_RESPONSE 
2016-09-15 21:43:02 DEBUG NetworkClient:476 - Completed connection to node 0 
2016-09-15 21:43:02 DEBUG Acceptor:52 - Accepted connection from /127.0.0.1 on /127.0.0.1:9092. sendBufferSize [actual|requested]: [102400|102400] recvBufferSize [actual|requested]: [102400|102400] 
2016-09-15 21:43:02 DEBUG Processor:52 - Processor 2 listening to new connection from /127.0.0.1:42815 
2016-09-15 21:43:02 DEBUG SaslServerAuthenticator:269 - Set SASL server state to HANDSHAKE_REQUEST 
2016-09-15 21:43:02 DEBUG SaslServerAuthenticator:310 - Handle Kafka request SASL_HANDSHAKE 
2016-09-15 21:43:02 DEBUG SaslServerAuthenticator:354 - Using SASL mechanism 'PLAIN' provided by client 
2016-09-15 21:43:02 DEBUG SaslServerAuthenticator:269 - Set SASL server state to AUTHENTICATE 
2016-09-15 21:43:02 DEBUG SaslClientAuthenticator:204 - Set SASL client state to INITIAL 
2016-09-15 21:43:02 DEBUG SaslClientAuthenticator:204 - Set SASL client state to INTERMEDIATE 
2016-09-15 21:43:02 DEBUG SaslServerAuthenticator:269 - Set SASL server state to FAILED 
2016-09-15 21:43:02 DEBUG Selector:345 - Connection with /127.0.0.1 disconnected 
java.io.IOException: javax.security.sasl.SaslException: Authentication failed: Invalid JAAS configuration [Caused by  javax.security.sasl.SaslException: Authentication failed: Invalid username or password] 
at org.apache.kafka.common.security.authenticator.SaslServerAuthenticator.authenticate(SaslServerAuthenticator.java:243) 
at org.apache.kafka.common.network.KafkaChannel.prepare(KafkaChannel.java:64) 
at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:318) 
at org.apache.kafka.common.network.Selector.poll(Selector.java:283) 
at kafka.network.Processor.poll(SocketServer.scala:472) 

是絕對沒有其他客戶端或服務器上運行。這是一個服務器自言自語。

有什麼想法?

回答

2

幫助來自卡夫卡論壇。請參閱http://mail-archives.apache.org/mod_mbox/kafka-users/201609.mbox/%3CCAHX2Snk11vg7DXNVUr9oE97ikFSQUoT3kBLAxYymEDj7E14XrQ%40mail.gmail.com%3E

我有錯誤的憑據。他們是:

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

相反的:

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

此外,在控制檯消費者需要在一定的調用。首先應該提供國旗 - 新消費者。其次,應該指定引導服務器。導致:

bin/kafka-console-consumer.sh --new-consumer --zookeeper localhost:2181 --topic test --from-beginning --consumer.config=config/consumer.properties --bootstrap-server=localhost:9092 
相關問題