JAVA и GSSAPI: очистка кеша

Я написал простое Java-приложение, которое использует GSSAPI для подключения к Active Directory (Kerberos SSO).

У меня есть 2 сферы и KDC: x и y.

Если я запущу инструмент с realm/KDC x, инструмент будет работать.

Если я запущу инструмент с realm/KDC y, инструмент тоже будет работать.

Если я запущу инструмент для выполнения двух аутентификаций с помощью realm/KDC x (вход, выход из системы, вход в систему, выход из системы) - работает.

Тот же результат для области/KDC y.

Проблема заключается в том, что когда я пытаюсь переключиться между двумя областями/KDC: вход в систему x, выход из системы x, вход в систему y, выход из системы y. При попытке входа во второй возникает исключение:

GSSException: уровень механизма: изменен поток сообщений (41))

Просто поясню: проблема возникает только в том случае, если я использую 2 разных области/KDC (по одному каждый раз, конечно), без перезапуска всего приложения между этими двумя.

Я думаю, что java/gssapi каким-то образом кэширует область или билет krb или что-то еще.

Вопрос в том, как очистить этот кеш (не убивая все приложение), или если такого кеша/статических переменных нет, то как заставить его работать?

Благодарю вас!


person Programatic    schedule 20.04.2013    source источник


Ответы (1)


Вероятно, ваша проблема связана с неисправным файлом krb5.conf. См. здесь: GSSException: изменен поток сообщений (41)

Опубликуйте весь свой krb5.conf штраф и доступ к SPN.

person Michael-O    schedule 07.05.2013