Избегайте истечения срока действия билета Kerberos после HTTP-запроса

Я реализовал решение Java для получения билета Kerberos, я основал свое решение на ответе в этом потоке Как получить билет службы Kerberos через GSS-API?

Мне нужен билет для отправки HTTP-запроса в конечную точку.

Билет извлекается правильно, и я могу выполнить HTTP-запрос. У меня проблема в том, что я могу выполнить только 1 запрос на билет, не имеет значения, изменю ли я время жизни билетов в коде.

Я отправляю билет как часть HTTP-запроса в заголовках как заголовок авторизации.

Есть ли способ, чтобы срок действия билета не истек после одноразового использования? Это нормальное поведение?


person Juan Ga    schedule 06.02.2018    source источник
comment
С чего вы взяли, что срок действия билета истекает? У вас есть доказательства?   -  person Michael-O    schedule 07.02.2018
comment
Если бы у вас был приличный сервер REST, он использовал бы SPNego с Kerberos только один раз, чтобы инициировать сеанс, а затем возвращал бы какой-то токен сеанса (хранящийся в подписанном файле cookie), который будет использоваться вместо этого для остальной части сеанса. Так, например, экосистема Hadoop работает с SPNego.   -  person Samson Scharfrichter    schedule 07.02.2018
comment
@ Michael-O Что заставляет меня думать, что срок действия билета истек, так это то, что после первого использования, если я попытаюсь повторно отправить тот же запрос, я получу ошибку 401. В первый раз, когда я пытаюсь это сделать, я получаю 200, и у меня есть ожидаемый ответ.   -  person Juan Ga    schedule 07.02.2018
comment
@SamsonScharfrichter Я вижу, что cookie возвращается с первым запросом. Я попытался отправить этот файл cookie как часть второго запроса, а также в заголовках как заголовок авторизации, но получил ответ 400 со вторым подходом и 401 с первым.   -  person Juan Ga    schedule 07.02.2018
comment
@JuanGa, тогда запрос - ответ. Java не поддерживает кеширование билетов, как MIT Kerberos, Heimdal или SSPI. Он снова и снова извлекает служебный билет.   -  person Michael-O    schedule 07.02.2018
comment
@SamsonScharfrichter REST должен быть без гражданства. Сессии не без гражданства. Приличный сервер просто привязывает аутентификацию к сеансу TCP с отслеживанием состояния. К сожалению, это невозможно в Tomcat и, вероятно, в других контейнерах.   -  person Michael-O    schedule 07.02.2018
comment
@ michael-o С другой стороны, Kerberos никогда не предполагалось использовать лицами без гражданства ... Так что в какой-то момент вам нужно найти золотую середину.   -  person Samson Scharfrichter    schedule 07.02.2018
comment
@SamsonScharfrichter Согласен, контекст безопасности не имеет состояния.   -  person Michael-O    schedule 09.02.2018