Web Services Addressing 1.0 - Core

Editors' copy $Date: 2005/07/12 18:46:50 $ @@ @@@@ @@@@

This version:
ws-addr-core.html
Latest version:
http://dev.w3.org/cvsweb/~checkout~/2004/ws/addressing/ws-addr-core
Previous versions:
http://www.w3.org/TR/2005/WD-ws-addr-core-20050215
Editors:
Martin Gudgin, Microsoft Corp
Marc Hadley, Sun Microsystems, Inc

This document is also available in these non-normative formats: .


Abstract

Web Services Addressing provides transport-neutral mechanisms to address Web services and messages. Web Services Addressing 1.0 - Core (this document) defines a set of abstract properties and an XML Infoset [ XML Information Set ] representation thereof to reference Web services and to facilitate end-to-end addressing of endpoints in messages. This specification enables messaging systems to support message transmission through networks that include processing nodes such as endpoint managers, firewalls, and gateways in a transport-neutral manner.

Status of this Document

This document is an editors' copy that has no official standing.


Table of Contents

1. Introduction
    1.1 Notational Conventions
    1.2 Namespaces
2. Endpoint References
    2.1 Information Model for Endpoint References
    2.2 Endpoint Reference XML Infoset Representation
    2.3 Endpoint Reference Comparison
    2.4 Endpoint Reference Lifecycle
    2.5 Endpoint Reference Extensibility
3. Message Addressing Properties
    3.1 Abstract Property Definitions
    3.2 XML Infoset Representation of Message Addressing Properties
        3.2.1 Comparing IRIs
    3.3 Formulating a Reply Message
4. Security Considerations
5. References

Appendices

A. Acknowledgements (Non-Normative)
B. Change Log (Non-Normative)
    B.1 <a href="#id2272760"> Changes Since Last Call Working Draft
    B.2 <a href="#id2272774"> Changes Since Second Working Draft
    B.3 <a href="#id2272788"> Changes Since First Working Draft
    B.4 <a href="#id2272802"> Changes Since Submission


1. Introduction

Web Services Addressing 1.0 - Core (WS-Addressing) defines two constructs, message addressing properties and endpoint references, that normalize the information typically provided by transport protocols and messaging systems in a way that is independent of any particular transport or messaging system.

A Web service endpoint is a (referenceable) entity, processor, or resource to which Web service messages can be addressed. Endpoint references convey the information needed to address a Web service endpoint.

This specification defines a family of message addressing properties that convey end-to-end message characteristics including references for source and destination endpoints and message identity that allows uniform addressing of messages independent of the underlying transport.

Both of these constructs are designed to be extensible and re-usable so that other specifications can build on and leverage endpoint references and message addressing properties.

The following example illustrates the use of these mechanisms in a SOAP 1.2 message being sent from http://example.com/business/client1 to http://example.com/fabrikam/Purchasing (see Web Services Addressing 1.0 - SOAP Binding[ WS-Addressing-SOAP ] for more information on the use of WS-Addressing in SOAP):

Example 1-1. Use of message addressing properties in a SOAP 1.2 message.

(01) <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"      
                xmlns:wsa="http://www.w3.org/@@@@/@@/addressing">
(02)   <S:Header>
(03)    <wsa:MessageID>http://example.com/6B29FC40-CA47-1067-B31D-00DD010662DA</wsa:MessageID>
(04)    <wsa:ReplyTo>
(05)      <wsa:Address>http://example.com/business/client1</wsa:Address>
(06)    </wsa:ReplyTo>
(07)    <wsa:To>http://example.com/fabrikam/Purchasing</wsa:To>
(08)    <wsa:Action>http://example.com/fabrikam/SubmitPO</wsa:Action>
(09)   </S:Header>
(10)   <S:Body>
(11)     ...
(12)   </S:Body>
(13) </S:Envelope>

Lines (02) to (09) represent the header of the SOAP message where the mechanisms defined in the specification are used. The body is represented by lines (10) to (12).

Lines (03) to (08) contain the message addressing header blocks. Specifically, line (02) specifies the identifier for this message and lines (04) to (06) specify the endpoint to which replies to this message should be sent as an endpoint reference. Line (07) specifies the address URI of the ultimate receiver of this message. Line (08) specifies an action URI identifying expected semantics.

1.1 Notational Conventions

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [ IETF RFC 2119 ].

When describing abstract data models, this specification uses the notational convention used by the XML Infoset [ XML Information Set ]. Specifically, abstract property names always appear in square brackets (e.g., [some property]).

When describing concrete XML schemas [ <cite> <a href= "#XMLSchemaP1"> XML Schema Structures </a> </cite>, <cite> <a href= "#XMLSchemaP2"> XML Schema Datatypes </a> </cite> ], information items, this specification uses the notational convention of WS-Security [ <a href= "#WS-Security"> WS-Security ]. Specifically, each member of an Element Information Item's [children] or [attributes] property is described using an XPath-like notation (e.g., /x:MyHeader/x:SomeProperty/@value1). The use of {any} indicates the presence of an element wildcard (<xs:any/>). (<xs:any/> in XML Schema 1.0 for XML 1.0 serialization). The use of @{any} indicates the presence of an attribute wildcard (<xs:anyAttribute/>). (<xs:anyAttribute/> in XML Schema 1.0 for XML 1.0 serialization). In addition, where pseudo-schemas are provided for a component, they use BNF-style conventions for attributes and elements: "?" denotes optionality (i.e. zero or one occurrences), "*" denotes zero or more occurrences, "+" one or more occurrences, "[" and "]" are used to form groups, and "|" represents choice. Attributes are conventionally assigned a value which corresponds to their type, as defined in the normative schema. Elements with simple content are conventionally assigned a value which corresponds to the type of their content, as defined in the normative schema.

When defining the cardinality of endpoint reference properties and message addressing properties, this specification uses the following notation: ( n .. m ), where n is the minimum allowed number of ocurrances of the property and m is the maximum allowed number of occurances. When n has the same value as m then exactly that number of ocurrances of the property must be present in the associated endpoint reference or message.

1.2 Namespaces

This specification uses a number of namespace prefixes throughout; they are listed in Table 1-1 . Note that the choice of any namespace prefix is arbitrary and not semantically significant (see [ XML Namespaces ]).

Table 1-1. Prefixes and Namespaces used in this specification
Prefix Namespace
S http://www.w3.org/2003/05/soap-envelope
wsa http://www.w3.org/@@@@/@@/addressing
xs http://www.w3.org/2001/XMLSchema

WS-Addressing may be used with SOAP [ SOAP 1.2 Part 1: Messaging Framework , SOAP 1.1 ] as described in Web Services Addressing 1.0 - SOAP Binding[ WS-Addressing-SOAP ]. WS-Addressing may be used with WSDL [ WSDL 2.0 , WSDL 1.1 ] described services as described in Web Services Addressing 1.0 - WSDL Binding[ WS-Addressing-WSDL ]. Examples in this specification use an XML 1.0 [ XML 1.0 ] representation but this is not a requirement.

All information items defined by this specification are identified by the XML namespace URI [ XML Namespaces ] http://www.w3.org/@@@@/@@/addressing . A normative XML Schema [ XML Schema Structures , XML Schema Datatypes ] document for XML 1.0 serialization can be obtained by dereferencing the XML namespace URI.

2. Endpoint References

This section defines the information model and syntax of an endpoint reference.

This specification introduces the endpoint reference, a construct designed to support the following usage scenarios:

2.1 Information Model for Endpoint References

An endpoint reference consists of the following abstract properties:

[address] : IRI (1..1)

An absolute IRI representing the address of the endpoint. This specification introduces two predefined [address] values as shown in Table 2-1 .

Table 2-1. Predefined [address] values
URI Description
"http://www.w3.org/@@@@/@@/addressing/anonymous" Due to the range of network technologies currently in wide-spread use (e.g., NAT, DHCP, firewalls), many deployments cannot assign a meaningful global IRI to a given endpoint. This URI is used to allow such endpoints to send and receive messages. Messages sent to EPRs whose [address] is this value MUST rely on some out-of-band mechanism for delivery (e.g. using a pre-existing transport connection) from a prior interaction.
"http://www.w3.org/@@@@/@@/addressing/none" Messages sent to EPRs whose [address] is this value MUST be discarded (i.e. not sent). This URI is typically used in EPRs that designate a reply or fault endpoint (see section 3.1 Abstract Property Definitions ) to indicate that no reply or fault message should be sent.

[reference parameters] : xs:any {any} (xs:any for an XML 1.0 serialization) (0..unbounded).

A reference may contain a number of individual parameters that are associated with the endpoint to facilitate a particular interaction. Reference parameters are namespace-qualified element information items that are required to properly interact with the endpoint. Reference parameters are provided by the issuer of the endpoint reference and are assumed to be opaque to other users of an endpoint refernce. The binding of reference parameters to messages depends upon the protocol binding used to interact with the endpoint - Web Services Addressing 1.0 - SOAP Binding[ WS-Addressing-SOAP ] describes the default binding for the SOAP protocol.

[metadata] : xs:any {any} (xs:any for an XML 1.0 serialization) (0..unbounded)

A reference may contain metadata that describes the behavior, policies and capabilities of the endpoint. Metadata may be included in an endpoint reference to facilitate easier processing by a user of an endpoint reference, or because the metadata was dynamically generated.

The metadata embedded in an EPR is not necessarily a complete statement of the metadata pertaining to the endpoint. Moreover, while embedded metadata is necessarily valid at the time the EPR is initially created it may become stale at a later point in time.

To deal with conflicts between the embedded metadata of two EPRs that have the same [address], or between embedded metadata and metadata obtained from a different source, or to ascertain the current validity of embedded metadata, mechanisms that are outside of the scope of this specification, such as EPR life cycle information (see 2.4 Endpoint Reference Lifecycle ) or retrieval of metadata from an authoritative source, SHOULD be used.

2.2 Endpoint Reference XML Infoset Representation

This section defines an XML Infoset-based representation for an endpoint reference as both an XML type (wsa:EndpointReferenceType) element (<wsa:EndpointReference>) and as an XML element (<wsa:EndpointReference>). type (wsa:EndpointReferenceType) for XML 1.0 serialization which MAY be used wherever a Web service endpoint is referenced in an XML 1.0 document. For brevity simple XML terms are used, e.g. 'element' instead of 'element information item' - this is not intended to constrain use of the constructs defined in this section to textual XML representations.

deleted text: <p> The wsa:EndpointReferenceType type is used wherever a Web service endpoint is referenced. The following describes the contents of this type: </p>
<wsa:EndpointReference>


    <wsa:Address><i>xs:anyURI</i></wsa:Address>
    <wsa:ReferenceParameters><i>xs:any</i>*</wsa:ReferenceParameters> ?
    <wsa:Metadata><i>xs:any</i>*</wsa:Metadata>?



    <wsa:Address>IRI</wsa:Address>
    <wsa:ReferenceParameters>{any}*</wsa:ReferenceParameters> ?
    <wsa:Metadata>{any}*</wsa:Metadata>?


</wsa:EndpointReference>

The following describes the attributes and elements listed in the schema overview above:

/wsa:EndpointReference

This represents some element of type wsa:EndpointReferenceType. an Endpoint Reference. This example uses the predefined <wsa:EndpointReference> element, but any element of the same type (of the wsa:EndpointReferenceType for an XML 1.0 serialization) may be used.

