0

I am working on implementation of service that should accept SOAP 1.2 request with with HTNG 2.1 header, WS-Addressing (to communicate message IDs between systems and address destinations) and WS-Security (user authentication only). I have completed the whole business logic of processing payload message and generating proper response but I have a real trouble configuring my service to predefined request. Here it is:

<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
  <soap2:Header xmlns:soap2="http://www.w3.org/2003/05/soap-envelope"
  xmlns:htng="http://htng.org/1.3/Header/"
  xmlns:wsa="http://www.w3.org/2005/08/addressing"
  xmlns:wss="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"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:htnga="http://htng.org/PWSWG/2007/02/AsyncHeaders"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <wsa:Action>http://MyHost/MyService_SubmitRequest</wsa:Action>
    <wsa:ReplyTo>
      <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
    </wsa:ReplyTo>
    <htnga:ReplyTo>
      <wsa:Address>HTTPS://ResponseHost/Response.SVC</wsa:Address>
    </htnga:ReplyTo>
    <wss:Security mustUnderstand="1">
      <wss:UsernameToken>
        <wss:Username>string</wss:Username>
        <wss:Password>string</wss:Password>
      </wss:UsernameToken>
    </wss:Security>
    <wsa:MessageID>df559145-78a4-4c85-a264-bf99bbf8df9e</wsa:MessageID>
    <htnga:CorrelationID>df559145-78a4-4c85-a264-bf99bbf8df9e</htnga:CorrelationID>
    <wsa:To>https://pms.url</wsa:To>
  </soap2:Header>
  <Body>
    <!-- Payload -->
  </Body>
</Envelope>

I want configuration in config file, not in code and I have tried all configuration options I could find in various posts without any success. I am aware that I am probably missing some basics about WCF that I can't spot right now so at least a point in right direction will help.

1 Answers1

0

As far as I know, the MesaageID/ReplyTo header could be added in the SOAP header by setting up the message version.
How to add MessageID in the soap headers of WCF request and response?
And UsernameToken could be added by authenticating the client with username/password pattern.

   <customBinding>
       <binding name="mybinding">
         <textMessageEncoding messageVersion="Soap12WSAddressing10">
         </textMessageEncoding>
         <security authenticationMode="UserNameOverTransport" includeTimestamp="false" >
         </security>
         <httpsTransport></httpsTransport>
       </binding>
     </customBinding>

Result.
enter image description here
Correct way communicate WSSE Usernametoken for SOAP webservice
I don’t know how to add HGNGA:CorrelationID header to the SOAP header, It might relate to the WCF tracing.
Feel free to let me know if there is anything I can help with.

Abraham Qian
  • 7,117
  • 1
  • 8
  • 22