Чтобы выполнить аутентификацию HTTP SPNEGO на стороне клиента с помощью Java на Windows, вам необходимо установить ключ реестра Windows allowtgtsessionkey. Это хорошо документировано. Я не понимаю, как люди обходят это? Большинство корпоративных сайтов никогда не согласится изменить этот раздел реестра в Windows ради единственного программного обеспечения. Также подумайте о проблемах, если это необходимо изменить на каждой рабочей станции в организации. Но это просто теория, потому что я до сих пор не смог убедить кого-либо из наших клиентов изменить этот раздел реестра.
Я не виню их. Большинство корпоративных администраторов увидели бы это, ослабляя безопасность, и поэтому возражают против этого.
но теперь он довольно старый.
Итак, я действительно не понимаю, как люди могут заставить Windows + Java-клиент + Kerberos работать ни на чем, кроме университетских сред, домашних пользователей и т.п.
Вопрос, который я получаю от корпоративных администраторов, - "зачем нам устанавливать этот раздел реестра, когда такие приложения, как IE и Firefox, не имеют проблем с выполнением SPNEGO без установки этого ключа?". Ну, я знаю, какой ответ. Это связано с тем, что приложения, такие как IE и Firefox, основаны на собственном GSS-интерфейсе Windows (SSPI), в то время как Sun Java использует свою собственную реализацию.
Я предполагаю, что использование чего-то типа WAFFLE разрешит проблему, но я бы предпочел чистым решением Java. Я также предполагаю, что это не поможет использовать решения на базе Java, такие как Spring security или Apache HttpClient, поскольку все они будут страдать от этой проблемы.
Приветствуется любая помощь или указатели.
Update1
Я обнаружил, что для этого в базе данных ошибок Oracle есть RFE. Там также патч, переданный по этому вопросу сотрудником Oracle и обсуждения в списке рассылки JDK об этой функции. Не делает меня намного более мудрой, чем, насколько я понимаю, это не доступно в текущей Java 7, даже не экспериментально. Правильно?
UPDATE2
Вопрос теперь живой снова в списке рассылки OpenJDK Security Dev.