/wsa:EndpointReference/wsa:Address

This REQUIRED element (whose element, whose content is of an IRI (of type xs:anyURI) xs:anyURI for an XML 1.0 serialization), specifies the [address] property of the endpoint reference.

/wsa:EndpointReference/wsa:Address/@{any}

This is an extensibility mechanism to allow additional attributes to be specified.

/wsa:EndpointReference/wsa:ReferenceParameters

This OPTIONAL element may contain elements from any namespace. Such elements form the [reference parameters] of the reference.

/wsa:EndpointReference/wsa:ReferenceParameters/@{any}

This is an extensibility mechanism to allow additional attributes to be specified.

/wsa:EndpointReference/wsa:ReferenceParameters/{any}

Each element information item found in [reference parameters] (including all of that elements [children], [attributes] and [in-scope namespaces]) is represented as is.

/wsa:EndpointReference/wsa:Metadata

This OPTIONAL element may contain elements from any namespace. Such elements form the metadata that is relevant to the interaction with the endpoint.

/wsa:EndpointReference/wsa:Metadata/{any}

Each child element of Metadata represents an individual piece of metadata.

/wsa:EndpointReference/wsa:Metadata/{@any}

This is an extensibility mechanism to allow additional attributes to be specified. Some examples in this specification show use of this extensibility point to include a wsdlLocation[ WSDL 2.0 ] attribute to provide a hint for the location of a WSDL description of the service deployed at the endpoint.

/wsa:EndpointReference/{any}

This is an extensibility mechanism to allow additional elements to be specified.

/wsa:EndpointReference/@{any}

This is an extensibility mechanism to allow additional attributes to be specified.

The following shows an example endpoint reference. This element references the the endpoint at the URI "http://example.com/fabrikam/acct".

Example 2-1. Example endpoint reference.

<wsa:EndpointReference xmlns:wsa="http://www.w3.org/@@@@/@@/addressing">
   <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
</wsa:EndpointReference>
      

2.3 Endpoint Reference Comparison

This specification provides no concept of endpoint identity and therefore does not provide any mechanism to determine equality or inequality of EPRs and does not specify the consequences of their equality or inequality. However, note that it is possible for other specifications to provide a comparison function that is applicable within a limited scope.

2.4 Endpoint Reference Lifecycle

This specification does not define a lifecycle model for endpoint references and does not address the question of time-to-live for endpoint references. Other specifications that build on or use WS-Addressing may define a lifecycle model for endpoint references created according to that specification.

2.5 Endpoint Reference Extensibility

As noted in 2.2 Endpoint Reference XML Infoset Representation endpoint references are extensible. When extension attributes or elements appear as part of an endpoint reference, the processing model for such extensions is defined by the specification for those extensions. Software that processes endpoint references can safely ignore any such extensions that it does not recognise or understand.

Extension elements and attributes MAY add additional properties to an endpoint reference in addition to those specified in 2.1 Information Model for Endpoint References . Endpoint reference extensions MAY modify the value of one or more existing properties of an endpoint reference. Extensions MAY modify the rules for binding endpoint reference properties to message addressing properties, or otherwise indicate that a different binding be used.

Note that this ability to modify existing properties and binding behavior, when coupled with the fact that software can ignore unknown or unrecognised extensions, may result in a difference in behaviour depending on whether such an extended endpoint reference is processed by software that understands the extension(s). When designing endpoint reference extensions designers should consider whether they desire standard processing per this specification in cases where their extension is not recognized or understood.

3. Message Addressing Properties

This section defines the information model and syntax of message addressing properties.

Note:

The Working Group requests feedback regarding the mechanism for and description of Message Addressing Property extensibility beyond the MEPs currently described in the WSDL specifications, along with use cases that illustrate how referencing specifications and other users of Addressing intend to extend them. Although the Working Group has resolved upon a particular design , some participants believe it is not adequately specified. Such feedback will help the Working Group determine whether it needs to re-examine this issue.

Message addressing properties provide references for the endpoints involved in an interaction. The use of these properties to support specific interactions is in general defined by both the semantics of the properties themselves and the implicit or explicit contract that governs the message exchange. If explicitly available, this contract can take different forms including but not being limited to WSDL MEPs and interfaces; business processes and e-commerce specifications, among others, can also be used to define explicit contracts between the parties.

The basic interaction pattern from which all others are composed is "one-way". In this pattern a source sends a message to a destination without any further definition of the interaction. "Request-response" is a common interaction pattern that consists of an initial message sent by a source endpoint (the request) and a subsequent message sent from the destination of the request back to the source (the response). A response in this case can be either an application message, a fault, or any other message. Note, however, that reply messages may be sent as part of other message exchanges as well, and are not restricted to the usual single Request, single Response pattern, or to a particular WSDL transmission primitive or MEP. The contract between the interacting parties may specify that multiple or even a variable number of replies be delivered.

The set of message addressing properties defined in this specification is sufficient for many simple variations of one-way and request-response MEPs. More advanced MEPs may require additional message addressing properties to augment the facilities provided here.

3.1 Abstract Property Definitions

Message addressing properties collectively augment a message with the following abstract properties to support one-way, request-response, and other interaction patterns:

[destination] : IRI (1..1)

An absolute IRI representing the address of the intended receiver of this message.

[source endpoint] : endpoint reference (0..1)

Reference to the endpoint from which the message originated.

[reply endpoint] : endpoint reference (0..1)

An endpoint reference for the intended receiver for replies to this message.

[fault endpoint] : endpoint reference (0..1)

An endpoint reference for the intended receiver for faults related to this message.

[action] : IRI (1..1)

An absolute IRI that uniquely identifies the semantics implied by this message.

