[ 
https://issues.apache.org/jira/browse/KAFKA-3668?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex closed KAFKA-3668.
-----------------------

> Unable to authenticate Kafka broker to secured Zookeeper
> --------------------------------------------------------
>
>                 Key: KAFKA-3668
>                 URL: https://issues.apache.org/jira/browse/KAFKA-3668
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 0.9.0.0, 0.9.0.1
>         Environment: Red Hat Enterprise Linux Server release 7.0 (Maipo)
> Java 1.8.0_66-b17
> Kafka 0.9.0.0 and 0.9.0.1
>            Reporter: Alex
>             Fix For: 0.9.0.0, 0.9.0.1
>
>
> Hello,
> we are running into trouble when trying to connect Kafka broker to secured 
> Zookeeper, Kerberos protected. 
> Configuration is as simple as possible: 1 Zookeeper, 1 Kafka broker and 
> Kerberos. All running on local machine.
> Zookeeper successfully starts and receives TGT from Kerberos AS_REQ. Then 
> Kafka broker obtains TGT from AS_REQ, but it is unable to get TGS from 
> TGS_REQ because <unknown server> as krb5kdc.log shows:
> krb5kdc.log
>       ...
>       May 06 17:41:42 SBT-IPO-204.ca.sbrf.ru krb5kdc[1580](info): AS_REQ (4 
> etypes {18 17 16 23}) 10.116.93.88: ISSUE: authtime 1462545702, etypes 
> {rep=18 tkt=18 ses=18}, zookeeper/sbt-ipo-204.ca.sbrf...@ca.sbrf.ru for 
> krbtgt/ca.sbrf...@ca.sbrf.ru
>       May 06 17:44:24 SBT-IPO-204.ca.sbrf.ru krb5kdc[1580](info): AS_REQ (4 
> etypes {18 17 16 23}) 10.116.93.88: ISSUE: authtime 1462545864, etypes 
> {rep=18 tkt=18 ses=18}, kafka/sbt-ipo-204.ca.sbrf...@ca.sbrf.ru for 
> krbtgt/ca.sbrf...@ca.sbrf.ru
>       May 06 17:44:24 SBT-IPO-204.ca.sbrf.ru krb5kdc[1580](info): TGS_REQ (4 
> etypes {18 17 16 23}) 10.116.93.88: LOOKING_UP_SERVER: authtime 0,  
> kafka/sbt-ipo-204.ca.sbrf...@ca.sbrf.ru for <unknown server>, Server not 
> found in Kerberos database
> What is the possible reason of this problem? 
> KAFKA CONFIG:
>       
>       zookeeper.properties
>               dataDir=/tmp/zookeeper
>               clientPort=2181
>               
> authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
>               jaasLoginRenew=3600000
>               
>       server.properties
>               broker.id=0
>               log.dirs=/tmp/kafka-logs
>               listeners=SASL_PLAINTEXT://10.116.93.88:9092
>               security.inter.broker.protocol=SASL_PLAINTEXT
>               zookeeper.connect=10.116.93.88:2181
>               sasl.kerberos.service.name=kafka
>               authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
>               zookeeper.set.acl=true
>               #allow.everyone.if.no.acl.found=true
>               #sasl.enabled.mechanisms=GSSAPI
>               #sasl.mechanism.inter.broker.protocol=GSSAPI
>       JVM params:
>               Kafka:
>                       -Djava.security.krb5.conf=/etc/krb5.conf 
>                       
> -Djava.security.auth.login.config=config/kafka-broker-jaas.conf
>               Zookeeper:
>                       -Djava.security.krb5.conf=/etc/krb5.conf 
>                       -Djava.security.auth.login.config=config/zookeeper.conf
>                       
>       JAAS files:
>               kafka-broker-jaas.conf:
>                       KafkaServer {
>                               com.sun.security.auth.module.Krb5LoginModule 
> required
>                               useKeyTab=true
>                               storeKey=true
>                               keyTab="/etc/security/keytabs/kafka.keytab"
>                               debug=true
>                               useTicketCache=false
>                               
> principal="kafka/sbt-ipo-204.ca.sbrf...@ca.sbrf.ru";
>                       };
>                       Client {
>                               com.sun.security.auth.module.Krb5LoginModule 
> required
>                               useKeyTab=true
>                               storeKey=true
>                               keyTab="/etc/security/keytabs/kafka.keytab"
>                               debug=true
>                               useTicketCache=false
>                               
> principal="kafka/sbt-ipo-204.ca.sbrf...@ca.sbrf.ru";
>                       };
>               zookeeper-jaas.conf
>                       Server {
>                               com.sun.security.auth.module.Krb5LoginModule 
> required
>                               useKeyTab=true
>                               keyTab="/etc/security/keytabs/zookeeper.keytab"
>                               storeKey=true
>                               useTicketCache=false
>                               debug=true
>                               
> principal="zookeeper/sbt-ipo-204.ca.sbrf...@ca.sbrf.ru";
>                       };
> KERBEROS 5 CONFIG:
>       krb5.conf
>               [logging]
>                default = FILE:/var/log/krb5libs.log
>                kdc = FILE:/var/log/krb5kdc.log
>                admin_server = FILE:/var/log/kadmind.log
>               [libdefaults]
>                dns_lookup_realm = false
>                ticket_lifetime = 24h
>                renew_lifetime = 7d
>                forwardable = true
>                rdns = false
>                default_realm = CA.SBRF.RU
>                default_ccache_name = KEYRING:persistent:%{uid}
>               [realms]
>               CA.SBRF.RU = {
>                 kdc = SBT-IPO-204.ca.sbrf.ru
>                 admin_server = SBT-IPO-204.ca.sbrf.ru
>                }
>               [domain_realm]
>                .ca.sbrf.ru = CA.SBRF.RU
>                ca.sbrf.ru = CA.SBRF.RU
>       kdc.conf
>               [kdcdefaults]
>                 kdc_ports = 88
>                 kdc_tcp_ports = 88
>               [realms]
>                 CA.SBRF.RU = {
>                 #master_key_type = aes256-cts
>                 acl_file = /var/kerberos/krb5kdc/kadm5.acl
>                 dict_file = /usr/share/dict/words
>                 admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
>                 supported_enctypes = aes256-cts:normal aes128-cts:normal 
> des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal 
> camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal 
> des-cbc-crc:normal
>                }              
>       kadm.conf
>               */ad...@ca.sbrf.ru      *
> LOGS:
>       Zookeeper: bin/zookeeper-server-start.sh -daemon 
> config/zookeeper.properties
>               ...
>               [2016-05-06 17:41:42,750] INFO minSessionTimeout set to -1 
> (org.apache.zookeeper.server.ZooKeeperServer)
>               [2016-05-06 17:41:42,750] INFO maxSessionTimeout set to -1 
> (org.apache.zookeeper.server.ZooKeeperServer)
>               Debug is  true storeKey true useTicketCache false useKeyTab 
> true doNotPrompt false ticketCache is null isInitiator true KeyTab is 
> /etc/security/keytabs/zookeeper.keytab refreshKrb5Config is false principal 
> is zookeeper/sbt-ipo-204.ca.sbrf...@ca.sbrf.ru tryFirstPass is false 
> useFirstPass is false storePass is false clearPass is false
>               principal is zookeeper/sbt-ipo-204.ca.sbrf...@ca.sbrf.ru
>               Will use keytab
>               Commit Succeeded 
>               [2016-05-06 17:41:43,137] INFO successfully logged in. 
> (org.apache.zookeeper.Login)
>               [2016-05-06 17:41:43,143] INFO TGT refresh thread started. 
> (org.apache.zookeeper.Login)
>               [2016-05-06 17:41:43,150] INFO binding to port 
> 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory)
>               [2016-05-06 17:41:43,169] INFO TGT valid starting at:        
> Fri May 06 17:41:42 MSK 2016 (org.apache.zookeeper.Login)
>               [2016-05-06 17:41:43,170] INFO TGT expires:                  
> Sat May 07 17:41:42 MSK 2016 (org.apache.zookeeper.Login)
>               [2016-05-06 17:41:43,170] INFO TGT refresh sleeping until: Sat 
> May 07 14:04:31 MSK 2016 (org.apache.zookeeper.Login)
>               
>               ...Here Kafka starts...
>               [2016-05-06 17:44:24,933] INFO Accepted socket connection from 
> /10.116.93.88:58825 (org.apache.zookeeper.server.NIOServerCnxnFactory)
>               [2016-05-06 17:44:24,952] ERROR Zookeeper Server failed to 
> create a SaslServer to interact with a client during session initiation: 
> javax.security.sasl.SaslException: Failure to initialize security context 
> [Caused by GSSException: No valid credentials provided (Mechanism level: 
> Failed to find any Kerberos credentails)] 
> (org.apache.zookeeper.server.ZooKeeperSaslServer)
>               javax.security.sasl.SaslException: Failure to initialize 
> security context [Caused by GSSException: No valid credentials provided 
> (Mechanism level: Failed to find any Kerberos credentails)]
>                       at 
> com.sun.security.sasl.gsskerb.GssKrb5Server.<init>(Unknown Source)
>                       at 
> com.sun.security.sasl.gsskerb.FactoryImpl.createSaslServer(Unknown Source)
>                       at javax.security.sasl.Sasl.createSaslServer(Unknown 
> Source)
>                       at 
> org.apache.zookeeper.server.ZooKeeperSaslServer$1.run(ZooKeeperSaslServer.java:118)
>                       at 
> org.apache.zookeeper.server.ZooKeeperSaslServer$1.run(ZooKeeperSaslServer.java:114)
>                       at java.security.AccessController.doPrivileged(Native 
> Method)
>                       at javax.security.auth.Subject.doAs(Unknown Source)
>                       at 
> org.apache.zookeeper.server.ZooKeeperSaslServer.createSaslServer(ZooKeeperSaslServer.java:114)
>                       at 
> org.apache.zookeeper.server.ZooKeeperSaslServer.<init>(ZooKeeperSaslServer.java:48)
>                       at 
> org.apache.zookeeper.server.NIOServerCnxn.<init>(NIOServerCnxn.java:100)
>                       at 
> org.apache.zookeeper.server.NIOServerCnxnFactory.createConnection(NIOServerCnxnFactory.java:161)
>                       at 
> org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:202)
>                       at java.lang.Thread.run(Unknown Source)
>               Caused by: GSSException: No valid credentials provided 
> (Mechanism level: Failed to find any Kerberos credentails)
>                       at 
> sun.security.jgss.krb5.Krb5AcceptCredential.getInstance(Unknown Source)
>                       at 
> sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Unknown Source)
>                       at 
> sun.security.jgss.GSSManagerImpl.getCredentialElement(Unknown Source)
>                       at sun.security.jgss.GSSCredentialImpl.add(Unknown 
> Source)
>                       at sun.security.jgss.GSSCredentialImpl.<init>(Unknown 
> Source)
>                       at 
> sun.security.jgss.GSSManagerImpl.createCredential(Unknown Source)
>                       ... 13 more
>               [2016-05-06 17:44:24,961] INFO Client attempting to establish 
> new session at /10.116.93.88:58825 
> (org.apache.zookeeper.server.ZooKeeperServer)
>               [2016-05-06 17:44:24,963] INFO Creating new log file: log.53 
> (org.apache.zookeeper.server.persistence.FileTxnLog)
>               [2016-05-06 17:44:24,972] INFO Established session 
> 0x154868461350000 with negotiated timeout 6000 for client /10.116.93.88:58825 
> (org.apache.zookeeper.server.ZooKeeperServer)
>               [2016-05-06 17:44:28,997] WARN caught end of stream exception 
> (org.apache.zookeeper.server.NIOServerCnxn)
>               EndOfStreamException: Unable to read additional data from 
> client sessionid 0x154868461350000, likely client has closed socket
>                       at 
> org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:228)
>                       at 
> org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
>                       at java.lang.Thread.run(Unknown Source)
>               [2016-05-06 17:44:29,001] INFO Closed socket connection for 
> client /10.116.93.88:58825 which had sessionid 0x154868461350000 
> (org.apache.zookeeper.server.NIOServerCnxn)
>               [2016-05-06 17:44:33,001] INFO Expiring session 
> 0x154868461350000, timeout of 6000ms exceeded 
> (org.apache.zookeeper.server.ZooKeeperServer)
>               [2016-05-06 17:44:33,002] INFO Processed session termination 
> for sessionid: 0x154868461350000 
> (org.apache.zookeeper.server.PrepRequestProcessor)
>       Kafka: bin/kafka-server-start.sh -daemon config/server.properties
>               ...
>               [2016-05-06 17:44:24,353] INFO starting 
> (kafka.server.KafkaServer)
>               [2016-05-06 17:44:24,360] INFO Connecting to zookeeper on 
> 10.116.93.88:2181 (kafka.server.KafkaServer)
>               [2016-05-06 17:44:30,428] FATAL Fatal error during KafkaServer 
> startup. Prepare to shutdown (kafka.server.KafkaServer)
>               org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to 
> connect to zookeeper server within timeout: 6000
>                       at 
> org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:1223)
>                       at 
> org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:155)
>                       at 
> org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:129)
>                       at 
> kafka.utils.ZkUtils$.createZkClientAndConnection(ZkUtils.scala:89)
>                       at kafka.utils.ZkUtils$.apply(ZkUtils.scala:71)
>                       at 
> kafka.server.KafkaServer.initZk(KafkaServer.scala:278)
>                       at 
> kafka.server.KafkaServer.startup(KafkaServer.scala:168)
>                       at 
> kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:37)
>                       at kafka.Kafka$.main(Kafka.scala:67)
>                       at kafka.Kafka.main(Kafka.scala)
>               [2016-05-06 17:44:30,431] INFO shutting down 
> (kafka.server.KafkaServer)
>               [2016-05-06 17:44:30,438] INFO shut down completed 
> (kafka.server.KafkaServer)
>               [2016-05-06 17:44:30,439] FATAL Fatal error during 
> KafkaServerStartable startup. Prepare to shutdown 
> (kafka.server.KafkaServerStartable)
>               org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to 
> connect to zookeeper server within timeout: 6000
>                       at 
> org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:1223)
>                       at 
> org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:155)
>                       at 
> org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:129)
>                       at 
> kafka.utils.ZkUtils$.createZkClientAndConnection(ZkUtils.scala:89)
>                       at kafka.utils.ZkUtils$.apply(ZkUtils.scala:71)
>                       at 
> kafka.server.KafkaServer.initZk(KafkaServer.scala:278)
>                       at 
> kafka.server.KafkaServer.startup(KafkaServer.scala:168)
>                       at 
> kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:37)
>                       at kafka.Kafka$.main(Kafka.scala:67)
>                       at kafka.Kafka.main(Kafka.scala)
>               [2016-05-06 17:44:30,442] INFO shutting down 
> (kafka.server.KafkaServer)
>               
>               
> UPDATE:
> This is not actually a Kafka issue. 
> The problem was at specifying the wrong FQDN (Fully Qualified Domain Name) at 
> DNS. 
> Kafka box has two DNS records: 
> - with uppercase
> - with lowercase
> Kafka requests user with lowercase FQDN.
> Example:
> SBT-IPO-204.ca.sbrf.ru 
> should be 
> sbt-ipo-204.ca.sbrf.ru in JAAS file. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to