Разрешить делегирование winhttp без доверия Active Directory

Я занимаюсь разработкой приложения с использованием аутентификации Kerberos в сценарии с двумя прыжками: клиент подключается к серверу, который должен использовать учетные данные клиента для подключения к серверу SQL.

Я уже сделал это с помощью GSoap и GSS-API из выпуска Kerberos MIT; но я бы хотел использовать WinHttp обрабатывать аутентификацию.

Тем не менее, когда я пытаюсь использовать winHTTP с GSOAP WINHTTP PLUGIN (gsoapwinhttp на code.google), делегирование заблокировано контроллером домена. Я хочу сохранить эту конфигурацию Active Directory:

Изображение конфигурации Active Directory

Когда я смотрю на билет Kerberos GSS-API, я обнаружил несколько флагов, разрешающих делегирование, таких как fowardable или Deleg_req_flag:

Флаг проволочной акулы

Итак, мой вопрос: Могу ли я изменить флаги winHTTP, чтобы разрешить делегирование без изменения конфигурации контроллера домена?

Редактировать :

Я использую опцию WINHTTP_AUTH_SCHEME_NEGOTIATE в setCredentials и WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW в setOption обязательно использовать Kerberos или NTLM, как указано на веб-сайте Microsoft WinHttpSetCredentials.

Используя Fiddler, я проверил HTTP-соединение, и оно использует Kerberos, но я все еще не могу делегировать свой следующий сервер.

Я пытался использовать почти все возможные варианты setOption, такие как WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION или все, что может выглядеть как делегирование, но у меня странная ошибка при использовании этой опции:

Конец файла или нет ввода: передача сообщения прервана или истекла задержка (629s recv send delay)

Я попытался установить другое recv_timeout, но все еще та же ошибка.

.

2

Решение

Я изучал этот тип проблема много Вы испытываете проблему двойного прыжка Kerberos. В этом Скриншот конфигурации, который вы предоставили, вы должен настроить делегирование; сейчас делегирование не установлено. Сначала попробуйте открыть делегирование, для этого выберите переключатель: Доверяйте этот компьютер для делегирования любому сервису (только Kerberos). Вы устанавливаете это для учетной записи компьютера в AD, которая должна использовать учетные данные клиента для подключения к серверу SQL, а не для учетной записи контроллера домена. Если ваше приложение на самом деле работает на контроллере домена, то это известная проблема и неподдерживаемая конфигурация, которая не будет работать — переместите приложение на рядовой сервер домена.

Что касается флагов, разрешающих делегирование, таких как fowardable или Deleg_req_flag, показанных как установленные в трассировке Fiddler, я не уверен, почему они отображаются как установленные, но они могли быть установлены с неправильной учетной записи. На основании размещенного вами снимка экрана делегирование Kerberos вообще не настроено.

В вашем сценарии вы должны установить делегирование Kerberos для учетной записи компьютера, на котором выполняется процесс WinHTTP, в приведенном ниже примере это будет «Server1».

Сценарий простого делегирования Kerberos

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector