Можно ли пройти через обычный прокси-сервер аутентификации с помощью WsHttpBinding? - PullRequest
0 голосов
/ 18 мая 2009

У меня проблема с прохождением через прокси-сервер аутентификации с использованием Basic аутентификации с 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 ]

0 голосов
/ 18 мая 2009

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

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

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

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

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

0 голосов
/ 18 мая 2009

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

security.Mode = SecurityMode.Transport; // Not sure what to set here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...