Я написал простое 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 или что-то еще.
Вопрос в том, как очистить этот кеш (не убивая все приложение), или если такого кеша/статических переменных нет, то как заставить его работать?
Благодарю вас!