【问题标题】:Is it possible to get through a Basic authentication proxy using WsHttpBinding?是否可以使用 WsHttpBinding 通过基本身份验证代理?
【发布时间】:2009-05-19 00:59:35
【问题描述】:

我在通过使用 Basic 身份验证和 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();

【问题讨论】:

    标签: .net web-services


    【解决方案1】:

    我想在这里指出的所有一件事中,Security.Mode =Transport 用于以防您的目标服务托管在 https (ssl) 上,而您指定的 URL 不是这种情况

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

    【讨论】:

    • 它不是托管在 https 它是一个非常标准的代理服务器
    • @Usman。我把它设置成什么?问题是安全模式选项都不起作用
    【解决方案2】:

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

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

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

    通过在服务器上安装 SSL 证书,上述代码无需修改即可运行。服务器上的 SSL 给我带来了许多问题。

    这个问题还有什么办法解决吗?

    【讨论】:

      猜你喜欢
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多