WS-Addressing Interop Scenarios
(c) 2002-2005 Microsoft Corporation, Inc. All rights reserved.
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
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.
This scenario tests a basic one way message.
1. Client sends a one way message to the Server
2. Server sends an HTTP 202 to the Client
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.
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
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>
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>
This scenario tests a request response with an address in the ReplyTo other than the anonymous address.
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
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.
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.
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
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
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
This scenario tests a request response without a FaultTo on the request and a service that generates a fault.
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
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>
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>
This scenario tests a request response with a non-anonymous address in the ReplyTo which contains a reference property.
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
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
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
This scenario tests a request response with an explicit wsa:Action WSDL binding
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
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>
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>
This scenario tests a request response where both request and response must be signed.
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.
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>
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>
This scenario tests a request response with a service endpoint having upper case host part in action URI
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
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>
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>
<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>