It is RECOMMENDED that the value of the [action] property is an IRI identifying an input, output, or fault message within a WSDL interface or port type. An action may be explicitly or implicitly associated with the corresponding WSDL definition. Web Services Addressing 1.0 - WSDL Binding[ WS-Addressing-WSDL ] describes the mechanisms of association.

[message id] : IRI (0..1)

An absolute IRI that uniquely identifies the message. When present, it is the responsibility of the sender to ensure that each message is uniquely identified. The behavior of a receiver when receiving a message that contains the same [message id] as a previously received message is unconstrained by this specification.

[relationship] : (IRI, IRI) (0..unbounded)

A pair of values that indicate how this message relates to another message. The type of the relationship is identified by an absolute IRI. The related message is identified by an absolute IRI that corresponds to the related message's [message id] property. The message identifier IRI may refer to a specific message, or be the following pre-defined URI that means "unspecified message": "http://www.w3.org/@@@@/@@/addressing/unspecified"

This specification has one predefined relationship type as shown in Table 3-1 .

Table 3-1. Predefined [relationship] values
URI Description
"http://www.w3.org/@@@@/@@/addressing/reply" Indicates that this is a reply to the message identified by the [message id] IRI.

[reference parameters] : xs:any {any} (xs:any for an XML 1.0 serialization) (0..unbounded).

Corresponds to the value of the [reference parameters] property of the endpoint reference to which the message is addressed.

The [destination] and [action] properties indicate the target processing location and the verb or intent of the message respectively. The values of these properties can be used to facilitate the dispatch of messages.

A binding of WS_Addressing message addressing properties MUST reflect the property cardinality shown above. Web Services Addressing 1.0 - SOAP Binding[ WS-Addressing-SOAP ] defines such a binding for the SOAP [ SOAP 1.2 Part 1: Messaging Framework , SOAP 1.1 ] protocol.

3.2 XML Infoset Representation of Message Addressing Properties

The following shows the XML Infoset representation of the message addressing properties defined in 3.1 Abstract Property Definitions :



<<b>wsa:To</b>><i>xs:anyURI</i></<b>wsa:To</b>>
<<b>wsa:From</b>><i>wsa:EndpointReferenceType</i></<b>wsa:From</b>>
<<b>wsa:ReplyTo</b>><i>wsa:EndpointReferenceType</i></<b>wsa:ReplyTo</b>>
<<b>wsa:FaultTo</b>><i>wsa:EndpointReferenceType</i></<b>wsa:FaultTo</b>>
<<b>wsa:Action</b>><i>xs:anyURI</i></<b>wsa:Action</b>>
<<b>wsa:MessageID</b>><i>xs:anyURI</i></<b>wsa:MessageID</b>>
<<b>wsa:RelatesTo</b> RelationshipType="<i>xs:anyURI</i>"?><i>xs:anyURI</i></<b>wsa:RelatesTo</b>>
<<b>wsa:ReferenceParameters</b>><i>xs:any</i>*</<b>wsa:ReferenceParameters</b>>



<wsa:To>IRI</wsa:To>
<wsa:From>Endpoint Reference</wsa:From>
<wsa:ReplyTo>Endpoint Reference</wsa:ReplyTo>
<wsa:FaultTo>Endpoint Reference</wsa:FaultTo>
<wsa:Action>IRI</wsa:Action>
<wsa:MessageID>IRI</wsa:MessageID>
<wsa:RelatesTo RelationshipType="IRI"?>IRI</wsa:RelatesTo>
<wsa:ReferenceParameters>{any}*</wsa:ReferenceParameters>


                    

The following describes the attributes and elements listed in the schema overview above:

/wsa:To

This OPTIONAL element (whose element, whose content is of an IRI (of type xs:anyURI) xs:anyURI for an XML 1.0 serialization), provides the value for the [destination] property. If this element is NOT present then the value of the [destination] property is "http://www.w3.org/@@@@/@@/addressing/anonymous".

/wsa:From

This OPTIONAL element element, an Endpoint Reference as defined in 2.2 Endpoint Reference XML Infoset Representation (of type wsa:EndpointReferenceType) wsa:EndpointReferenceType for an XML 1.0 serialization), provides the value for the [source endpoint] property.

/wsa:ReplyTo

This OPTIONAL element element, an Endpoint Reference as defined in 2.2 Endpoint Reference XML Infoset Representation (of type wsa:EndpointReferenceType) wsa:EndpointReferenceType for an XML 1.0 serialization), provides the value for the [reply endpoint] property. If this element is NOT present then the value of the [address] property of the [reply endpoint] EPR is "http://www.w3.org/@@@@/@@/addressing/anonymous".

/wsa:FaultTo

This OPTIONAL element element, an Endpoint Reference as defined in 2.2 Endpoint Reference XML Infoset Representation (of type wsa:EndpointReferenceType) wsa:EndpointReferenceType for an XML 1.0 serialization), provides the value for the [fault endpoint] property.

/wsa:Action

This REQUIRED element (whose element, whose content is of an IRI (of type xs:anyURI) xs:anyURI for an XML 1.0 serialization), conveys the value of the [action] property.

/wsa:MessageID

This OPTIONAL element (whose element, whose content is of an IRI (of type xs:anyURI) xs:anyURI for an XML 1.0 serialization), conveys the [message id] property.

/wsa:RelatesTo

This OPTIONAL (repeating) element information item contributes one abstract [relationship] property value, in the form of an (IRI, IRI) pair. The content of this element (of type xs:anyURI) xs:anyURI for an XML 1.0 serialization) conveys the [message id] of the related message.

/wsa:RelatesTo/@RelationshipType

This OPTIONAL attribute attribute, whose content is an IRI (of type xs:anyURI) xs:anyURI for an XML 1.0 serialization), conveys the relationship type as an IRI. type. When absent, the implied value of this attribute is "http://www.w3.org/@@@@/@@/addressing/reply".

