2

我正在尝试编写一个 C# WCF 客户端(由 wsdl 的 svcutil 生成)来访问实现相同 wsdl 的 CXF(java)服务。

该服务运行良好,但我无法在我的 C# 客户端上连接到它,因为 CXF 配置了 SSL + Soap 1.1 + Basic Auth。

到目前为止,我已经尝试了以下方法: 为什么 Basic Auth 不能与我的 WCF 客户端一起使用 Java SOAP Web 服务?

new BasicHttpBinding()
            {
                Security =
                    {
                        Mode = BasicHttpSecurityMode.Transport,
                        Transport =
                            {
                                ClientCredentialType = HttpClientCredentialType.Basic,
                                ProxyCredentialType = HttpProxyCredentialType.None
                            },
                        Message =
                            {
                                ClientCredentialType = BasicHttpMessageCredentialType.UserName,
                                AlgorithmSuite = SecurityAlgorithmSuite.Default
                            }
                    }
            }

var client = new WebServiceClient(binding, endpoint);
client.ClientCredentials.UserName.UserName = username;
client.ClientCredentials.UserName.Password = password;

但它似乎没有正确发送 Auth Header。

我还尝试按照http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/4f8ab001-dafa-4347-bc41-95255ecc9230的概述手动添加标题。但我不满意这是最好的解决方案。

任何 WCF 专家都可以概述一种以编程方式创建支持 SSL + Soap 1.1 + 基本身份验证的绑定的方法吗?

以下是使用 WCF 发送的标头

System.Net Information: 0 : [13620] ConnectStream#64929093 - Sending headers
{
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://api.test.com/services/GetThings"
Host: api.test.com
Content-Length: 552
Expect: 100-continue
Accept-Encoding: gzip, deflate
}

虽然这是 SoapUI 发送的正确标头

Mon May 13 15:33:08 EDT 2013:DEBUG:>> "Accept-Encoding: gzip,deflate[\r][\n]"
Mon May 13 15:33:08 EDT 2013:DEBUG:>> "Content-Type: text/xml;charset=UTF-8[\r][\n]"
Mon May 13 15:33:08 EDT 2013:DEBUG:>> "SOAPAction: "http://api.test.com/services/GetThings"[\r][\n]"
Mon May 13 15:33:08 EDT 2013:DEBUG:>> "Authorization: Basic bXliVlcHJpbQbWwOTkxMjg=[\r][\n]"
Mon May 13 15:33:08 EDT 2013:DEBUG:>> "Content-Length: 317[\r][\n]"
Mon May 13 15:33:08 EDT 2013:DEBUG:>> "Host: api.test.com[\r][\n]"
Mon May 13 15:33:08 EDT 2013:DEBUG:>> "Connection: Keep-Alive[\r][\n]"
Mon May 13 15:33:08 EDT 2013:DEBUG:>> "User-Agent: Apache-HttpClient/4.1.1 (java 1.5)[\r][\n]"
4

0 回答 0