У меня есть следующие настройки:
- Серверный компьютер, на котором запущена служба WCF, предоставляемая через приложение IIS, для которого требуется проверка подлинности Windows.
- Прокси-сервер (Squid), требующий аутентификацию Windows.
- Клиентский компьютер, на котором запущена служба Windows, которая пытается подключиться к службе WCF через прокси-сервер. Служба установлена с учетными данными домена.
Все машины находятся в одном домене.
Если я удаляю прокси из настройки и устанавливаю только следующие свойства привязки безопасности клиента, все работает хорошо:
- SecurityMode = TransportCredentialOnly
- Transport.ClientCredentialType = Windows
Соединение установлено успешно, и правильные учетные данные переданы на сервер.
Если я добавляю прокси-сервер, но на прокси-сервере удаляю требуемую аутентификацию Windows, все тоже работает нормально. Единственная настройка, которую я изменяю здесь для привязки безопасности:
ProxyAddress = http://myproxyserver:3128
Я вижу, что звонки проходят через прокси-сервер с правильными учетными данными.
Проблема в том, что когда я устанавливаю требование проверки подлинности Windows на прокси-сервере, прокси-сервер возвращает ошибку 407. Когда я проверяю файлы журнала, я вижу, что нет второй попытки ответить на ошибку 407 с правильными учетными данными. Настройка, которую я добавляю:
Transport.ProxyCredentialType = Windows
Вещи, которые я пытался и не работал:
- Установить UseDefaultProxy - поскольку это служба Windows, она не принимает прокси по умолчанию.
- Устанавливать учетные данные Windows вручную в ClientCredentials.Windows (включая домен).
- Добавить прокси по умолчанию в app.config и machine.config.
Есть идеи, что происходит и как это исправить?