/[reference parameters]*

Each element information item found in [reference parameters] (including all of that elements [children], [attributes] and [in-scope namespaces]) is represented as is.

Note that each of the element information items described above allows attribute wildcards for future extensibility. A message processor may safely ignore any extension attribute it does not recognize.

3.2.1 Comparing IRIs

The values of the Message Addressing Properties [action], [message id], and [relationship] are absolute IRIs. The purpose of these IRIs is primarily identification, rather than resource retrieval. As such, simple string comparison, as indicated in Internationalized Resource Identifiers IETF RFC 3987 section 5.3.1, is sufficient to determine equivalence of these IRIs.

Comparison of [destination] property values is out of scope, other than using simple string comparison to detect whether the value is anonymous, that is, where [destination] has the value "http://www.w3.org/@@@@/@@/addressing/anonymous".

3.3 Formulating a Reply Message

This section specifies the WS-Addressing-specific rules for creating a reply or fault message related to another message.

  1. Select the appropriate EPR:

    • If the reply is a normal message, select the EPR from the related message's [reply endpoint] message addressing property. If none is present, the processor MUST fault.

      Note:

      When using the XML Infoset representation, in the absence of a wsa:ReplyTo element the value of the [reply endpoint] message addressing property defaults to an EPR with an [address] property of "http://www.w3.org/@@@@/@@/addressing/anonymous" - see section 3.2 XML Infoset Representation of Message Addressing Properties .

    • Otherwise, if the reply is a fault message and the related message's [fault endpoint] message addressing property is not empty, select the EPR from that property. If the [fault endpoint] property is empty, select the EPR from the related message's [reply endpoint] message addressing property. Otherwise, if the [reply endpoint] property is empty, the behavior of the recipient of the related message is unconstrained by this specification.

    • In either of the above cases, if the related message lacks a [message id] property, the processor MUST fault.

  2. If the selected EPR's [address] property is "http://www.w3.org/@@@@/@@/addressing/none" the reply message is discarded, if not then populate the reply message's message addressing properties:

    • [destination]: this property takes the value of the selected EPR's [address] property.

    • [relationship]: this property MUST include a pair of IRIs as follows; the relationship type is the predefined reply URI "http://www.w3.org/@@@@/@@/addressing/reply" and the related message's identifier is the [message id] property value from the message being replied to; other relationships MAY be expressed in this property

    • [reference parameters]: this property takes the value of the selected EPR's [reference parameters] property

The following example illustrates a message containing message addressing properties serialized as header blocks in a SOAP 1.2 message:

Example 3-1. Example message.

<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"
  xmlns:wsa="http://www.w3.org/@@@@/@@/addressing">
  <S:Header> 
  <wsa:MessageID>http://example.com/someuniquestring</wsa:MessageID>
    <wsa:ReplyTo>
      <wsa:Address>http://example.com/business/client1</wsa:Address>
    </wsa:ReplyTo>
    <wsa:To>mailto:fabrikam@example.com</wsa:To>
    <wsa:Action>http://example.com/fabrikam/mail/Delete</wsa:Action>
  </S:Header>
  <S:Body>
    <f:Delete xmlns:f="http://example.com/fabrikam">     
       <maxCount>42</maxCount>
    </f:Delete>
  </S:Body>
</S:Envelope>
      

This message would have the following property values:

  • [destination]: "mailto:fabrikam@example.com"

  • [reply endpoint]: The endpoint with [address] "http://example.com/business/client1"

  • [action]: "http://example.com/fabrikam/mail/Delete"

  • [message id]: "http://example.com/someuniquestring"

The following example illustrates a reply to the above message:

Example 3-2. Example reply message.

<S:Envelope
  xmlns:S="http://www.w3.org/2003/05/soap-envelope" 
  xmlns:wsa="http://www.w3.org/@@@@/@@/addressing">
  <S:Header>
    <wsa:MessageID>http://example.com/someotheruniquestring</wsa:MessageID>
    <wsa:RelatesTo>http://example.com/someuniquestring</wsa:RelatesTo>
    <wsa:To>http://example.com/business/client1</wsa:To>
    <wsa:Action>http://example.com/fabrikam/mail/DeleteAck</wsa:Action>
  </S:Header>
  <S:Body>
    <f:DeleteAck xmlns:f="http://example.com/fabrikam"/>
  </S:Body>
</S:Envelope>
      

This message would have the following property values:

  • [destination]: "http://example.com/business/client1"

  • [action]: "http://example.com/fabrikam/mail/DeleteAck"

  • [message id]: "http://example.com/someotheruniquestring"

  • [relationship]: ("http://www.w3.org/@@@@/@@/addressing/reply", "http://example.com/someuniquestring")

4. Security Considerations

Users of WS-Addressing and EPRs (i.e., entities creating and receiving Message Addressing Properties and EPRs) SHOULD only use EPRs from sources they trust. For example, such users might rely on the presence of a verifiable signature by a trusted party over the EPR, or an out-of-band means of establishing trust, to determine whether they should use a particular EPR.

EPRs and message addressing properties SHOULD be integrity-protected to prevent tampering. Such optional integrity protection might be provided by the transport, a message level signature, or use of an XML digital signature within EPRs.

To prevent information disclosure, EPR issuers SHOULD NOT put sensitive information into the [address] or [reference parameters] properties.

Some processors may use message identifiers ([message id]) as part of a uniqueness metric in order to detect replays of messages. In this case, care should be taken to ensure that for purposes of replay detection, the message identifier is combined with other data, such as a timestamp, so that a legitimate retransmission of the message is not confused with a replay attack. It is also advisable to use message identifiers that are not predictable, to prevent attackers from constructing and sending an unsolicited reply to a message without having to see the actual message.

