Проблема аутентификации соединения WinHttp с удаленным сервером после олицетворения - PullRequest
0 голосов
/ 17 мая 2019

У меня проблема с безопасностью.Я не знаю, является ли это WinHttp или Kerberos или Windows Security.

У нас есть настольная версия нашего приложения и веб-версия, которая работает как служба.Они разделяют много, много DLL, где лежит большая часть функциональности.Обе версии этих приложений должны иногда подключаться к третьему серверу (Hadoop), который настроен на использование kerberos для аутентификации с использованием сервера Windows в качестве контроллера домена - с использованием Active Directory.

Мы используем WinHttp для подключения ксервер Hadoop как в настольной версии, так и в веб-версии.В настольной версии мы используем WinHttpSetOption с параметром WINHTTP_AUTO_LOGON, установленным в WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW.

В настольной версии все работает нормально.Однако для веб-версии это не работает.Для веб-версии после входа в систему у нас есть токен для входа.Прежде чем мы используем WInHttp для связи с сервером Hadoop, мы вызываем SetThreadToken () с токеном входа, чтобы выдать себя за пользователя входа в систему.Вызов функций, которые получают то, о чем система думает, что пользователь возвращает логина пользователя, а не пользователя сервиса.Когда мы используем WinHttp для выполнения запроса, он завершается с ошибкой 403 с возвращаемым текстом:

org.apache.hadoop.security.authentication.client.AuthenticationException: GSSException: обнаружен дефектный токен (Уровень механизма: GSSHeaderне нашел правильный тег)

Так что, мне не нравится мой токен.Но токен хорош ... по крайней мере на машине, на которой работает пользователь.Это из тестов на клиентской машине.У них есть 3 машины, о которых мне нужно беспокоиться.# 1) Сервер Windows с настольными и серверными приложениями # 2) Сервер Hadoop # 3) Сервер Windows, который является контроллером домена / сервером Active Directory

Для получения дополнительной информации, как правило, пользователь входит в приложение сервера через браузер, используяавтоматическая проверка подлинности Windows.

Для настольного компьютера пользователь запускает приложение на удаленной машине через RDP.

В нашем локальном (ну, облачном) тестовом стенде все работает нормально.Как настольное, так и серверное приложение правильно проходят аутентификацию в Hadoop.но конфигурация отличается от того, что есть у клиента.Наша тестовая конфигурация имеет 2 компьютера # 1) Windows-сервер с настольным компьютером и серверным приложением, которое также является контроллером домена / сервером Active Directory, # 2) Hadoop-сервер

В настоящее время у меня нет ресурсов, чтобы попытаться продублироватьКонфигурация клиента, иначе я бы.

И, повторюсь, приложение для настольного компьютера правильно аутентифицируется в Hadoop, но версия сервера (после выполнения имитации с SetThreadToken () с токеном входа в систему) не аутентифицируется корректно с Hadoop.

Является ли токен, используемый в олицетворении, менее надежным, чем сеанс, который выполняется на рабочем столе?

Что я могу попробовать?Что, может быть, я не понимаю?

...