WS-Addressing Interop Scenarios

 

Copyright Notice

(c) 2002-2005 Microsoft Corporation, Inc. All rights reserved.

Limited copyright permission to use the WS-Addressing Interop Scenarios (Scenarios) is granted under the terms of the W3C Document License (see W3C® DOCUMENT LICENSE

as published on March 9, 2005 at the following link http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231)

THE SCENARIOS ARE PROVIDED "AS IS," AND THE AUTHOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE SCENARIOS ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

THE AUTHOR WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THE SCENARIOS.

The name and trademarks of the Author may NOT be used in any manner, including advertising or publicity pertaining to the Scenarios or its contents without specific, written prior permission. Title to copyright in the Scenarios will at all times remain with the Author.

No other rights are granted by implication, estoppel or otherwise.

 

 

 

Table of Contents

 

 

Notational conventions........................................................................................................ 2

Scenario 1: OneWay Message......................................................................................... 2

Message Exchange.......................................................................................................... 2

Ping Request Message Structure..................................................................................... 2

Scenario 2: Request-Response, ReplyTo= anonymous....................................................... 3

Message Exchange.......................................................................................................... 3

EchoString Request Message Structure.......................................................................... 3

Response Message Structure........................................................................................... 4

Scenario 3: Request-Response with ReplyTo not anonymous............................................ 5

Message Exchange.......................................................................................................... 5

EchoString Request Message Structure.......................................................................... 5

Response Message Structure........................................................................................... 6

Scenario 4: Fault in Request-Response. Request has FaultTo with EPR............................ 8

Message Exchange.......................................................................................................... 8

EchoFault Request Message Structure............................................................................ 8

Response Message Structure........................................................................................... 9

Scenario 5: Fault in Request-Response (no FaultTo element on request)......................... 10

Message Exchange........................................................................................................ 10

EchoFault Request Message Structure.......................................................................... 10

Response Message Structure......................................................................................... 11

Scenario 6: Request-Response with ReplyTo containing reference property.................... 12

Message Exchange........................................................................................................ 12

EchoString Request Message Structure........................................................................ 12

Response Message Structure......................................................................................... 13

Scenario 7: Request-Response with wsa:Action WSDL binding..................................... 14

Message Exchange........................................................................................................ 14

EchoStringAction Request Message Structure............................................................. 14

Response Message Structure......................................................................................... 15

Scenario 8: Secure request-response (signature on request and response)......................... 16

Message Exchange........................................................................................................ 16

EchoStringSecure Request Message Structure.............................................................. 16

Response Message Structure......................................................................................... 18

Scenario 9: Identical action values but different case in host part.................................... 21

Message Exchange........................................................................................................ 21

EchoString2 Request Message Structure...................................................................... 21

Response Message Structure......................................................................................... 22

Schema and WSDL........................................................................................................... 23

 

 

Notational conventions

 

Yellow Marked: variable (to be replaced by endpoints)

Bold: illustrate this scenario

 

Elements and Attributes

Items not listed in the following table MAY be present, but MUST NOT be marked with the mustUnderstand=”1” attribute. Items marked mandatory MUST be generated and processed. Items marked optional MAY be generated but MUST NOT generate a Fault if present.

 

 

Scenario 1: OneWay Message

This scenario tests a basic one way message.

 

Message Exchange

 

1.      Client sends a one way message to the Server

2.      Server sends an HTTP 202 to the Client

 

Ping Request Message Structure

 

Elements and Attributes

 

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/Ping

The SOAP Action header must contain this exact value

MessageID

Optional

Value: a URI that is unique for each ping request

To

Mandatory

Value: the URI of the Server - test ping service

Security

Optional

Value: *

Body

Mandatory

Value: a ping element and a client defined string

 

HTTP Request:

 

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <MessageID>uuid:77de6ef6-38ce-482a-819c-af94f3a9ffd8</MessageID>

      <wsa:Action>http://tempuri.org/ServicePortType/Ping</wsa:Action>

      <wsa:MessageID>uuid:77de6ef6-38ce-482a-819c-af94f3a9ffd8</wsa:MessageID>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-41be7862-2fe0-44bd-9537-119475806d8a">

          <wsu:Created>2004-06-16T17:08:51Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:13:51Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <Ping xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">scenario1</Ping>

    </soap:Body>

  </soap:Envelope>

 

HTTP Response: HTTP 202 accepted

 

 

 

Scenario 2: Request-Response, ReplyTo= anonymous

 

This scenario tests a request response with an anonymous address in the ReplyTo.

 

Message Exchange

 

1.      Client sends a request message to the Server.

2.      Server sends a response message to the Client.

 

Expected response string must be same as request input string

 

 

EchoString Request Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoString

The SOAP Action header must contain this exact value

ReplyTo

Mandatory

 

   Address

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

   ReferenceProperties

Optional

Value: *

MessageID

Mandatory

Value: a URI that is unique for each message

To

Mandatory

Value: the URI of the Destination - test echo service

Security

Optional

Value: *

Body

Mandatory

Value: an EchoString element and a client defined string

 

 

HTTP Request:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/ServicePortType/EchoString</wsa:Action>

      <wsa:MessageID>uuid:69c33b02-04ec-4cda-ae19-7184c6096568</wsa:MessageID>

      <wsa:ReplyTo>

        <wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>

      </wsa:ReplyTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-9b019533-2e61-4ddf-a780-f4cdbdee715e">

          <wsu:Created>2004-06-16T17:10:43Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:15:43Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <EchoString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">test message</EchoString>

    </soap:Body>

  </soap:Envelope>

 

Response Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoStringResponse

The SOAP Action header must contain this exact value

RelatesTo

Mandatory

MUST be the value of the MessageID specified in the request message

  @RelationshipType

Optional

If present Value: wsa:Reply

MessageID

Optional

Value: a URI that is unique for each message

To

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

