使用WSHttpBinding使用 基本 身份验证通过身份验证代理时遇到问题。
BasicHttpBinding的类似代码有效。我猜我的问题与我无法将WSHttpBinding的安全模式设置为 TransportCredentialOnly 的事实有关..
由于对MTOM的依赖,我无法使用BasicHttpBinding。
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();
答案 0 :(得分:0)
我想在此指出的所有内容是安全的。如果您的目标服务托管在https(ssl)上,而不是您指定的网址,则使用传输
security.Mode = SecurityMode.Transport; // Not sure what to set here
答案 1 :(得分:0)
wsHttpBinding 不允许以明文形式发送用户名和密码,甚至不允许向本地身份验证代理发送! basicHttpBinding 没有此问题
经过一些测试后,我发现我可以通过在托管服务器上安装服务器证书来使其工作(不要与代理服务器混淆)。
通过在服务器上安装SSL证书,上面的代码无需修改即可运行。服务器上的SSL为我带来了许多问题。
解决此问题的其他任何方法?