При запуске приложения Kafka stream используется следующий файл jaas. Однако билеты не обновляются автоматически потоковым приложением. Это терпит неудачу с исключением ниже после истечения срока действия билета. Что мы должны сделать, чтобы автоматически обновить билет Kerberos?
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
useTicketCache=true
principal="astvy@DEV.ACM.COM"
useKeyTab=true
serviceName="kafka"
keyTab="/home/astvy/astvy.headless.keytab"
renewTGT=true
client=true;
};
Error
Abort sending since an error caught with a previous record (key ED1812 value org.cox.model.HourlyUnit@83e6c99 timestamp 1536165112061) to topic dub_hourlyunit_source1 due to org.apache.kafka.common.errors.SaslAuthenticationException:
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.
После внесения нескольких исправлений, как показано ниже (ключевое изменение - установить значение useTicketCache в false), мы не увидели повторения вышеуказанной проблемы, но поскольку TGT для обновления настроен на 7 дней, мы продолжаем отслеживать, имеет ли проблема были решены. Проверим еще несколько дней и подтвердим это, если следующие изменения навсегда устранят проблему.
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
useTicketCache=false
principal="astvy@DEV.ACM.COM"
useKeyTab=true
serviceName="kafka"
keyTab="/home/astvy/astvy.headless.keytab"
storeKey=true;
};