When [reply endpoint] and/or [fault endpoint] do not contain the anonymous URI, the processor of such an EPR should take care to avoid a denial of service attack caused by opening an excessive number network connections, which are typically a scarce resource.

Care should be taken to avoid participating in a denial of service attack in which an attacker sends messages to many receivers and includes a [reply endpoint] or [fault endpoint] for the target of the attack.

5. References

[WS-Addressing-SOAP]
Web Services Addressing 1.0 - SOAP Binding , M. Gudgin, M. Hadley, Editors.
[WS-Addressing-WSDL]
Web Services Addressing 1.0 - WSDL Binding , M. Gudgin, M. Hadley, Editors.
[WSDL 2.0]
Web Services Description Language 2.0 , R. Chinnici, M. Gudgin, J. J. Moreau, J. Schlimmer, S. Weerawarana, Editors. World Wide Web Consortium, 3 August 2004. This version of the WSDL 2.0 specification is http://www.w3.org/TR/2005/WD-wsdl20-20050510. The latest version of WSDL 2.0 is available at http://www.w3.org/TR/wsdl20.
[IETF RFC 2119]
Key words for use in RFCs to Indicate Requirement Levels , S. Bradner. Internet Engineering Task Force, June 1999. Available at http://www.ietf.org/rfc/rfc2119.txt.
[IETF RFC 3987]
Internationalized Resource Identifiers (IRIs) M. Duerst, M. Suignard, January 2005. Available at http://www.ietf.org/rfc/rfc3987.txt.
[XML 1.0]
Extensible Markup Language (XML) 1.0 (Third Edition) , T. Bray, J. Paoli, C. M. Sperberg-McQueen, and E. Maler, Editors. World Wide Web Consortium, 4 February 2004. This version of the XML 1.0 Recommendation is http://www.w3.org/TR/2004/REC-xml-20040204. The latest version of XML 1.0 is available at http://www.w3.org/TR/REC-xml.
[XML Namespaces]
Namespaces in XML , T. Bray, D. Hollander, and A. Layman, Editors. World Wide Web Consortium, 14 January 1999. This version of the XML Information Set Recommendation is http://www.w3.org/TR/1999/REC-xml-names-19990114. The latest version of Namespaces in XML is available at http://www.w3.org/TR/REC-xml-names.
[XML Information Set]
XML Information Set , J. Cowan and R. Tobin, Editors. World Wide Web Consortium, 24 October 2001. This version of the XML Information Set Recommendation is http://www.w3.org/TR/2001/REC-xml-infoset-20011024. The latest version of XML Information Set is available at http://www.w3.org/TR/xml-infoset.
[XML Schema Structures]
XML Schema Part 1: Structures Second Edition , H. Thompson, D. Beech, M. Maloney, and N. Mendelsohn, Editors. World Wide Web Consortium, 28 October 2004. This version of the XML Schema Part 1 Recommendation is http://www.w3.org/TR/2004/REC-xmlschema-1-20041028. The latest version of XML Schema Part 1 is available at http://www.w3.org/TR/xmlschema-1.
[XML Schema Datatypes]
XML Schema Part 2: Datatypes Second Edition , P. Byron and A. Malhotra, Editors. World Wide Web Consortium, 28 October 2004. This version of the XML Schema Part 2 Recommendation is http://www.w3.org/TR/2004/REC-xmlschema-2-20041028. The latest version of XML Schema Part 2 is available at http://www.w3.org/TR/xmlschema-2.
[SOAP 1.2 Part 1: Messaging Framework]
SOAP Version 1.2 Part 1: Messaging Framework , M. Gudgin, M. Hadley, N. Mendelsohn, J-J. Moreau, H. Frystyk Nielsen, Editors. World Wide Web Consortium, 24 June 2003. This version of the "SOAP Version 1.2 Part 1: Messaging Framework" Recommendation is http://www.w3.org/TR/2003/REC-soap12-part1-20030624/. The latest version of "SOAP Version 1.2 Part 1: Messaging Framework" is available at http://www.w3.org/TR/soap12-part1/.
[SOAP 1.1]
Don Box, et al, Simple Object Access Protocol (SOAP) 1.1 , May 2000.
[WSDL 1.1]
E. Christensen, et al, Web Services Description Language (WSDL) 1.1 , March 2001.
[WS-Security]
OASIS, Web Services Security: SOAP Message Security , March 2004.

A. Acknowledgements (Non-Normative)

This document is the work of the W3C Web Service Addressing Working Group .

Members of the Working Group are (at the time of writing, and by alphabetical order): Abbie Barbir (Nortel Networks), Rebecca Bergersen (IONA Technologies, Inc.), Andreas Bjärlestam (ERICSSON), Ugo Corda (SeeBeyond Technology Corporation), Francisco Curbera (IBM Corporation), Glen Daniels (Sonic Software), Paul Downey (BT), Jacques Durand (Fujitsu Limited), Michael Eder (Nokia), Robert Freund (Hitachi, Ltd.), Yaron Goland (BEA Systems, Inc.), Martin Gudgin (Microsoft Corporation), Arun Gupta (Sun Microsystems, Inc.), Hugo Haas (W3C/ERCIM), Marc Hadley (Sun Microsystems, Inc.), David Hull (TIBCO Software, Inc.), Yin-Leng Husband (HP), Anish Karmarkar (Oracle Corporation), Paul Knight (Nortel Networks), Philippe Le Hégaret (W3C/MIT), Mark Little (Arjuna Technologies Ltd.), Jonathan Marsh (Microsoft Corporation), Jeff Mischkinsky (Oracle Corporation), Nilo Mitra (ERICSSON), Eisaku Nishiyama (Hitachi, Ltd.), Mark Nottingham (BEA Systems, Inc.), Ales Novy (Systinet Inc.), David Orchard (BEA Systems, Inc.), Mark Peel (Novell, Inc.), Tony Rogers (Computer Associates), Tom Rutt (Fujitsu Limited), Rich Salz (DataPower Technology, Inc.), Davanum Srinivas (Computer Associates), Jiri Tejkl (Systinet Inc.), Greg Truty (IBM Corporation), Steve Vinoski (IONA Technologies, Inc.), Pete Wenzel (SeeBeyond Technology Corporation), Steve Winkler (SAP AG), Ümit Yalçınalp (SAP AG), Prasad Yendluri (webMethods, Inc.).

