代码之家  ›  专栏  ›  技术社区  ›  Philip Fourie

是否可以使用wshttpbinding通过基本身份验证代理?

  •  0
  • Philip Fourie  · 技术社区  · 16 年前

    我无法通过身份验证代理 基本的 使用wshttpbinding进行身份验证。

    basichttpbinding工作的类似代码。我猜想我的问题与我无法将wshttpbinding的安全模式设置为 必要的运输

    我不能使用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 回复  |  直到 16 年前
        1
  •  0
  •   Usman Masood    16 年前

    列出我想在这里指出的所有一件事:security.mode=transport是在目标服务托管在https(ssl)上的情况下使用的,而不是您指定的URL。

    security.Mode = SecurityMode.Transport; // Not sure what to set here
    
        2
  •  0
  •   Philip Fourie    16 年前

    经过一些研究,我找到了一个答案。(我对解决方案并不完全满意,希望还有其他方法来解决这个问题)

    WSHTPTP-绑定 不允许以明文形式发送用户名和密码,甚至不允许发送到本地身份验证代理! basichttpbinding 没有这个问题

    经过一些测试,我发现可以通过在宿主服务器上安装服务器证书(不要与代理服务器混淆)使其正常工作。

    通过在服务器上安装SSL证书,上述代码可以在不进行修改的情况下工作。服务器上的SSL给我带来了许多问题。

    这个问题还有其他解决办法吗?