Я пытаюсь подключиться к SOAP WS со следующими функциями:
Вот пример запроса на мыло, который я хочу:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-c1cf1e29"> <wsu:Created>2018-08-29T10:20:58Z</wsu:Created> <wsu:Expires>2018-08-29T10:25:58Z</wsu:Expires> </wsu:Timestamp> <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-2e4f8773" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"> [...] </wsse:BinarySecurityToken> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="#Timestamp-c1cf1e29"> <Transforms> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>........</DigestValue> </Reference> <Reference URI="#Body-d96b5e74"> <Transforms> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>........</DigestValue> </Reference> </SignedInfo> <SignatureValue> [...] </SignatureValue> <KeyInfo> <wsse:SecurityTokenReference xmlns=""> <wsse:Reference URI="#SecurityToken-2e4f8773" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/> </wsse:SecurityTokenReference> </KeyInfo> </Signature> </wsse:Security> </soapenv:Header> <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Body-d96b5e74"> [...] </soapenv:Body> </soapenv:Envelope>
Я подключаю мысли WCF и создал пользовательскую привязку, которая работает через HTTPS,дает мне метку времени, подписанную и не зашифрованную, но я не могу подписать тело.Я использую сертификат X509 для подписи метки времени.
Я использую привязку:
<binding name="customBind"> <security allowInsecureTransport="true" includeTimestamp="true" requireDerivedKeys="false" authenticationMode="CertificateOverTransport" /> <textMessageEncoding messageVersion="Soap11" writeEncoding="UTF-8"/> <httpsTransport /> </binding>
Я пробовал разные привязки, такие как wsHttpBinding, ws2007HttpBinding, basicHttpBinding, wsHttpContextBinding… с разнымиконфигурации без успеха.
Есть идеи?
Спасибо!