Previous members of the Working Group were: Lisa Bahler (SAIC - Telcordia Technologies), Marc Goodner (SAP AG), Harris Reynolds (webMethods, Inc.).

The people who have contributed to discussions on public-ws-addressing@w3.org are also gratefully acknowledged.

B. Change Log (Non-Normative)

<a name="id2272760" id="id2272760"> B.1 Changes Since Last Call Working Draft

Date Editor Description
2005-07-19 @ 19:13 mhadley Added resolution to issue lc101, lc104 - clarified extensibility of abstract properties
2005-07-19 @ 18:46 mhadley Added revised resolution to issue lc20 - clarified meaning of anonymous uri in SOAP
2005-07-19 @ 18:28 mhadley Added revised resolution to issue lc68 - updated text warning designers of EPR extensions that default processing prevails when their extension is not understood
2005-07-12 @ 18:46 mhadley Added resolution to issues lc69, lc108 - made wsa:ReplyTo default to anonymous, added new predefined address URI that designates no reply/fault
2005-07-12 @ 15:57 mhadley Added resolution to issue 107 - assorted editorial fixes wrt alignment with WSDL terminology
2005-07-11 @ 19:58 mhadley Added resolution to issue lc90 - clarified use of message id as uniqueness metric
2005-06-21 @ 17:46 mhadley Added resolution to issues lc75 and lc88 - updated description of [message id]
2005-06-20 @ 19:08 mhadley Added resolution to issue lc106 - updated pseudo schemas to match the notational conventions used by WSDL 2.0
2005-06-03 @ 20:33 mhadley Added resolutions to issues lc58, lc79, lc91, lc102
2005-06-02 @ 19:48 mhadley Added resolution to issue lc78 - reworked formulating reply message text related to [relationship] to make it clear that the reply relationsship is not added top the relationships specified in the message being replied to
2005-06-02 @ 19:39 mhadley Added resolution to issue lc84 - removed redundant co-occurrence requirements and concentrated conformance requirements in section 3.3
2005-06-02 @ 18:47 mhadley Added resolution to issue lc89 - assorted editorial fixes
2005-06-02 @ 18:15 mhadley Added resolution to issue lc37 - added DOS attack security considerations
2005-06-02 @ 18:07 mhadley Added explanation of cardinality notation
2005-05-25 @ 21:40 mhadley Added new section in changelog to account for previous draft publication
2005-05-25 @ 20:25 mhadley Added resolution to issue lc39 - changed mandatory to 1..1
2005-05-25 @ 20:20 mhadley Added resolution to issue lc66 - made it clear that type often refers to the content of elements rather than the element as a whole which can often also include attributes
2005-05-18 @ 19:49 mhadley Added lc81 resolution - remove mustUnderstand attributes from examples
2005-05-18 @ 19:35 mhadley Added lc51 resolution - reordered property list to match order in core
2005-05-18 @ 19:22 mhadley Added lc47 resolution - fixed URL in WSDL 2.0 biblio entry
2005-05-18 @ 18:58 mhadley Added lc97 resolution - Endpoint Reference to endpoint reference
2005-05-18 @ 18:56 mhadley Added lc95 resolution - added WSDL 1.1 citation to introduction
2005-05-18 @ 18:51 mhadley Added lc94 resolution - changed element to Element Information Item
2005-05-18 @ 18:48 mhadley Added lc93 resolution - added ref to soap binding document prior to soap example in introduction
2005-05-18 @ 18:44 mhadley Added lc92 resolution - clarified document being referenced in introduction
2005-05-18 @ 18:40 mhadley Added lc80 resolution - made abstract properties into a separate list
2005-05-18 @ 18:34 mhadley Added lc74 resolution - added suggested security consideration
2005-05-18 @ 18:24 mhadley Added lc63 resolution - editorial fixes to security section
2005-05-18 @ 18:19 mhadley Added lc44 resolution - changed and to or in security section
2005-05-18 @ 18:17 mhadley Added lc43 resolution - added ref to SOAP 1.1
2005-05-18 @ 18:12 mhadley Added lc42 resolution - reordered infoset representation to match order of abstract properties
2005-05-18 @ 18:03 mhadley Added lc67 resolution - made namespace uri a link
2005-05-18 @ 17:58 mhadley Added lc64 resolution - numerous editorial fixes
2005-05-16 @ 20:28 mgudgin Fixed mismatched endtag in Section 3.1
2005-05-16 @ 20:16 mgudgin Fixed reference to RFC3987 to match format of other biblio entries
2005-04-22 @ 18:26 mhadley Added resolution to lc22 - clarified ignore rule for extension attributes.
2005-04-22 @ 18:24 mhadley Added resolution to lc21 - removed HTTP specific restriction on use of anonymous URI in [destination] for replies only.
2005-04-22 @ 18:18 mhadley Added resolution to lc19 - clarified that [destination] value comparison is out of scope except for using simple string comparison to determine whether the anonymous destination is being used.
2005-04-22 @ 18:12 mhadley Added resolution to lc18 - simplified description of wsa:To and wsa:Action elements
2005-04-22 @ 18:04 mhadley Added resolution to lc17 - clarified that anonymous destination URI is not just for use in replies
2005-04-22 @ 18:01 mhadley Added resolution to lc16 and lc54 - removed suggestion that required was required to use [destination] and [action] properties for dispatch
2005-04-22 @ 17:55 mhadley Added resolution to lc15 - clarified cardinality of [relationship] properties using predefined reply URI
2005-04-22 @ 17:50 mhadley Added resolution to lc14 - clarified reply IRI targetting
2005-04-22 @ 17:41 mhadley Added resolution to lc13 - clarified wording in description of metadata
2005-04-22 @ 17:38 mhadley Added resolution to lc12 - removed data encoding from description of reference parameters
2005-04-22 @ 17:30 mhadley Added resolution to lc10 and lc11 - clarified types and opacity of reference parameters
2005-04-22 @ 17:25 mhadley Added resolution to lc9 - changed IRI to absolute IRI where appropriate
2005-04-22 @ 16:16 mhadley Added resolution to lc8 - changed IRI to URI where used to refer to IRIs in the specification that are actually URIs
2005-04-22 @ 15:49 mhadley Added resolution to lc7 - fixed editorial nits
2005-04-22 @ 15:32 mhadley Added resolution to lc3 - removed single extensibility point from infoset representation to avoid impression that other extenisibility points are not also valid
2005-04-22 @ 15:06 mhadley Added resolution to lc2 - assorted editorial changes

