Я нашел несколько похожих вопросов, но они не совсем такие же, как эта.
У меня есть приложение Kafka Streams, которое аутентифицируется с брокерами, используя данные билета Kerberos, найденные в Кэше учетных данных.
Приложение прекрасно работает, пока не истечет срок действия оригинального билета, затем я получаю следующую ошибку.
04:21:45.630 [kafka-producer-network-thread | sample-app-StreamThread-1-producer] ERROR org.apache.kafka.clients.NetworkClient - [Producer clientId=sample-app-StreamThread-1-producer] Connection to node 2 (<Hostname>/<ipAddress>:<Port>) failed authentication due to: An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]) occurred when evaluating SASL token received from the Kafka Broker. Kafka Client will go to AUTHENTICATION_FAILED state.
Теперь, все это может показаться ожидаемым, но мой билет обновляется каждые 2 часа другая система, и все же, приложение Kafka Streams не обнаруживает, что билет был продлен. Запрос тикета с помощью «klist» говорит мне, что в момент возникновения ошибки есть действительный тикет.
Ticket cache: FILE:/var/ABC/SYSTEM_ACCOUNT/cc/krb5cc_12345
Default principal: 12345@EXCHAD.ABC123.com
Valid starting Expires Service principal
04/02/20 02:28:02 04/02/20 12:28:02 krbtgt/EXCHAD.ABC123.com@EXCHAD.ABC123.com
renew until 04/08/20 08:28:04
Как ни странно, я могу снова отослать свое приложение, и оно будет работать, но только до тех пор, пока истечение срока действия нового текущего билета наступает примерно через 10 часов.
Почему Kafka Streams не ищет последний билет? Это потенциальная ошибка в самом Kafka Streams? Я не могу найти никаких других настроек, связанных с этим, кроме начальной конфигурации JAAS.
com.sun.security.auth.module.Krb5LoginModule required
refreshKrb5Config=true
useKeyTab=false
useTicketCache=true
renewTGT=true
doNotPrompt=true
ticketCache="/var/ABC/SYSTEM_ACCOUNT/cc/krb5cc_12345"
principal="12345@EXCHAD.ABC123.com"
Я использую Java 8 и Kafka Streams 2.4.0
Как всегда, любая помощь или руководство будет с благодарностью.
Спасибо!