以编程方式配置WCF客户端绑定以访问SSL + Soap 1.1 + Basic Auth

时间:2013-05-13 22:28:27

标签: wcf soap ssl cxf basic-authentication

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

该服务工作正常但我在C#客户端连接时遇到问题,因为CXF配置了SSL + Soap 1.1 + Basic Auth。

到目前为止,我已尝试过以下方法: Why would Basic Auth not work with my WCF client to Java SOAP Web Service?

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 + Basic Auth的绑定的方法吗?

以下是与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]"

0 个答案:

没有答案