<a name="id2272774" id="id2272774"> B.2 Changes Since Second Working Draft

Date Editor Description
2005-03-30 @ 21:02 plehegar Removed some extra blanks Added the note from David Hull at http://lists.w3.org/Archives/Public/public-ws-addressing/2005Mar/0254.html per teleconference March 28, 2005
2005-03-21 @ 22:36 mgudgin Incorporated resolution of issue 50 into Section 3.2
2005-03-21 @ 22:06 mgudgin Updated with resolution to issue 54
2005-03-21 @ 20:47 mgudgin Removed parenthetical statement '(and opaquely)' from description of [action] property in Section 3 per resolution on 2005-03-21 telcon
2005-03-21 @ 16:39 mgudgin s/that value/that the value in description of [action] property in Section 3
2005-03-21 @ 16:37 mgudgin Split paragraph 2 in Section 3 into two seperate paragraphs
2005-03-10 @ 03:40 mhadley Incorporated additional editorial fixes from J. Marsh.
2005-03-10 @ 03:16 mhadley Incorporated additional issue resolution text for issues 7 and 44 from H. Haas.
2005-03-02 @ 21:18 mhadley Added resolution to issue 4
2005-03-02 @ 20:30 mhadley Added resolution to issue 7
2005-03-02 @ 19:36 mhadley Added resolution to issues 22 and 51/
2005-03-02 @ 14:07 mhadley Added issue 52 resolution.
2005-02-28 @ 22:08 mhadley Added resolution to issues 24 and 26
2005-02-27 @ 21:42 mhadley Added issue 48 resolution
2005-02-27 @ 19:42 mhadley Changed URI to IRI where appropriate.
2005-02-23 @ 14:34 mgudgin Added new section 2.5: Endpoint Reference Extensibility per resolution of issue i042
2005-02-17 @ 16:16 mhadley Added resolution to issue 44
2005-02-15 @ 22:53 mhadley Added resolution to issue 46

<a name="id2272788" id="id2272788"> B.3 Changes Since First Working Draft

Date Editor Description
2005-02-01 @ 19:49 mhadley Removed several occurances of the word 'identify' when used with endpoint references. Replaced with 'reference' or 'address' as appropriate.
2005-01-23 @ 21:13 mgudgin Incorporated resolution of issue i014; edits to Section 2.3
2005-01-23 @ 20:52 mgudgin Incorporated resolution of issue i006; made wsa:To optional
2005-01-23 @ 19:32 mgudgin Incorporated resolution of Issue i001 by removing Reference Properties
2005-01-17 @ 02:13 mgudgin Incorporated Paco's proposal for resolving Issue 038
2005-01-16 @ 22:40 mgudgin s/PortType/InterfaceName in certain examples
2004-12-17 @ 16:08 mhadley Improved readability of introduction
2004-12-16 @ 18:20 mhadley Added resolution to issue 19 - WSDL version neutrality
2004-12-16 @ 16:50 mhadley Added issue 33 resolution
2004-12-14 @ 20:10 mhadley Switched back to edcopy formatting
2004-12-14 @ 20:02 mhadley Enhanced auto-changelog generation to allow specification of data ranges for logs. Split change log to show changes between early draft and first working draft and changes since first working draft.
2004-12-14 @ 18:13 mhadley Added resolutions for issues 12 (EPR lifecycle), 37 (relationship from QName to URI) and 39 (spec name versioning)

<a name="id2272802" id="id2272802"> B.4 Changes Since Submission

Date Editor Description
2004-11-23 @ 21:38 mhadley Updated titles of examples. Fixed table formatting and references. Replaced uuid URIs with http URIs in examples. Added document status.
2004-11-22 @ 15:40 mhadley Removed reference to WS-Policy
2004-11-15 @ 19:43 mhadley Fixed some inter and intra spec references.
2004-11-12 @ 21:19 mgudgin Removed TBD sections
2004-11-11 @ 18:31 mgudgin Added some TBD sections
2004-11-07 @ 02:03 mhadley Second more detailed run through to separate core, SOAP and WSDL document contents. Removed dependency on WS-Policy. Removed references to WS-Trust and WS-SecurityPolicy
2004-11-02 @ 22:25 mhadley Removed static change log and added dynamically generated change log from cvs.
2004-10-28 @ 17:05 mhadley Initial cut of separating specification into core, soap and wsdl