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"> </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° </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/">scenario9 2</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>