Есть ли способ в Java или утилите командной строки, чтобы получить билет Kerberos для службы, использующей собственный API SSPI?

Я хочу реализовать единый вход в Kerberos в Java, и мне удалось создать билет для Сервиса, используя билет из входа в Windows. К сожалению, я могу создать этот тикет только тогда, когда ключ реестра «allowtgtsessionkey» включен. Я получаю исключение с сообщением «Идентификатор не соответствует ожидаемому значению (906)», как только я его отключаю. Раздел реестра задокументированhttp://java.sun.com/j2se/1.5.0/docs/guide/security/jgss/tutorials/Troubleshooting.html а такжеhttp://support.microsoft.com/kb/308339.

К сожалению, у меня нет доступа к реестру на компьютерах, где будет использоваться мое приложение, поэтому я ищу способ сделать это, не меняя его. Когда я делаю однократную регистрацию через SPNEGO в Internet Explorer или Mozilla Firefox, они создают билет службы в моем кэше билетов, поэтому определенно должен быть способ сделать это без установки ключа реестра. У кого-нибудь есть идеи, как это сделать на Java?

Спасибо за вашу помощь, меммингер

Обновление: я сдаюсь по этому вопросу. Раздел реестра Windows запрещает доступ к Билету (точнее: Предмету) внутри кеша Билета. Java в Windows использует свою собственную реализацию GSSAPI, и я полагаю, что для создания Service Ticket необходим доступ к Ticket. Windows API SSPI, тем не менее, имеет полный доступ к кешу билетов и, таким образом, может создавать билеты службы. Этот API используется веб-браузерами, но не используется Java (в соответствии сhttp://java.sun.com/developer/technicalArticles/J2SE/security/#3). Когда я отключаю SSPI в Firefox после однократного доступа к веб-странице (таким образом, был создан билет службы), я все равно могу получить доступ к странице, поэтому, возможно, будет достаточно утилиты командной строки, которая создает билет службы с помощью API SPPI.

Для нас это означает, что теперь мы можем либо отказаться от единого входа (что для нас неприемлемо), либо выполнить аутентификацию на стороне клиента нашего приложения (поскольку мы можем только считывать имя пользователя, но не проверять билет на сервер), что представляет собой серьезную угрозу безопасности. Другой пример того, как более сильные ограничения безопасности приводят к большим дырам в безопасности, потому что они становятся слишком сложными для использования.

Ответы на вопрос(3)

Ваш ответ на вопрос