Аутентифицировать пользователей приложений с помощью Kerberos и WAS7.

Какое-то время я изо всех сил пытаюсь поставить вещи лицом к лицу и решить эту проблему, но безуспешно. Я пытаюсь аутентифицировать своих пользователей Java-приложений через AD с помощью Kerberos. Я создал KDC, как показано ниже:

[libdefaults]
default_realm = X.LOCAL
default_tkt_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 
default_tgs_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 
permitted_enctypes = des-cbc-md5 des-cbc-crc des3-cbc-sha1 rc4-hmac arcfour-hmac arcfour-hmac-md5 aes128-cts-hmac-sha1-96 

[realms]
X.LOCAL = {
kdc = machine_name.X.LOCAL 
default_domain = X.LOCAL 
}

[domain_realm]
.X.LOCAL = X.LOCAL

Я определил новую область следующим образом: • Глобальная безопасность>JAAS — Входы в приложения • Создал новый вход с именем «клиент» и выделил ресурс com.ibm.ws.security.auth.kerberos.Krb5LoginModuleWrapperClient.

На уровне кода я устанавливаю путь для KDC: System.setProperty(java.security.krb5.conf, “KDC” path);

Пытаюсь войти:

loginContext = new LoginContext(moduleName, getUsernamePasswordHandler(userName, secret));
loginContext.login();

Я получаю:

Ошибка входа: com.ibm.security.krb5.KrbException, код состояния: 14 сообщение: KDC не поддерживает тип шифрования

Вы скажете, что тип шифрования не поддерживается :) Я знаю.

В: 1) Что я пропустил? (застрял здесь более 1 недели) 2) Что я делаю неправильно?

Спасибо за ваше время.


person user1531547    schedule 17.07.2012    source источник


Ответы (1)


Прежде чем я отвечу на ваш вопрос, вы должны очистить свою конфигурацию и повторить попытку:

  1. Опустите *_enctypes и позвольте обоим согласовать лучший enctype.
  2. Не устанавливайте свойство из приложения. Передайте местоположение krb5.conf и свойство env. Это дает вам полную гибкость.
  3. Вам лучше работать с кешем билетов или keytab. Нет смысла снова запрашивать учетные данные у клиента. Это сделало бы Kerberos излишним. Вы входите в ОС только один раз и используете кеш билетов.
  4. Не используйте шифрование DES, оно небезопасно и устарело.
  5. Убедитесь, что ваш TGT имеет шифрование не ниже RC4 (Arcfour).

Ваша проблема, вероятно, заключается в следующем:

AD — это Windows Server 2008 с отключенным DES, но вы разрешаете использовать DES. Это не сработает. DES отключен в 2008 году по уважительной причине ИЛИ ваш клиент отправляет первоначальный запрос с AES в списке enctypes вверху. Windows Server 2003 с этим не справится. Наиболее распространенным знаменателем является RC4-HMAC.

Используйте Wireshark для проверки трафика. Это очень поможет вам понять проблему и Kerberos в целом. Напишите изолированную тестовую программу, которая поможет вам в качестве доказательства концепции.

person Michael-O    schedule 21.07.2012
comment
Я решил проблему некоторое время назад. После того, как я немного успокоился, я сделал почти то, что вы предложили. Я установил kbr5.conf как свойство env и использовал только rc4-hmac, des-cbc-md5 для шифрования. Извините за позднее обновление. - person user1531547; 03.09.2012