Запуск Kinit для входа в систему Keytab из Java - PullRequest
0 голосов
/ 02 октября 2019

У меня есть приведенный ниже фрагмент кода для входа в Kerberos с использованием keytab.

    Configuration conf = HBaseConfiguration.create();

    conf.addResource("hbase-site.xml");

    Connection connection = ConnectionFactory.createConnection(conf); 

    UserGroupInformation.setConfiguration(conf);       

    UserGroupInformation.loginUserFromKeytabAndReturnUGI(user, keytabpath);

У нас также установлен срок обновления 7 дней в нашей среде в соответствии со стандартами безопасности. Следовательно, приведенный выше код работает в течение 7 дней и в последний день, хотя код приложения пытается обновить токен, он не может выполнить ограничения «продлить до». Я должен вручную сделать kinit, чтобы все работало в течение следующих 7 дней.

Есть ли альтернатива для обработки этого на уровне кода приложения? Я изучаю варианты на уровне среды для обработки, но есть ограничения, хотя. Я попробовал рекомендации по этой ссылке, но это не сработало: Стратегия обновления соединения HBase Kerberos

Обновлено с подробностями klist:

[Fri 04/10 05:30 PM] root@lxapp6479:~# klist
 Ticket cache: FILE:/tmp/krb5cc_0
 Default principal: uname@domain

 Valid starting       Expires              Service principal
 10/04/2019 11:10:19  10/05/2019 11:10:19  
  krbtgt/DOMAIN@ABC.COM
    renew until 10/09/2019 12:32:35

Учитывая, что новый билет был продлен @ 10/04, продление до того времени должно было быть перенесено обратно на 10/11, но это не происходит с приведенным ниже вызовом API:

   UserGroupInformation.getLoginUser().checkTGTAndReloginFromKeytab();
...