2016-03-21 11 views
1

У меня есть следующий сценарий: У меня есть сервер, который работает внутри базы данных Oracle (с Java SE 6), которая подключается к веб-службе, используя HTTP-клиент Apache (на Java). Веб-сервис необходимо защищать с помощью Kerberos, то есть с помощью проверки подлинности SPNEGO.Как GSSManager.createCredential получает ключ Kerberos и TGT?

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

Я ожидаю, что следующий шаг - связаться с KDC, чтобы получить TGT и сохранить его в теме. Как мне это сделать? Вся документация, которую я нашел на этом, предполагает, что это происходит в модуле входа, но в моем сценарии нет входа. Или один из нижеперечисленных звонит KDC для меня?

Теперь мне нужно вызвать GSSManager.createCredential для создания GSSCredential, который я могу обернуть в KerberosCredentials и BasicCredentialsProvider, которые я могу добавить в HttpClientContext, поэтому HttpClient может выполнять аутентификацию SPNEGO.

Но как мне получить информацию в моем предмете в GSSCredential?

ответ

1

После копания в Интернете в течение недели я наконец нашел ответ here. Отрывок из этого документ:

  1. Приложение вызывает вход JAAS, который, в свою очередь, вызывающую сконфигурированный Krb5LoginModule
  2. Krb5LoginModule получает TGT (KerberosTicket) для пользователя или от KDC или от существующего кэша билета, и сохраняет этот TGT в частном учетном наборе субъекта
  3. Приложение получает заполненный Предмет, затем вызывает Subject.doAs/doAsPrivileged который ставит этот вопрос в контексте управления доступом резьбы исполняющего ClientAction
  4. ClientAction называет GSSManager .createCredential метод, передавая ему идентификатор Kerberos V5 OID в wishMechs.
  5. GSSManager.createCredential вызывает поставщика услуг GSS-API Kerberos V5 с запросом учетных данных Kerberos для инициирования контекстов безопасности.
  6. Поставщик Kerberos получает предмет из текущего контекста управления доступом и выполняет поиск по его личным учетным данным, установленным для действительного KerberosTicket, который представляет TGT для пользователя.
  7. KerberosTicket возвращается в GSSManager, который хранит его в экземпляре контейнера GSSCredential, который должен быть возвращен вызывающему.

 Смежные вопросы

  • Нет связанных вопросов^_^