Java и Kerberos - PullRequest
       8

Java и Kerberos

0 голосов
/ 28 сентября 2010

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

Спасибо

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Невозможно получить пароль из информации, доступной на клиенте или в любом месте системы Kerberos.Согласно статье kerberos в википедии (которая содержит информацию, аналогичную той, что я читал в других источниках), введенный пользователем пароль хэшируется с помощью односторонней функции в то, что с этого момента служит секретом.Секрет доступен в центре распространения ключей (KDC), и билет для выдачи билетов (TGT) симметрично шифруется этим секретом.Чтобы получить и использовать TGT, клиент должен предоставить секрет для расшифровки пакета, что делается путем запроса пароля у пользователя.После этого TGT расшифровывается и сохраняется в кеше билетов.

Сам TGT имеет части, зашифрованные секретом, который знает только KDC, он не содержит пароль пользователя.Как, например, эта статья от 2000 объясняет, пароль также не сохраняется в кеше билетов - только части из TGT.Насколько я понимаю, невозможно проверить пароль пользователя с помощью кэша билетов.

Возможно, вы захотите написать свой собственный CallbackHandler, чтобы каким-то образом повторно использовать или предоставить учетные данные программно, но из моего понимания это может привести кк проблемам безопасности.

Возможно, вы захотите подумать о решении своей проблемы с использованием совершенно другого подхода, но мало информации, чтобы предложить какое-либо другое решение.

0 голосов
/ 28 сентября 2010

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

...