ReferenceProperties/*

Optional

If specified in the ReplyTo EPR, the contents must be included as headers

Security

Optional

Value: *

Body

Mandatory

Value: an string element containing the client defined string from the request

 

HTTP 200 Response:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/ServicePortType/EchoStringResponse</wsa:Action>

      <wsa:MessageID>uuid:00f22ddc-95e3-4198-b7d8-18bb88490ac7</wsa:MessageID>

      <wsa:RelatesTo>uuid:69c33b02-04ec-4cda-ae19-7184c6096568</wsa:RelatesTo>

      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-791a2c5c-5fe5-4a95-9be3-ca36eb5ddfca">

          <wsu:Created>2004-06-16T17:10:44Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:15:44Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <string xmlns="http://tempuri.org/">test message</string>

    </soap:Body>

  </soap:Envelope>

 

 

Scenario 3: Request-Response with ReplyTo not anonymous

 

This scenario tests a request response with an address in the ReplyTo other than the anonymous address.

 

Message Exchange

 

1.      Client sends a request message to the Server.

2.      Server sends an HTTP 202 to the Client.

3.      Server sends a response message to the Client.

4.      Client sends an HTTP 202 to the Server.

 

Expected response string must be same as request input string

 

 

EchoString Request Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoString

The SOAP Action header must contain this exact value

ReplyTo

Mandatory

 

   Address

Mandatory

Value: The URI of the endpoint expecting the response

   ReferenceProperties

Optional

Value: *

MessageID

Mandatory

Value: a URI that is unique for each message

To

Mandatory

Value: the URI of the Destination - test echo service

Security

Optional

Value: *

Body

Mandatory

Value: an EchoString element and a client defined string

 

 

HTTP Request:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/ServicePortType/EchoString</wsa:Action>

      <wsa:MessageID>uuid:690ed325-b3d5-45e1-a623-77c50c3f1076</wsa:MessageID>

      <wsa:ReplyTo>

        <wsa:Address>http://microsoft.com/wsaService/service.ashx</wsa:Address>

      </wsa:ReplyTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-14dc6e15-b3e4-4120-a7ae-ed2d6dbd1090">

          <wsu:Created>2004-06-16T17:12:42Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:17:42Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <EchoString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">test message scenario 3</EchoString>

    </soap:Body>

  </soap:Envelope>

 

HTTP Response to sender of request: HTTP 202 accepted.

 

Response Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoStringResponse

The SOAP Action header must contain this exact value

RelatesTo

Mandatory

MUST be the value of the MessageID specified in the request message

  @RelationshipType

Optional

If present Value: wsa:Reply

MessageID

Optional

Value: a URI that is unique for each message

To

Mandatory

Value: the URI passed in the Address of the ReplyTo

ReferenceProperties/*

Optional

If specified in the ReplyTo EPR, the contents must be included as headers

Security

Optional

Value: *

Body

Mandatory

Value: an string element containing the client defined string from the request

 

HTTP Request (from server to client):

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/ServicePortType/EchoStringResponse</wsa:Action>

      <wsa:MessageID>uuid:612f1a0f-4d54-4539-b78b-ca4e02de3b33</wsa:MessageID>

      <wsa:RelatesTo>uuid:690ed325-b3d5-45e1-a623-77c50c3f1076</wsa:RelatesTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-2ac23a73-13b7-4ced-9117-e5c00cc8c2fb">

          <wsu:Created>2004-06-16T17:12:43Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:17:43Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <string xmlns="http://tempuri.org/">test message scenario 3</string>

    </soap:Body>

  </soap:Envelope>

 

HTTP Response: HTTP 202 accepted

 

Scenario 4: Fault in Request-Response. Request has FaultTo with EPR

 

This scenario tests a request response with a FaultTo on the request and a service that generates a fault.

 

Message Exchange

 

1.      Client sends a request message to the Server

2.      Server sends HTTP 202 to Client

3.      Server sends a fault to the FaultTo endpoint

4.      Client sends HTTP 202 to Server

 

Expected fault must have a faultString containing the EchoFault text element on the request. Also soap faultcode must be of value soap:Server

 

 

EchoFault Request Message Structure

 

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/Echofault

The SOAP Action header must contain this exact value

ReplyTo

Mandatory

 

   Address

Mandatory

Value: The URI of the endpoint expecting the response

   ReferenceProperties

Mandatory

Value: <rp:CustomerKey xmlns:rp="http://tempuri.org/ReferenceProperties/Headers">ABCDEF</rp:CustomerKey>

FaultTo

Mandatory

 

   Address

Mandatory

Value: The URI fault destination

   ReferenceProperties

Optional

Value: *

MessageID

Mandatory

Value: a URI that is unique for each message

To

Mandatory

Value: the URI of the Destination

Security

Optional

Value: *

Body

Mandatory

Value: an EchoFault element with a client defined string

 

HTTP Request:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/ServicePortType/Echofault</wsa:Action>

      <wsa:ReplyTo>

        <wsa:Address>http://microsoft.com/wsaService/service.ashx</wsa:Address>

      </wsa:ReplyTo>

      <wsa:FaultTo>

        <wsa:Address>http://microsoft.com/wsaService/service.ashx</wsa:Address>

        <wsa:ReferenceProperties>

          <rp:CustomerKey xmlns:rp="http://tempuri.org/ReferenceProperties/Headers">ABCDEF</rp:CustomerKey>

        </wsa:ReferenceProperties>

      </wsa:FaultTo>

      <wsa:MessageID>uuid:1beb27dd-f2ed-4eae-bb6b-ea8e656eb0d1</wsa:MessageID>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-a13aea49-613a-443f-8bbf-8158ff40a4ac">

          <wsu:Created>2004-06-16T17:14:55Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:19:55Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <EchoFault xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">EchoFaultString</EchoFault>

    </soap:Body>

  </soap:Envelope>

 

HTTP 202 Response

Response Message Structure

 

Elements and Attributes

 

Name

Mandatory?

Comments

Action

Mandatory

Value: http://schemas.xmlsoap.org/ws/2004/03/addressing/fault

The SOAP Action header must contain this exact value

RelatesTo

Mandatory

MUST be the value of the MessageID specified in the request message

  @RelationshipType

Optional

If present Value: wsa:Reply

MessageID

Optional

Value: a URI that is unique for each message (required if RelatesTo is present

To

Mandatory

Value: the URI passed in the Address of the ReplyTo

ReferenceProperties/*

Mandatory

Value: <rp:CustomerKey xmlns:rp="http://tempuri.org/ReferenceProperties/Headers">ABCDEF</rp:CustomerKey>

Security

Optional

Value: *

Body

Mandatory

Value: SOAP Fault with faultstring containing the string in request EchoFaultString and faultcode equal to soap:Server

 

HTTP Request:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://schemas.xmlsoap.org/ws/2004/03/addressing/fault</wsa:Action>

      <wsa:MessageID>uuid:ef84fce6-c3cc-4b79-a1fb-f3ec0e252e12</wsa:MessageID>

      <wsa:RelatesTo>uuid:1beb27dd-f2ed-4eae-bb6b-ea8e656eb0d1</wsa:RelatesTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <rp:CustomerKey xmlns:rp="http://tempuri.org/ReferenceProperties/Headers">ABCDEF</rp:CustomerKey>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-210f06b3-8a7f-42c6-b7ae-3694a2f3008f">

          <wsu:Created>2004-06-16T17:14:56Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:19:56Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <soap:Fault>

        <faultcode>soap:Server</faultcode>

        <faultstring>System.Web.Services.Protocols.SoapException: EchoFaultString</faultstring>

        <faultactor>http://microsoft.com/wsaService/service.ashx</faultactor>

      </soap:Fault>

    </soap:Body>

  </soap:Envelope>

 

HTTP 202 Response

Scenario 5: Fault in Request-Response (no FaultTo element on request)

This scenario tests a request response without a FaultTo on the request and a service that generates a fault.

 

Message Exchange

 

1.      Client sends a request message to the Server

2.      Server sends a fault back to client

 

Expected fault must have a faultString containing the EchoFault text element on the request. Also soap faultcode must be of value soap:Server

 

 

EchoFault Request Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/Echofault

The SOAP Action header must contain this exact value

ReplyTo

Mandatory

 

   Address

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

   ReferenceProperties

Optional

Value: *

FaultTo

Forbidden

 

   Address

Forbidden

 

   ReferenceProperties

Forbidden

Value: *

MessageID

Mandatory

Value: a URI that is unique for each message

To

Mandatory

Value: the URI of the Destination

Security

Optional

Value: *

Body

Mandatory

Value: an EchoFault element with a client defined string

 

HTTP request:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/ServicePortType/Echofault</wsa:Action>

      <wsa:MessageID>uuid:e5403358-a875-4bcf-8a3f-2a6dc0bff48b</wsa:MessageID>

      <wsa:ReplyTo>

        <wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>

      </wsa:ReplyTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-accad937-55b5-4432-901d-3d6b15c8d10f">

          <wsu:Created>2004-06-16T17:18:54Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:23:54Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <EchoFault xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">faultString to service without FaultTo</EchoFault>

    </soap:Body>

  </soap:Envelope>

 

Response Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://schemas.xmlsoap.org/ws/2004/03/addressing/fault

The SOAP Action header must contain this exact value

RelatesTo

Mandatory

MUST be the value of the MessageID specified in the request message

  @RelationshipType

Optional

If present Value: wsa:Reply

MessageID

Optional

Value: a URI that is unique for each message (required if RelatesTo is present

To

Mandatory

Value: the URI passed in the Address of the ReplyTo

ReferenceProperties/*

Optional

If specified in the ReplyTo EPR, the contents must be included as headers

Security

Optional

Value: *

Body

Mandatory

Value: SOAP Fault with faultstring containing the string in request EchoFault and faultcode equal to soap:Server

 

HTTP 500 Response:

<soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://schemas.xmlsoap.org/ws/2004/03/addressing/fault</wsa:Action>

      <wsa:MessageID>uuid:fe48c0d5-0ef0-4e56-bad8-149b04ab1b8a</wsa:MessageID>

      <wsa:RelatesTo>uuid:e5403358-a875-4bcf-8a3f-2a6dc0bff48b</wsa:RelatesTo>

      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-66afe597-afda-4744-ad44-e50753914df9">

          <wsu:Created>2004-06-16T17:18:55Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:23:55Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <soap:Fault>

        <faultcode>soap:Server</faultcode>

        <faultstring>System.Web.Services.Protocols.SoapException: faultString to service without FaultTo

   </faultstring>

        <faultactor>http://microsoft.com/wsaService/service.ashx</faultactor>

      </soap:Fault>

    </soap:Body>

  </soap:Envelope>

 

 

 

Scenario 6: Request-Response with ReplyTo containing reference property

 

This scenario tests a request response with a non-anonymous address in the ReplyTo which contains a reference property.

 

Message Exchange

 

1.      Client sends a request message to the Server.

2.      Server sends a response message to specified ReplyTo endpoint

 

Expected response string must be same as request input string

 

EchoString Request Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoString

The SOAP Action header must contain this exact value

ReplyTo

Mandatory

 

   Address

Mandatory

The URI of the endpoint expecting the response

   ReferenceProperties

Manditory

Value: <rp1:CustomerID rpa:CustomerID="ab" xmlns:rpa="http://Tempuri.Org/RP/Attributes" xmlns:rp1="http://tempuri.org/RP/Headers">12</rp1:CustomerID>

          <rp2:CustomerData xmlns:rp2="http://customer/Keys">

            <ID>1234</ID>

            <rpd:Data xmlns:rpd="http://customer/Data">ABC</rpd:Data>

          </rp2:CustomerData>

MessageID

Mandatory

Value: a URI that is unique for each message

To

Mandatory

Value: the URI of the Destination - test echo service

Security

Optional

Value: *

Body

Mandatory

Value: an EchoString element and a client defined string

 

 

HTTP Request:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/ServicePortType/EchoString</wsa:Action>

      <wsa:MessageID>uuid:5212d73b-4f19-4072-8989-34fef04f8f1a</wsa:MessageID>

      <wsa:ReplyTo>

        <wsa:Address>http://microsoft.com/wsaService/service.ashx</wsa:Address>

        <wsa:ReferenceProperties>

          <rp1:CustomerID rpa:CustomerID="ab" xmlns:rpa="http://Tempuri.Org/RP/Attributes" xmlns:rp1="http://tempuri.org/RP/Headers">12</rp1:CustomerID>

          <rp2:CustomerData xmlns:rp2="http://customer/Keys">

            <ID>1234</ID>

            <rpd:Data xmlns:rpd="http://customer/Data">ABC</rpd:Data>

          </rp2:CustomerData>

        </wsa:ReferenceProperties>

      </wsa:ReplyTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-62370a32-8d45-44e8-a86a-2ad835b0831a">

          <wsu:Created>2004-06-16T17:21:08Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:26:08Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <EchoString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">test message</EchoString>

    </soap:Body>

  </soap:Envelope>

 

HTTP Response to sender of request: HTTP 202 accepted

 

 

Response Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoStringResponse

The SOAP Action header must contain this exact value

RelatesTo

Mandatory

MUST be the value of the MessageID specified in the request message

  @RelationshipType

Optional

If present Value: wsa:Reply

MessageID

Optional

Value: a URI that is unique for each message

To

Mandatory

Value: the URI passed in the Address of the ReplyTo

ReferenceProperties/*

Optional

<rp1:CustomerID rpa:CustomerID="ab" xmlns:rpa="http://Tempuri.Org/RP/Attributes" xmlns:rp1="http://tempuri.org/RP/Headers">12</rp1:CustomerID>

          <rp2:CustomerData xmlns:rp2="http://customer/Keys">

            <ID>1234</ID>

            <rpd:Data xmlns:rpd="http://customer/Data">ABC</rpd:Data>

          </rp2:CustomerData>

 

Security

Optional

Value: *

Body

Mandatory

Value: string with value same as request EchoString value

 

HTTP Request (from server to client):

 

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/ServicePortType/EchoStringResponse</wsa:Action>

      <wsa:MessageID>uuid:6e8a832e-c0dc-42d8-a294-08c01795470c</wsa:MessageID>

      <wsa:RelatesTo>uuid:5212d73b-4f19-4072-8989-34fef04f8f1a</wsa:RelatesTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <rp1:CustomerID rpa:CustomerID="ab" xmlns:rpa="http://Tempuri.Org/RP/Attributes" xmlns:rp1="http://tempuri.org/RP/Headers">12</rp1:CustomerID>

      <rp2:CustomerData xmlns:rp2="http://customer/Keys">

        <ID>1234</ID>

        <rpd:Data xmlns:rpd="http://customer/Data">ABC</rpd:Data>

      </rp2:CustomerData>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-7cf48632-4dc7-4286-a9fb-2bf4bb8b6f11">

          <wsu:Created>2004-06-16T17:21:08Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:26:08Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <string xmlns="http://tempuri.org/">test message</string>

    </soap:Body>

  </soap:Envelope>

HTTP 202 Response

 

 

Scenario 7: Request-Response with wsa:Action WSDL binding

This scenario tests a request response with an explicit wsa:Action WSDL binding

 

Message Exchange

 

1.      Client sends a request message to the Server.

2.      Server sends a response message to the Client

 

Expected response string must be same as request input string

 

EchoStringAction Request Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/EchoStringAction

The SOAP Action header must contain this exact value

ReplyTo

Mandatory

 

   Address

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

   ReferenceProperties

Optional

Value: *

MessageID

Mandatory

Value: a URI that is unique for each message

To

Mandatory

Value: the URI of the Destination - test echo service

Security

Optional

Value: *

Body

Mandatory

Value: an EchoStringAction element and a client defined string

 

Expected response string must be same as request input string

 

HTTP Request:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/EchoStringAction</wsa:Action>

      <wsa:MessageID>uuid:52eeff0d-3ea5-4ffb-a551-d40d638575c4</wsa:MessageID>

      <wsa:ReplyTo>

        <wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>

      </wsa:ReplyTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-d889f72b-19f3-4982-a0ca-7cb3c04233bb">

          <wsu:Created>2004-06-16T17:23:41Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:28:41Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <EchoStringAction xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">test message</EchoStringAction>

    </soap:Body>

  </soap:Envelope>

 

Response Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoStringActionResponse

The SOAP Action header must contain this exact value

RelatesTo

Mandatory

MUST be the value of the MessageID specified in the request message

  @RelationshipType

Optional

If present Value: wsa:Reply

MessageID

Optional

Value: a URI that is unique for each message

To

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

ReferenceProperties/*

Optional

If specified in the ReplyTo EPR, the contents must be included as headers

Security

Optional

Value: *

Body

Mandatory

Value: an string element containing the client defined string from the request

 

 

HTTP 200 Response:

 

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://tempuri.org/EchoStringActionResponse</wsa:Action>

      <wsa:MessageID>uuid:64a70e68-a15d-4a2e-9c65-11c4d399baef</wsa:MessageID>

      <wsa:RelatesTo>uuid:52eeff0d-3ea5-4ffb-a551-d40d638575c4</wsa:RelatesTo>

      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-9f1a9933-af7e-4c49-8c7f-05dfc60aff2b">

          <wsu:Created>2004-06-16T17:23:42Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:28:42Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <string xmlns="http://tempuri.org/">test message</string>

    </soap:Body>

  </soap:Envelope>

 

Scenario 8: Secure request-response (signature on request and response)

 

This scenario tests a request response where both request and response must be signed.

 

Message Exchange

 

1.      Client sends a signed request message to the Server.

2.      Server sends a signed response message to the Client

 

Expected response string must be same as request input string.

 

 

EchoStringSecure Request Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoStringSecure

The SOAP Action header must contain this exact value

ReplyTo

Mandatory

 

   Address

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

   ReferenceProperties

Optional

Value: *

MessageID

Mandatory

Value: a URI that is unique for each message

To

Mandatory

Value: the URI of the Destination - test echo service

Security

Mandatory

 

     Timestamp

Mandatory

contains Created and Expires values for a message

     BinarySecurityToken

Mandatory

contains client’s cert public key used for signing, @ValuType has a value of http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary

     Signature

Mandatory

Signature over Addressing wsa:* headers, Timestamp element and the Body

     EncryptedKey

Mandatory

Contains encrypted session key used to encrypt the Body

     KeyInfo

Mandatory

contain wsse:SecurityTokenReference element referencing Receiver’s certificate’s X.509 SubjectkeyIdentifier extension.

     CipherData

Mandatory

The CipherData contains CipherValue element with the session key encrypted using the Public Key of the certificate referenced by the xenc:EncryptedKey\ds:KeyInfo (Receiver's X.509 certificate), using the RSA-1_5 algorithm

     ReferenceList

Mandatory

Contains a single xenc:DataRaference element with a @URI attribute pointing to the xenc:EncryptedData  element inside the soap:Body

Body

Mandatory

Value: an EchoStringSecure element and a client defined string

 

The following elements are signed in the request message:

Addressing headers wsa:Action, wsa:MessageID, wsa:To, wsa:ReplyTo

wsu:Timestamp element inside wsse:Security header

soap:Body element

 

The following elements are encrypted:

            soap:Body element

 

Signature occurs after encryption.     

 

HTTP Request:

 

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action wsu:Id="Id-8c32ef90-2cf8-402b-a189-a1269f262b55">http://tempuri.org/ServicePortType/EchoStringSecure</wsa:Action>

      <wsa:MessageID wsu:Id="Id-51fbe2f1-c6f2-4bea-b119-7e6fd696084b">uuid:b3635deb-b0f5-4db9-8b89-c3ad934712a7</wsa:MessageID>

      <wsa:ReplyTo wsu:Id="Id-da3c1fd1-4f0c-4d7c-ba5b-6f4ac4cb9d15">

        <wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>

      </wsa:ReplyTo>

      <wsa:To wsu:Id="Id-4e2fb7dd-2b82-4666-bab7-37a346a45cde">http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security soap:mustUnderstand="1">

        <wsu:Timestamp wsu:Id="Timestamp-52a23f55-546e-4805-ab71-f65b14a57860">

          <wsu:Created>2004-06-16T17:40:19Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:45:19Z</wsu:Expires>

        </wsu:Timestamp>

        <wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-400d422c-f493-40d2-a9d3-d8e139d647b9">MIIBxDCCAW6gAwIBAgIQxUSXFzWJYYtOZnmmuOMKkjANBgkqhkiG9w0BAQQFADAWMRQwEgYDVQQDEwtSb290IEFnZW5jeTAeFw0wMzA3MDgxODQ3NTlaFw0zOTEyMzEyMzU5NTlaMB8xHTAbBgNVBAMTFFdTRTJRdWlja1N0YXJ0Q2xpZW50MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+L6aB9x928noY4+0QBsXnxkQE4quJl7c3PUPdVu7k9A02hRG481XIfWhrDY5i7OEB7KGW7qFJotLLeMec/UkKUwCgv3VvJrs2nE9xO3SSWIdNzADukYh+Cxt+FUU6tUkDeqg7dqwivOXhuOTRyOI3HqbWTbumaLdc8jufz2LhaQIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwDQYJKoZIhvcNAQEEBQADQQAfIbnMPVYkNNfX1tG1F+qfLhHwJdfDUZuPyRPucWF5qkh6sSdWVBY5sT/txBnVJGziyO8DPYdu2fPMER8ajJfl</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="#Id-8c32ef90-2cf8-402b-a189-a1269f262b55">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>ZxSluSRNPJcb6uBhDfq5+r7ZjNU=</DigestValue>

            </Reference>

            <Reference URI="#Id-51fbe2f1-c6f2-4bea-b119-7e6fd696084b">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>CNHMrD+gSFDaV0FOoWt+1YJy61w=</DigestValue>

            </Reference>

            <Reference URI="#Id-da3c1fd1-4f0c-4d7c-ba5b-6f4ac4cb9d15">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>ybm7UfJhkVUo+ChDHzbJW2HMpRA=</DigestValue>

            </Reference>

            <Reference URI="#Id-4e2fb7dd-2b82-4666-bab7-37a346a45cde">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>F6kXRsTTmWoNeheQbuNPscc9xeE=</DigestValue>

            </Reference>

            <Reference URI="#Timestamp-52a23f55-546e-4805-ab71-f65b14a57860">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>ixV3OwjuU5OwrEtEiNkqS3r/1FM=</DigestValue>

            </Reference>

            <Reference URI="#Id-ba346d2e-8261-45e9-acda-fb4b7f853843">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>mkPINJX3YKOQSL74dRMJzAWQl2k=</DigestValue>

            </Reference>

          </SignedInfo>

          <SignatureValue>EtjVx02WMKYIqFpyNZIlcs2AaAWqwbD1KJFZAvjcqztLCwLwksafPjwYY0aa+oVvd5SR3gRkbx4Fh3fztsrBNUHaO0FXqyJgkAJ0LWs1EA5xO75jGoQJqA4k5JSZ4re22vYz3GFS1L6lI6UDq+zbg30ylBAY0Wg8EzaXi8eKMYM=</SignatureValue>

          <KeyInfo>

            <wsse:SecurityTokenReference>

              <wsse:Reference URI="#SecurityToken-400d422c-f493-40d2-a9d3-d8e139d647b9" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />

            </wsse:SecurityTokenReference>

          </KeyInfo>

        </Signature>

                    <xenc:EncryptedKey>

                <xenc:EncryptionMethod

                     Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />

                <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

                    <wsse:SecurityTokenReference>

                        <wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier">

                          8Pyt70GO7T4HL16uR99330yhg4o=

                     </wsse:KeyIdentifier>

                    </wsse:SecurityTokenReference>

                </KeyInfo>

                <xenc:CipherData>

                    <xenc:CipherValue>o5....MM=</xenc:CipherValue>

                </xenc:CipherData>

                <xenc:ReferenaeList>

                    <xenc:DataReference

                     URI="#EncryptedContent-993f9518-5343-44f2-abd1-25430d007c3e" />

                </xenc:Referen£eList>

            </xenc:EncryptedKey>

      </wsse:Security>

    </soap:Header>

    <soap:Body wsu:Id="Id-ba346d2e-8261-45e9-acda-fb4b7f853843" >

      <!--

       Unencrypted form

<EchoStringSecure xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">test message</EchoStringSecure>

     -->

        <xenc:EncryptedData

              Id="EncryptedContent-993f9518-5343-44f2-abd1-25430d007c3e"

              Type="http://www.w3.org/2001/04/xmlenc#Content">

            <xenc:EncryptionMethod

              Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />

            <xenc:CipherData>

                <xenc:CipherValue>....</xenc:CipherValue>

            </xenc:CipherData>

        </xenc:EncryptedData>

    </soap:Body>

  </soap:Envelope>

 

 

 

Response Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://tempuri.org/ServicePortType/EchoStringSecureResponse

The SOAP Action header must contain this exact value

RelatesTo

Mandatory

MUST be the value of the MessageID specified in the request message

  @RelationshipType

Optional

If present Value: wsa:Reply

MessageID

Optional

Value: a URI that is unique for each message

To

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

ReferenceProperties/*

Optional

If specified in the ReplyTo EPR, the contents must be included as headers

Security

Mandatory

 

     Timestamp

Mandatory

contains Created and Expires values for a message

     BinarySecurityToken

Mandatory

contains server’s cert public key used for signing, @ValuType has a value of http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary

     Signature

Mandatory

Signature over Addressing wsa:* headers, Timestamp element and the Body

     EncryptedKey

Mandatory

Contains encrypted session key used to encrypt the Body

     KeyInfo

Mandatory

contain wsse:SecurityTokenReference element referencing Receiver’s certificate’s X.509 SubjectkeyIdentifier extension.

     CipherData

Mandatory

The CipherData contains CipherValue element with the session key encrypted using the Public Key of the certificate referenced by the xenc:EncryptedKey\ds:KeyInfo (Receiver's X.509 certificate), using the RSA-1_5 algorithm

     ReferenceList

Mandatory

Contains a single xenc:DataRaference element with a @URI attribute pointing to the xenc:EncryptedData  element inside the soap:Body

Body

Mandatory

Value: an string element containing the client defined string from the request

 

 

 

HTTP 200 Response:

<soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action wsu:Id="Id-80295de9-9cf3-4533-852c-c4119d0c97bd">http://tempuri.org/ServicePortType/EchoStringSecureResponse</wsa:Action>

      <wsa:MessageID wsu:Id="Id-5d6d37a2-633f-4ac2-82cb-451a5736b40f">uuid:1abbe4e7-42bd-4110-a02d-05f56a736068</wsa:MessageID>

      <wsa:RelatesTo wsu:Id="Id-0e8bc49d-9f66-4c42-9b25-c7a4748d4f5f">uuid:ad67240c-3b30-41c5-978c-8a21c25e218d</wsa:RelatesTo>

      <wsa:To wsu:Id="Id-3aa92978-c690-4a85-8a9a-26d3b923d502">http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>

      <wsse:Security soap:mustUnderstand="1">

        <wsu:Timestamp wsu:Id="Timestamp-3b335d2a-ec68-473a-b8f9-1c4e6c7d0e9f">

          <wsu:Created>2004-06-22T23:58:38Z</wsu:Created>

          <wsu:Expires>2004-06-23T00:03:38Z</wsu:Expires>

        </wsu:Timestamp>

        <wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-3d799a40-30b6-44c2-aae7-06b0c8f82fde">MIIFGjCCBAKgAwIBAgIKM+0GdwAAAAAAZDANBgkqhkiG9w0B°QUFADB0MRMwEQYKCZImiZPyLGQBGRYDY29tMRkwFwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MRQwEgYKCZImiZPyLGQBGRYEY29ycDEXMBUGCgmSJomT8ixkARkWB3JlZG1vbmQxEzARBgNVBAMTCkdYQVRPT0xLSVQwHhcNMDQwNjAzMjExOTU1WhcNMDUwNjAzMjEyOTU1WjBCMRUwEwYDVQQDEwxTdWl0ZXNTZXJ2ZXIxKTAnBgkqhkiG9w0BCQEWGnN1aXRlc3NlcnZlckBtaWNyb3NvZnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDqWJXfuU4IQ/Y/89nMqCs3YUi1hKfOBao0R8g7OT8RGW1X4maoXjmRwCXywuEe91IYd6e4Tm6jD+UEsEEs9S48nOkLH95iAaIL4qxMQElEyjK2CLW6EOFb4yjZtLN3G3vJ40gUQof8DMbU9KiuKolTKbx0HTAqN0Jv94R79dtmFwIDAQABo4ICYjCCAl4wDgYDVR0PAQH/BAQDAgTwMEQGCSqGSIb3DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG9w0DBzAdBgNVHQ4EFgQULFbH/KLGHIH7EIKfWT1U7uxyTlIwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAUYU9OYCOWhe9hKlEC4Ci0JoWZh/4wgaYGA1UdHwSBnjCBmzCBmKCBlaCBkoZGaHR0cDovL2d4YXRvb2xraXQucmVkbW9uZC5jb3JwLm1pY3Jvc29mdC5jb20vQ2VydEVucm9sbC9HWEFUT09MS0lULmNybIZIZmlsZTovL1xcZ3hhdG9vbGtpdC5yZWRtb25kLmNvcnAubWljcm9zb2Z0LmNvbVxDZXJ0RW5yb2xsXEdYQVRPT0xLSVQuY3JsMIIBBgYIKwYBBQUHAQEEgfkwgfYweAYIKwYBBQUHMAKGbGh0dHA6Ly9neGF0b29sa2l0LnJlZG1vbmQuY29ycC5taWNyb3NvZnQuY29tL0NlcnRFbnJvbGwvZ3hhdG9vbGtpdC5yZWRtb25kLmNvcnAubWljcm9zb2Z0LmNvbV9HWEFUT09MS0lULmNydDB6BggrBgEFBQcwAoZuZmlsZTovL1xcZ3hhdG9vbGtpdC5yZWRtb25kLmNvcnAubWljcm9zb2Z0LmNvbVxDZXJ0RW5yb2xsXGd4YXRvb2xraXQucmVkbW9uZC5jb3JwLm1pY3Jvc29mdC5jb21fR1hBVE9PTEtJVC5jcnQwDQYJKoZIhvcNAQEFBQADggEBAAFSWEKrzxGbW5/SfYG0usi1J25LH7OYOodCp9e0wDV8nFCrgddQKMg1IZLxowSOy5r24RCjqJcYlzoqUy3dHpR2ST2KITfmvm94btW2OaHoAbPx0ZXRk3mYEB1f+eM+tlScexUNIxCIrJc4u0vc6N2DDEVwvn+O4VPFx9SZvFAo3R+75dg50koCtNIdqvX67iBAUk2T5XWZ9u4LhqXbk93gstZE7kK7GC+11ua+dJIxmPpLwYsboHG7vaaTguywVtABuZ39iuwjb0xg3ci0qIJLnrpPtZvezGk1KezgmooSKkiZmit7mqSTuxVQTCanCyMWSmqJVKiklNX2EDlulT8=</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="#Id-80295de9-9cf3-4533-852c-c4119d0c97bd">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>m3dzoORWeqzioVohMTBon+pAReM=</DigestValue>

            </Reference>

            <Reference URI="#Id-5d6d37a2-633f-4ac2-82cb-451a5736b40f">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>x9GofZ7x659QB09sAH5alX7S4Lc=</DigestValue>

            </Reference>

            <Reference URI="#Id-0e8bc49d-9f66-4c42-9b25-c7a4748d4f5f">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>Gd47Y2i7Q0oT+UIsFXpzU2Y2ZUM=</DigestValue>

            </Reference>

            <Reference URI="#Id-3aa92978-c690-4a85-8a9a-26d3b923d502">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>PD9rAucBxAniIuSXmgM0DjGau6g=</DigestValue>

            </Reference>

            <Reference URI="#Timestamp-3b335d2a-ec68-473a-b8f9-1c4e6c7d0e9f">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>qJ4V6hn7dqdWKknQdptzhwRrgCI=</DigestValue>

            </Reference>

            <Reference URI="#Id-ad1db3cc-b6e3-4ed0-8537-76fed24ea7ae">

              <Transforms>

                <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />

              </Transforms>

              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

              <DigestValue>e27+w0Y4w6dYRX0wZGUCqWhVNf4=</DigestValue>

            </Reference>

          </SignedInfo>

          <SignatureValue>Df5s3h1LksZz806t3miAoilL95QMl/G5Ogq+GV7EqKQe/k3Gw+P/L2J8ellyCTXC30PPxD1xfqq3wjsVinEwViJ7ur2Kkzr+u53FkujGFWhQ89Cgd7st0ombfFLlP34hGxywm7eCYcbNuqGh1Y6BOe+BnImw+w06LgYEDgKPfVY=</SignatureValue>

          <KeyInfo>

            <wsse:SecurityTokenReference>

              <wsse:Reference URI="#SecurityToken-3d799a40-30b6-44c2-aae7-06b0c8f82fde" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />

            </wsse:SecurityTokenReference>

          </KeyInfo>

        </Signature>

      </wsse:Security>

    </soap:Header>

    <soap:Body wsu:Id="Id-ad1db3cc-b6e3-4ed0-8537-76fed24ea7ae">

      <string xmlns="http://tempuri.org/">test message</string>

    </soap:Body>

  </soap:Envelope>

 

 

Scenario 9: Identical action values but different case in host part

 

This scenario tests a request response with a service endpoint having upper case host part in action URI

 

Message Exchange

 

1.      Client sends a request message to the Server.

2.      Server sends a response message to the Client

 

Expected response string must be same as request input string

 

EchoString2 Request Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://TEMPURI.org/ServicePortType/EchoString

The SOAP Action header must contain this exact value

ReplyTo

Mandatory

 

   Address

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

   ReferenceProperties

Optional

Value: *

MessageID

Mandatory

Value: a URI that is unique for each message

To

Mandatory

Value: the URI of the Destination - test echo service

Security

Optional

Value: *

Body

Mandatory

Value: an EchoString2 element with a client defined string

 

 

 

HTTP Request:

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://TEMPURI.org/ServicePortType/EchoString</wsa:Action>

      <wsa:MessageID>uuid:2a5722e6-ecfd-4488-b79a-3acee7b24f5e</wsa:MessageID>

      <wsa:ReplyTo>

        <wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>

      </wsa:ReplyTo>

      <wsa:To>http://microsoft.com/wsaService/service.ashx</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-d12add00-e6e5-40fb-9c95-accad70be45b">

          <wsu:Created>2004-06-16T17:43:52Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:48:52Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <EchoString2 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">scenario9</EchoString2>

    </soap:Body>

  </soap:Envelope>

 

 

Response Message Structure

 

Elements and Attributes

Name

Mandatory?

Comments

Action

Mandatory

Value: http://TEMPURI.org/ServicePortType/EchoStringResponse

The SOAP Action header must contain this exact value

RelatesTo

Mandatory

MUST be the value of the MessageID specified in the request message

  @RelationshipType

Optional

If present Value: wsa:Reply

MessageID

Optional

Value: a URI that is unique for each message

To

Mandatory

The value MUST be the well known "anonymous" URI: http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous

ReferenceProperties/*

Optional

If specified in the ReplyTo EPR, the contents must be included as headers

Security

Optional

Value: *

Body

Mandatory

Value: an string element containing the client defined string from the request

 

HTTP 200 Response:

 

  <soap:Envelope xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" 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" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

    <soap:Header>

      <wsa:Action>http://TEMPURI.org/ServicePortType/EchoStringResponse</wsa:Action>

      <wsa:MessageID>uuid:db009a35-6b3d-47e0-9196-c553a530a4bf</wsa:MessageID>

      <wsa:RelatesTo>uuid:2a5722e6-ecfd-4488-b79a-3acee7b24f5e</wsa:RelatesTo>

      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>

      <wsse:Security>

        <wsu:Timestamp wsu:Id="Timestamp-84427f3c-db96-4153-aea5-4f32735281ce">

          <wsu:Created>2004-06-16T17:43:52Z</wsu:Created>

          <wsu:Expires>2004-06-16T17:48:52Z</wsu:Expires>

        </wsu:Timestamp>

      </wsse:Security>

    </soap:Header>

    <soap:Body>

      <string xmlns="http://tempuri.org/">scenario92</string>

    </soap:Body>

  </soap:Envelope>

 

 

Schema and WSDL

 

<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

       xmlns:s="http://www.w3.org/2001/XMLSchema"

       xmlns:s0="http://tempuri.org/"

       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"

       xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"

       xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"

       targetNamespace="http://tempuri.org/"

       xmlns="http://schemas.xmlsoap.org/wsdl/">

      

       <types>

              <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">

                     <s:element name="Ping" nillable="true" type="s0:Ping" />

                     <s:complexType name="Ping">

                           <s:simpleContent>

                                  <s:extension base="s:string" />

                           </s:simpleContent>               

                     </s:complexType>

                    

                     <s:element name="EchoString" nillable="true" type="s0:EchoString" />

                     <s:complexType name="EchoString">

                           <s:simpleContent>

                                  <s:extension base="s:string" />

                           </s:simpleContent>

                     </s:complexType>

                    

                     <s:element name="string" nillable="true" type="s:string" />

                          

                     <s:element name="EchoStringAction" nillable="true" type="s0:EchoStringAction" />

                     <s:complexType name="EchoStringAction">

                           <s:simpleContent>

                                  <s:extension base="s:string" />

                           </s:simpleContent>

                     </s:complexType>

 

                     <s:element name="EchoStringSecure" nillable="true" type="s0:EchoStringSecure" />

                     <s:complexType name="EchoStringSecure">

                           <s:simpleContent>

                                  <s:extension base="s:string" />

                           </s:simpleContent>

                     </s:complexType>

                    

                     <s:element name="EchoFault" nillable="true" type="s0:EchoFault" />

                     <s:complexType name="EchoFault">

                           <s:simpleContent>

                                  <s:extension base="s:string" />

                           </s:simpleContent>

                     </s:complexType>

                    

                     <s:element name="EchoString2" nillable="true" type="s0:EchoString2" />

                     <s:complexType name="EchoString2">

                           <s:simpleContent>

                                  <s:extension base="s:string" />

                           </s:simpleContent>

                     </s:complexType>

              </s:schema>

       </types>

      

       <message name="PingMessageIn"><part name="data" element="s0:Ping" /></message>

      

       <message name="EchoStringMessageIn"><part name="data" element="s0:EchoString"/></message>

       <message name="EchoStringMessageOut"><part name="data" element="s0:string" /></message>

       <message name="EchoStringActionMessageIn"><part name="data" element="s0:EchoStringAction"/>

</message>

       <message name="EchoStringActionMessageOut"><part name="data" element="s0:string" /> </message>

       <message name="EchoStringSecureMessageIn"><part name="data" element="s0:EchoStringSecure" /></message>

       <message name="EchoStringSecureMessageOut"><part name="data" element="s0:string" /> </message>

       <message name="EchoFaultMessageIn"><part name="data" element="s0:EchoFault" /></message>

       <message name="EchoFaultMessageOut"><part name="data" element="s0:string" /></message>

       <message name="EchoString2MessageIn"><part name="data" element="s0:EchoString2" /> </message>

       <message name="EchoString2MessageOut"><part name="data" element="s0:string" /></message>

      

       <portType name="ServicePortType">

              <operation name="Ping">

                     <input message="s0:PingMessageIn" />

              </operation>        

             

              <operation name="EchoString">

                     <input message="s0:EchoStringMessageIn" />

                     <output message="s0:EchoStringMessageOut" />

              </operation>

             

              <operation name="EchoStringAction">

                     <input message="s0:EchoStringActionMessageIn" />

                     <output message="s0:EchoStringActionMessageOut" />

              </operation>

             

              <operation name="EchoStringSecure">

                     <input message="s0:EchoStringSecureMessageIn" />

                     <output message="s0:EchoStringSecureMessageOut" />

              </operation>

             

              <operation name="EchoFault">

                     <input message="s0:EchoFaultMessageIn" />

                     <output message="s0:EchoFaultMessageOut" />

              </operation>

 

              <operation name="EchoString2">

                     <input name="EchoString" message="s0:EchoString2MessageIn" />

                     <output name="EchoStringResponse" message="s0:EchoString2MessageOut" />

              </operation>

       </portType>

      

       <binding name="ServiceBinding" type="s0:ServicePortType">

              <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

             

              <operation name="Ping">

                     <soap:operation soapAction="http://tempuri.org/ServicePortType/Ping" style="document" />

                     <input name="Ping">

                           <soap:body use="literal" />

                     </input>

              </operation>

             

              <operation name="EchoString">

                     <soap:operation soapAction="http://tempuri.org/ServicePortType/EchoString" style="document" />

                     <input name="EchoString"><soap:body use="literal" /></input>

                     <output name="EchoStringResponse"><soap:body use="literal" /></output>

              </operation>

             

              <operation name="EchoStringAction">

                     <soap:operation soapAction="http://tempuri.org/EchoStringAction" style="document" />

                     <input><soap:body use="literal" /></input>

                     <output><soap:body use="literal" /></output>

              </operation>

             

              <operation name="EchoStringSecure">

                     <soap:operation soapAction="http://tempuri.org/ServicePortType/EchoStringSecure" style="document" />

                     <input name="EchoStringSecure"><soap:body use="literal" /></input>

                     <output name="EchoStringSecureResponse"><soap:body use="literal" /></output>

              </operation>

             

              <operation name="EchoFault">

                     <soap:operation soapAction="http://tempuri.org/ServicePortType/Echofault" style="document" />

                     <input name="Echofault"><soap:body use="literal" /></input>

                     <output name="EchofaultResponse"><soap:body use="literal" /></output>

              </operation>

             

              <operation name="EchoString2">

                     <soap:operation soapAction="http://TEMPURI.org/ServicePortType/EchoString" style="document" />

                     <input name="EchoString"><soap:body use="literal" /></input>

                     <output name="EchoStringResponse"><soap:body use="literal" /></output>

              </operation>

       </binding>

      

       <service name="Service">

              <port name="ServicePort" binding="s0:ServiceBinding">

                     <soap:address location="http://microsoft.com/wsaService/service.ashx" />

              </port>

       </service>

</definitions>