Проверка подлинности Kerberos не удается из-за support_enctypes? - PullRequest
0 голосов
/ 24 января 2019

У меня проблема с Kerberos (в данном случае я пытаюсь использовать ее с kafka).

Во-первых, мой kdc.conf файл выглядит следующим образом:

[kdcdefaults]
  kdc_ports = 88
  kdc_tcp_ports = 88
  default_realm=KAFKA.SECURE
[realms]
  KAFKA.SECURE = {
    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
    # supported_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5
  }

На основев этой конфигурации я создал пользователя с именем admin и субъект-службы с именем kafka.

kinit -kt admin.user.keytab admin успешно получил билет:

Credentials cache: API:A96189DD-B94C-41F4-BD65-B4C0C1C1F522
        Principal: admin@KAFKA.SECURE

  Issued                Expires               Principal
Jan 24 09:49:06 2019  Jan 25 09:49:06 2019  krbtgt/KAFKA.SECURE@KAFKA.SECURE

Это то, что регистрируетсяна стороне krb5kdc:

Jan 24 07:49:06 ip-aaa.bbb.ccc.ddd.compute.internal krb5kdc[1075](info): AS_REQ (4 etypes {18 17 16 23}) 195.97.116.228: ISSUE: authtime 1548316146, etypes {rep=18 tkt=18 ses=18}, admin@KAFKA.SECURE for krbtgt/KAFKA.SECURE@KAFKA.SECURE
Jan 24 07:49:06 ip-aaa.bbb.ccc.ddd.compute.internal krb5kdc[1075](info): closing down fd 13

Затем я пытаюсь запустить клиент kafka:

kafka/bin/kafka-console-producer.sh --broker-list xxx.xxx.xxx.xxx.amazon.com:9094 --topic kafka-security-topic --producer.config krb5/kafka_client_kerberos.properties
Java config name: null
Native config name: /Library/Preferences/edu.mit.Kerberos
Loaded from native config
>>>KinitOptions cache name is /tmp/krb5cc_501
>> Acquire default native Credentials
Using builtin default etypes for default_tkt_enctypes
default etypes for default_tkt_enctypes: 17 16 23.
>>> Found no TGT's in LSA
org.apache.kafka.common.KafkaException: Failed to construct kafka producer
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:433)
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:291)
    at kafka.producer.NewShinyProducer.<init>(BaseProducer.scala:40)
    at kafka.tools.ConsoleProducer$.main(ConsoleProducer.scala:49)
    at kafka.tools.ConsoleProducer.main(ConsoleProducer.scala)
Caused by: org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException: Could not login: the client is being asked for a password, but the Kafka client code does not currently support obtaining a password from the user. not available to garner  authentication information from the user

и на стороне сервера krb5kdc ничего не регистрируется.

Теперь, если я перейду к файлу kdc.conf, указанному выше, и переключу supported_enctypes на менее безопасные алгоритмы des3-hmac-sha1 des-cbc-crc des-cbc-md5, создайте нового принципала пользователя KDC admin-less и kinit этого пользователя -> kafka-console-producer.shКоманда выполнена успешно!

Я пробовал OSX и CentOS (на стороне клиента).KDC находится на машине CentOS в Amazon.

Есть идеи, что здесь может быть не так?

...