Jaas - Запрос возобновляемых билетов Kerberos

У меня есть Java API, который общается с сервером Kerberos и выполняет различные операции. На данный момент мой API запрашивает невозобновляемые билеты на сервер Kerberos. Насколько я понимаю, в конфигурационном файле jaas есть возможность установить для параметра RenewTGT значение true, чтобы можно было выпустить возобновляемый билет. Однако, похоже, что у Jaas есть много ограничений на установку времени «RenewUntil». Кто-нибудь, пожалуйста, скажите мне, как мы можем запросить новый билет, а также контролировать его продление? В принципе, есть ли способ выполнить Java-эквивалент операции: kinit -R? Заранее спасибо.


person user2690793    schedule 16.08.2013    source источник
comment
Собственно, renewTGT и должно сойтись. Почему бы вам не включить ведение журнала и не использовать Wirshark, чтобы увидеть, что на самом деле делает Java?   -  person Michael-O    schedule 18.08.2013
comment
Спасибо, Майкл. Я включил ведение журнала и попытался записать запрос / ответ с помощью wirehark. Запрошенный билет не подлежит продлению даже после установки параметра RenewTGT в значение true. Есть ли какие-либо другие настройки, которые необходимо выполнить?   -  person user2690793    schedule 20.08.2013
comment
Это может быть настройка вашего KDC. Спросите об этом у администратора.   -  person Michael-O    schedule 20.08.2013
comment
Начиная с JDK7 (1.7.0_55) renewTGT доступен только при useTicketCache=true, а затем применяется только к билетам, извлеченным из (собственного) кеша билетов. Это означает, что вы использовали что-то вроде kinit или логин Windows для получения билета, что эквивалентно kinit -R. Согласно моему ответу ниже, в настоящее время нет возможности получить возобновляемые билеты и продлить их с помощью билетов, полученных JAAS.   -  person javabrett    schedule 08.09.2014


Ответы (1)


Начиная с JDK7 (1.7.0_55), JAAS Krb5LoginModule не предоставляет никаких опций для запроса возобновляемого TGT при аутентификации, поэтому в настоящее время это невозможно с использованием JAAS. Возможно, вам удастся этого добиться, но вам нужно будет напрямую использовать внутренние классы Kerberos, минуя JAAS.

Внутренне Krb5LoginModule создает экземпляр sun.security.krb5.KrbAsReqBuilder для получения учетных данных с использованием либо предоставленного пароля, либо keyTab. KrbAsReqBuilder имеет метод setOptions(KDCOptions options), но он не вызывается в модуле входа в систему. Если бы к нему можно было получить доступ, вы могли бы вызвать KDCOptions#set(KDCOptions.RENEWABLE, true), и тогда я бы ожидал, что возвращенный билет будет возобновляемым, если KDC настроен на разрешение возобновляемых билетов.

person javabrett    schedule 03.09.2014