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

У меня возникла проблема с получением аутентификационного прокси-сервера с использованием Основной аутентификации с WSHttpBinding.

Аналогичный код для BasicHttpBinding работает. Я предполагаю, что моя проблема связана с тем, что я не могу установить режим безопасности WSHttpBinding на TransportCredentialOnly..

Я не могу использовать BasicHttpBinding из-за зависимости от MTOM.

binding.ProxyAddress = new Uri("http://192.168.20.231:8080");
 binding.BypassProxyOnLocal = true;
 binding.UseDefaultWebProxy = false;
 WSHttpSecurity security = binding.Security;
 //security.Mode = SecurityMode.TransportCredentialOnly; //This option only exist for BasichHttpBinding
 security.Mode = SecurityMode.Transport; // Not sure what to set here
 //security.Mode = SecurityMode.TransportWithMessageCredential;
 security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;
 security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
 var client = new SyncWcfMTOMServiceClient(binding, new EndpointAddress("http://server/service.svc"));
 client.ClientCredentials.UserName.UserName = "user";
 client.ClientCredentials.UserName.Password = "pass";
 bool running = client.IsServiceRunning();
2 ответа

После некоторых исследований я нашел ответ на этот вопрос. (Я не совсем доволен решением и надеюсь, что есть еще один способ решить эту проблему)

wsHttpBinding не позволяет отправлять имя пользователя и пароль в ясном тексте, даже не на локальный прокси-сервер проверки подлинности! basicHttpBinding не имеет этой проблемы

После некоторого тестирования я обнаружил, что могу заставить его работать, установив сертификат сервера на сервере хостинга (не путать с прокси-сервером).

Установив SSL-сертификат на сервере, код выше работает без изменений. SSL на сервере создает для меня ряд проблем.

Любые другие способы решения этой проблемы?


ist из всего, что я хотел бы указать здесь. Security.Mode = Transport используется в том случае, если ваша целевая служба размещена на https (ssl), которая не соответствует указанному URL

security.Mode = SecurityMode.Transport; // Not sure what to set here

licensed under cc by-sa 3.0 with attribution.