我从WSDL文件生成了一个WCF客户端服务代理,该文件调用第三方java Web服务。现在我需要配置绑定和代理来调用Web方法。
但是,我只有以下SOAP信息,用户名和密码以及客户端证书。我怎样才能弄清楚我需要做什么?
是否有“反向此配置”应用程序或教授所需技能的网站?
我想我会追上,“这部分消息转换为此配置”。有人可以帮忙吗?
对于同一个项目,我问this question,所以如果有人知道该向第三方询问什么,那也会有所帮助(我将其描述为“沟通信息”,但我不知道认为这足够具体。)
<env:Envelope xmlns:env=http://schemas.xmlsoap.org/soap/envelope/xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://etis.ford.com/services/fsa/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" env:mustUnderstand="1">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-messagesecurity-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="token-2-1172677451503-9243153">MIICDTCC……..k/j8lARlQ==</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#element-1-1172677451465-2619907">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>k_REDACTED_=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>k_REDACTED_=</ds:SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference wsu:Id="reference-3-1172…..1504-94…25">
<wsse:Reference URI="#token-2-117…..51503-9…3" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</env:Header>
<env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"wsu:Id="element-1-1172677451465-2619907">
<ns0:list>
<String_1>k_REDACTED_</String_1>
</ns0:list>
</env:Body>
</env:Envelope>
我的app.config生成了以下内容。它没有异常,但我得到的响应(在正确形成的XML中)包含“无”的对象 - 实际响应看起来像我发送的镜像。
<bindings>
<basicHttpBinding>
<binding name="MyBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://myurl"
binding="basicHttpBinding" bindingConfiguration="MyBinding"
contract="wsServiceProxy.ServiceName" name="MyServicePort" />
</client>
请求:
POST http://www.thehost.com/
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo2dteAUjcNNDmQ28Qhsz8KcAAAAARUELWtvXc06cOf2eOs23AWKlzgCLFBNImUOop7Ho+PoACQAA
SOAPAction: ""
Host: www.thehost.com
Content-Length: 299
Expect: 100-continue
Connection: Keep-Alive
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<list xmlns="http://thehost.com">
<String_1 xmlns="">MyString</String_1>
</list>
</s:Body>
</s:Envelope>
响应:
HTTP/1.1 200 OK
Date: Thu, 24 Oct 2013 14:17:20 GMT
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/1.0.0a mod_jk/1.2.31
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
VsDebuggerCausalityData: uIDPo2dteAUjcNNDmQ28Qhsz8KcAAAAARUELWtvXc06cOf2eOs23AWKlzgCLFBNImUOop7Ho+PoACQAA
SOAPAction: ""
host: www.thehost.com
Expect: 100-continue
connection: Keep-Alive, Keep-Alive
Content-Length: 299
Keep-Alive: timeout=2, max=100
Content-Type: text/xml;charset=utf-8
<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>
<s:Body xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<list xmlns='http://thehost.com'>
<String_1 xmlns=''>MyString</String_1>
</list>
</s:Body>
</s:Envelope>
答案 0 :(得分:2)
使用此自定义绑定:
<customBinding>
<binding name="NewBinding0">
<textMessageEncoding messageVersion="Soap11" />
<security authenticationMode="MutualCertificate" includeTimestamp="false"
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<secureConversationBootstrap />
</security>
<httpTransport />
</binding>
</customBinding>
请务必将您的合约装饰成仅签名:
[System.ServiceModel.ServiceContractAttribute(ConfigurationName=..., ProtectionLevel=System.Net.Security.ProtectionLevel.Sign)]
除了客户端证书之外,您还需要配置服务证书。您(可能)没有这样的证书,只需在那里配置任何虚拟证书(甚至与客户端相同)。
有关此方案的更多可能错误解决方法,请参阅this link。