<?xml version="1.0" encoding="us-ascii"?> <!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.2//EN" "http://www.w3.org/2002/xmlspec/dtd/2.2/xmlspec.dtd"> <!-- /* * Copyright (c) 2003 World Wide Web Consortium, * * (Massachusetts Institute of Technology, European Research Consortium for * Informatics and Mathematics, Keio University). All Rights Reserved. This * work is distributed under the W3C(r) Document License [1] in the hope that * it will be useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * [1] http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231 */ --> <!-- $Id: ws-addr-core.xml,v 1.1 2005/03/31 13:28:45 plehegar Exp $ --> <?xml-stylesheet type='text/xsl' href='xmlspec-addressing.xsl'?><spec xmlns:xlink="http://www.w3.org/1999/xlink" w3c-doctype="wd" role="public"> <header> <title>Web Services Addressing 1.0 - Core</title> <w3c-designation>http://www.w3.org/TR/2005/WD-ws-addr-core-20050331</w3c-designation> <w3c-doctype>W3C Working Draft</w3c-doctype> <pubdate> <day>31</day> <month>March</month> <year>2005</year> </pubdate> <publoc> <loc href="http://www.w3.org/TR/2005/WD-ws-addr-core-20050331" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2005/WD-ws-addr-core-20050331</loc> </publoc> <altlocs> <loc role="postscript" href="ws-addr-core.ps" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">postscript</loc> <loc role="pdf" href="ws-addr-core.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PDF</loc> <loc role="xml" href="ws-addr-core.xml" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML</loc> <loc role="plain" href="ws-addr-core.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">plain text</loc> </altlocs> <prevlocs> <loc href="http://www.w3.org/TR/2005/WD-ws-addr-core-20050215" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2005/WD-ws-addr-core-20050215</loc> </prevlocs> <latestloc> <loc href="http://www.w3.org/TR/ws-addr-core" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/ws-addr-core</loc> </latestloc> <authlist> <author> <name>Martin Gudgin</name> <affiliation>Microsoft Corp</affiliation> </author> <author> <name>Marc Hadley</name> <affiliation>Sun Microsystems, Inc</affiliation> </author> </authlist> <abstract> <p>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 [<bibref ref="XMLInfoSet"/>] 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.</p> </abstract> <status id="Status"> <p> <emph>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the <loc href="http://www.w3.org/TR/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C technical reports index</loc> at http://www.w3.org/TR/.</emph> </p> <p>This is the <loc href="http://www.w3.org/2004/02/Process-20040205/tr.html#last-call" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Last Call Working Draft</loc> of the Web Services Addressing 1.0 - Core specification for review by W3C members and other interested parties. It has been produced by the <loc href="http://www.w3.org/2002/ws/addr/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Web Services Addressing Working Group</loc> (WG), which is part of the <loc href="http://www.w3.org/2002/ws/Activity" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Web Services Activity</loc>.</p> <p>If the feedback is positive, the Working Group plans to submit this specification for consideration as a <loc href="http://www.w3.org/2004/02/Process-20040205/tr.html#cfi" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Candidate Recommendation</loc>. Comments on this document are invited and are to be sent to the public <loc href="mailto:public-ws-addressing-comments@w3.org" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public-ws-addressing-comments@w3.org</loc> mailing list (<loc href="http://lists.w3.org/Archives/Public/public-ws-addressing-comments/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public archive</loc>). Comments can be sent until <b>11 May 2005</b>.</p> <p>A <loc href="diff.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">diff-marked version against the previous version of this document</loc> is available. For a detailed list of changes since the last publication of this document, please refer to appendix <specref ref="changelog"/>. Issues about this document are documented in the <loc href="http://www.w3.org/2002/ws/addr/lc-issues/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Last Call issues list</loc> maintained by the Working Group.</p> <p>Discussion of this document takes place on the <loc href="mailto:public-ws-addressing@w3.org" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public-ws-addressing@w3.org</loc> mailing list (<loc href="http://lists.w3.org/Archives/Public/public-ws-addressing/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public archive</loc>). </p> <p> This document was produced under the <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">5 February 2004 W3C Patent Policy</loc>. The Working Group maintains a <loc href="http://www.w3.org/2004/01/pp-impl/36696/status#specs" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public list of patent disclosures</loc> relevant to this document; that page also includes instructions for disclosing [and excluding] a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">section 6 of the W3C Patent Policy</loc>. </p> <!-- <p> Per <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Exclusion">section 4 of the W3C Patent Policy</loc>, Working Group participants have 150 days from the title page date of this document to exclude essential claims from the W3C RF licensing requirements with respect to this document series. Exclusions are with respect to the exclusion reference document, defined by the W3C Patent Policy to be the latest version of a document in this series that is published no later than 90 days after the title page date of this document. </p> --> <p> Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress. </p> <ednote> <edtext>The Web Services Addressing Working Group has decided to use XML Schema, where appropriate, to describe constructs defined in this specification. Note that this restricts use of Web Services Addressing to XML 1.0.</edtext> </ednote> </status> <langusage> <language id="en-US">English</language> </langusage> <revisiondesc> <p>Last Modified: $Date: 2005/03/31 13:28:45 $</p> </revisiondesc> </header> <body> <div1 id="tocRange"> <head>Introduction</head> <p>Web Services Addressing (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.</p> <p>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.</p> <p>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.</p> <p>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 information headers.</p> <p>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:</p> <example> <head>Use of message addressing properties in a SOAP 1.2 message.</head> <eg xml:space="preserve"> (001) <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/03/addressing"> (002) <S:Header> (003) <wsa:MessageID> (004) http://example.com/6B29FC40-CA47-1067-B31D-00DD010662DA (005) </wsa:MessageID> (006) <wsa:ReplyTo> (007) <wsa:Address>http://example.com/business/client1</wsa:Address> (008) </wsa:ReplyTo> (009) <wsa:To>http://example.com/fabrikam/Purchasing</wsa:To> (010) <wsa:Action>http://example.com/fabrikam/SubmitPO</wsa:Action> (011) </S:Header> (012) <S:Body> (013) ... (014) </S:Body> (015) </S:Envelope> </eg> <p>Lines (002) to (011) represent the header of the SOAP message where the mechanisms defined in the specification are used. The body is represented by lines (012) to (014).</p> <p>Lines (003) to (010) contain the message information header blocks. Specifically, lines (003) to (005) specify the identifier for this message and lines (006) to (008) specify the endpoint to which replies to this message should be sent as an Endpoint Reference. Line (009) specifies the address URI of the ultimate receiver of this message. Line (010) specifies an Action IRI identifying expected semantics.</p> </example> <div2 id="notation"> <head>Notational Conventions</head> <p>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 [<bibref ref="RFC2119"/>].</p> <p>When describing abstract data models, this specification uses the notational convention used by the XML Infoset [<bibref ref="XMLInfoSet"/>]. Specifically, abstract property names always appear in square brackets (e.g., [some property]).</p> <p>When describing concrete XML schemas [<bibref ref="XMLSchemaP1"/>, <bibref ref="XMLSchemaP2"/>], this specification uses the notational convention of WS-Security [<bibref ref="WS-Security"/>]. Specifically, each member of an element'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/>). The use of @{any} indicates the presence of an attribute wildcard (<xs:anyAttribute/>).</p> </div2> <div2 id="namespaces"> <head>Namespaces</head> <p> This specification uses a number of namespace prefixes throughout; they are listed in <specref ref="nsprefix"/>. Note that the choice of any namespace prefix is arbitrary and not semantically significant (see [<bibref ref="XMLNS"/> ]).</p> <table summary="Namespace prefixes usage in this specification" id="nsprefix" border="1"> <caption>Prefixes and Namespaces used in this specification</caption> <tbody> <tr> <th align="left" rowspan="1" colspan="1">Prefix</th> <th align="left" rowspan="1" colspan="1">Namespace</th> </tr> <tr> <td rowspan="1" colspan="1">S</td> <td rowspan="1" colspan="1">http://www.w3.org/2003/05/soap-envelope</td> </tr> <tr> <td rowspan="1" colspan="1">S11</td> <td rowspan="1" colspan="1">http://schemas.xmlsoap.org/soap/envelope</td> </tr> <tr> <td rowspan="1" colspan="1">wsa</td> <td rowspan="1" colspan="1">http://www.w3.org/2005/03/addressing</td> </tr> <tr> <td rowspan="1" colspan="1">xs</td> <td rowspan="1" colspan="1">http://www.w3.org/2001/XMLSchema</td> </tr> </tbody> </table> <p>WS-Addressing may be used with SOAP [<bibref ref="SOAP12-PART1"/>] as described in Web Services Addressing 1.0 - SOAP Binding[<bibref ref="WSADDR-SOAP"/>]. WS-Addressing may be used with WSDL [<bibref ref="WSDL20"/>] described services as described in Web Services Addressing 1.0 - WSDL Binding[<bibref ref="WSADDR-WSDL"/>]. Examples in this specification use an XML 1.0 [<bibref ref="XML10"/>] representation but this is not a requirement.</p> <p>All information items defined by this specification are identified by the XML namespace URI [<bibref ref="XMLNS"/>] "http://www.w3.org/2005/03/addressing". A normative XML Schema [<bibref ref="XMLSchemaP1"/>, <bibref ref="XMLSchemaP2"/>] document can be obtained by dereferencing the XML namespace URI.</p> </div2> </div1> <div1 id="eprs"> <head>Endpoint References</head> <p>This section defines the information model and syntax of an endpoint reference.</p> <p> This specification introduces the endpoint reference, a construct designed to support the following usage scenarios:</p> <ulist> <item> <p> Dynamic generation and customization of service endpoint descriptions.</p> </item> </ulist> <ulist> <item> <p> Referencing and description of specific service instances that are created as the result of stateful interactions.</p> </item> </ulist> <ulist> <item> <p> Flexible and dynamic exchange of endpoint information in tightly coupled environments where communicating parties share a set of common assumptions about specific policies or protocols that are used during the interaction.</p> </item> </ulist> <div2 id="eprinfomodel"> <head>Information Model for Endpoint References</head> <p>An endpoint reference consists of the following abstract properties:</p> <glist> <gitem> <label> [address] : IRI (mandatory)</label> <def> <p>An address IRI for the endpoint.</p> </def> </gitem> <gitem> <label> [reference parameters] : xs:any (0..unbounded).</label> <def> <p>A reference may contain a number of individual parameters which are associated with the endpoint to facilitate a particular interaction. Reference parameters are element information items that are named by QName and are required to properly interact with the endpoint. Reference parameters are also provided by the issuer of the endpoint reference and are otherwise assumed to be opaque to consuming applications. The use of reference parameters is dependent upon the protocol binding and data encoding used to interact with the endpoint. Web Services Addressing 1.0 - SOAP Binding[<bibref ref="WSADDR-SOAP"/>] describes the default binding for the SOAP protocol. </p> </def> </gitem> <gitem> <label> [metadata] : xsd:any (0..unbounded)</label> <def> <p>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 the consuming application, or because the metadata was dynamically generated.</p> <p>The metadata embedded in each of the EPRs MAY differ, as the metadata carried by 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.</p> <p>To deal with conflicts between the embedded metadata of two EPRs, 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 <specref ref="eprlifecycle"/> or retrieval of metadata from an authoritative source, SHOULD be used.</p> </def> </gitem> </glist> </div2> <div2 id="eprinfoset"> <head>Endpoint Reference XML Infoset Representation</head> <p>This section defines an XML Infoset-based representation for an endpoint reference as both an XML type (wsa:EndpointReferenceType) and as an XML element (<wsa:EndpointReference>).</p> <p>The wsa:EndpointReferenceType type is used wherever a Web service endpoint is referenced. The following describes the contents of this type:</p> <example> <head>Structure of the wsa:EndpointReference element.</head> <eg xml:space="preserve"> <wsa:EndpointReference> <wsa:Address>xs:anyURI</wsa:Address> <!-- Resolving i001 <wsa:ReferenceProperties>... </wsa:ReferenceProperties> ? --> <wsa:ReferenceParameters>... </wsa:ReferenceParameters> ? <wsa:Metadata> ... </wsa:Metadata>? <xs:any/>* </wsa:EndpointReference> </eg> </example> <p>The following describes the attributes and elements listed in the schema overview above:</p> <glist> <gitem> <label> /wsa:EndpointReference</label> <def> <p>This represents some element of type wsa:EndpointReferenceType. This example uses the predefined <wsa:EndpointReference> element, but any element of type wsa:EndpointReferenceType may be used.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/wsa:Address</label> <def> <p>This REQUIRED element (of type xs:anyURI) specifies the [address] property of the endpoint reference.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/wsa:Address/@{any}</label> <def> <p>This is an extensibility mechanism to allow additional attributes to be specified.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/wsa:ReferenceParameters</label> <def> <p>This OPTIONAL element contains the elements that convey the [reference parameters] of the reference.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/wsa:ReferenceParameters/@{any}</label> <def> <p>This is an extensibility mechanism to allow additional attributes to be specified.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/wsa:ReferenceParameters/{any}</label> <def> <p>Each element information item of found in [reference parameters] (including all of its [children], [attributes] and [in-scope namespaces]) is represented as is.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/wsa:Metadata</label> <def> <p>This OPTIONAL element contains metadata that is relevant to the interaction with the endpoint.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/wsa:Metadata/{any}</label> <def> <p>Each child element of Metadata represents an individual piece of metadata.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/wsa:Metadata/{@any}</label> <def> <p>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[<bibref ref="WSDL20"/>] attribute to provide a hint for the location of a WSDL description of the service deployed at the endpoint.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/{any}</label> <def> <p>This is an extensibility mechanism to allow additional elements to be specified.</p> </def> </gitem> <gitem> <label> /wsa:EndpointReference/@{any}</label> <def> <p>This is an extensibility mechanism to allow additional attributes to be specified.</p> </def> </gitem> </glist> <p>The following shows an example endpoint reference. This element references the the endpoint at the IRI "http://example.com/www.fabrikam/acct".</p> <example> <head>Example endpoint reference.</head> <eg xml:space="preserve"> <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/03/addressing"> <wsa:Address>http://example.com/fabrikam/acct</wsa:Address> </wsa:EndpointReference> </eg> </example> </div2> <div2 id="eprcomp"> <head>Endpoint Reference Comparison</head> <p>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.</p> </div2> <div2 id="eprlifecycle"> <head>Endpoint Reference Lifecycle</head> <p>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.</p> </div2> <div2 id="eprextensibility"> <head>Endpoint Reference Extensibility</head> <p>As noted in <specref ref="eprinfoset"/> 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.</p> <p>Extension elements and attributes MAY add additional properties to an endpoint reference in addition to those specified in <specref ref="eprinfomodel"/>. 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. </p> <p>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 recogonised or understood.</p> </div2> </div1> <div1 id="msgaddrprops"> <head>Message Addressing Properties</head> <p>This section defines the information model and syntax of message addressing properties.</p> <ednote> <edtext> 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 <loc href="http://www.w3.org/2002/ws/addr/wd-issues/#i054" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">particular design</loc>, some participants believe it is not adequately specified. Such feedback will help the Working Group determine whether it needs to re-examine this issue. </edtext> </ednote> <p> Message addressing properties provide references for the endpoints involved in an interaction. The use of these properties to support specific interaction 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.</p> <p> 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 Reply" 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 reply). A reply 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 Reply pattern, or to a particular WSDL MEP. The contract between the interacting parties may specify that multiple or even a variable number or replies be delivered. </p> <p> The set of message addressing properties defined in this specification is sufficient for many simple variations of one-way and request-reply MEPs. More advanced MEPs may require additional message addressing properties to augment the facilities provided here. </p> <p>Message addressing properties collectively augment a message with the following abstract properties to support one way, request reply, and other interaction pattern:</p> <glist> <gitem> <label> [destination] : IRI (mandatory)</label> <def> <p>The address of the intended receiver of this message.</p> </def> </gitem> <gitem> <label> [source endpoint] : endpoint reference (0..1)</label> <def> <p>Reference to the endpoint from which the message originated.</p> </def> </gitem> <gitem> <label> [reply endpoint] : endpoint reference (0..1)</label> <def> <p>An endpoint reference for the intended receiver for replies to this message. If a reply is expected, a message MUST contain a [reply endpoint]. The sender MUST use the contents of the [reply endpoint] to formulate the reply message as defined in <specref ref="formreplymsg"/>. If this property is present, the [message id] property is REQUIRED.</p> </def> </gitem> <gitem> <label> [fault endpoint] : endpoint reference (0..1)</label> <def> <p>An endpoint reference for the intended receiver for faults related to this message. When formulating a fault message as defined in <specref ref="formreplymsg"/>, the sender MUST use the contents of the [fault endpoint], when present, of the message being replied to to formulate the fault message. If this property is present, the [message id] property is REQUIRED.</p> </def> </gitem> <gitem> <label> [action] : IRI (mandatory)</label> <def> <p>An identifier that uniquely identifies the semantics implied by this message.</p> <p>It is RECOMMENDED that the value of the [action] property is an IRI identifying an input, output, or fault message within a WSDL port type. An action may be explicitly or implicitly associated with the corresponding WSDL definition. Web Services Addressing 1.0 - WSDL Binding[<bibref ref="WSADDR-WSDL"/>] describes the mechanisms of association.</p> </def> </gitem> <gitem> <label> [message id] : IRI (0..1)</label> <def> <p>An IRI that uniquely identifies this message in time and space. No two messages with a distinct application intent may share a [message id] property. A message MAY be retransmitted for any purpose including communications failure and MAY use the same [message id] property. The value of this property is an opaque IRI whose interpretation beyond equivalence is not defined in this specification. If a reply is expected, this property MUST be present. </p> </def> </gitem> <gitem> <label> [relationship] : (IRI, IRI) (0..unbounded)</label> <def> <p>A pair of values that indicate how this message relates to another message. The type of the relationship is identified by an IRI. The related message is identified by an 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 well-known IRI that means "unspecified message": <attval>http://www.w3.org/2005/03/addressing/id/unspecified</attval> </p> <p>This specification has one predefined relationship type as shown in <specref ref="predefrels"/>.</p> <table id="predefrels" border="1" summary="Predefined [relationship] type values"> <caption>Predefined [relationship] values</caption> <tbody> <tr> <th align="left" rowspan="1" colspan="1">IRI</th> <th align="left" rowspan="1" colspan="1">Description </th> </tr> <tr> <td rowspan="1" colspan="1"> <attval>http://www.w3.org/2005/03/addressing/reply</attval> </td> <td rowspan="1" colspan="1">Indicates that this is a reply to the message identified by the IRI.</td> </tr> </tbody> </table> <p>A reply message MUST contain a [relationship] property consisting of the predefined reply IRI and the message id property of the request message.</p> </def> </gitem> <gitem> <label> [reference parameters] : xs:any (0..unbounded).</label> <def> <p>Corresponds to the value of the [reference parameters] property of the endpoint reference to which the message is addressed.</p> </def> </gitem> </glist> <p>The dispatching of incoming messages is based on two message properties: the mandatory "destination" and "action" fields indicate the target processing location and the verb or intent of the message respectively.</p> <p>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. To allow these "anonymous" endpoints to initiate message exchange patterns and receive replies, WS-Addressing defines the following well-known IRI for use by endpoints that cannot have a stable, resolvable IRI: <attval>http://www.w3.org/2005/03/addressing/role/anonymous</attval> </p> <p>Requests whose [reply endpoint], [source endpoint] and/or [fault endpoint] use this address MUST provide some out-of-band mechanism for delivering replies or faults (e.g. returning the reply on the same transport connection). This mechanism may be a simple request/reply transport protocol (e.g., HTTP GET or POST). This IRI MAY be used as the [destination] for reply messages and SHOULD NOT be used as the [destination] in other circumstances.</p> <div2 id="msgaddrpropsinfoset"> <head>XML Infoset Representation of Message Addressing Properties</head> <p>Message addressing properties provide end-to-end characteristics of a message that can be easily secured as a unit. These properties are immutable and not intended to be modified along a message path. </p> <p>The following describes the XML Infoset representation of message addressing properties:</p> <example> <head>XML Infoset representation of message addressing properties.</head> <eg xml:space="preserve"> <wsa:MessageID> xs:anyURI </wsa:MessageID> <wsa:RelatesTo RelationshipType="..."?>xs:anyURI</wsa:RelatesTo> <wsa:To>xs:anyURI</wsa:To> <wsa:Action>xs:anyURI</wsa:Action> <wsa:From>endpoint-reference</wsa:From> <wsa:ReplyTo>endpoint-reference</wsa:ReplyTo> <wsa:FaultTo>endpoint-reference</wsa:FaultTo> </eg> </example> <p>The following describes the attributes and elements listed in the schema overview above:</p> <glist> <gitem> <label> /wsa:MessageID</label> <def> <p>This OPTIONAL element (of type xs:anyURI) conveys the [message id] property. This element MUST be present if wsa:ReplyTo or wsa:FaultTo is present.</p> </def> </gitem> </glist> <glist> <gitem> <label> /wsa:RelatesTo</label> <def> <p>This OPTIONAL (repeating) element information item contributes one abstract [relationship] property value, in the form of a (IRI, IRI) pair. The [children] property of this element (which is of type xs:anyURI) conveys the [message id] of the related message. This element MUST be present if the message is a reply.</p> </def> </gitem> </glist> <glist> <gitem> <label> /wsa:RelatesTo/@RelationshipType</label> <def> <p>This OPTIONAL attribute (of type xs:anyURI) conveys the relationship type as an IRI. When absent, the implied value of this attribute is <attval>http://www.w3.org/2005/03/addressing/reply</attval>.</p> </def> </gitem> </glist> <glist> <gitem> <label> /wsa:ReplyTo</label> <def> <p>This OPTIONAL element (of type wsa:EndpointReferenceType) provides the value for the [reply endpoint] property. This element MUST be present if a reply is expected. If this element is present, wsa:MessageID MUST be present.</p> </def> </gitem> </glist> <glist> <gitem> <label> /wsa:From</label> <def> <p>This OPTIONAL element (of type wsa:EndpointReferenceType) provides the value for the [source endpoint] property.</p> </def> </gitem> </glist> <glist> <gitem> <label> /wsa:FaultTo</label> <def> <p>This OPTIONAL element (of type wsa:EndpointReferenceType) provides the value for the [fault endpoint] property. If this element is present, wsa:MessageID MUST be present.</p> </def> </gitem> </glist> <glist> <gitem> <label> /wsa:To</label> <def> <p>This OPTIONAL element (of type xs:anyURI) provides the value for the [destination] property. If this element is NOT present then the value of the [destination] property is <attval>http://www.w3.org/2005/03/addressing/role/anonymous</attval>. Otherwise the [children] of this element convey the value of this property.</p> </def> </gitem> </glist> <glist> <gitem> <label> /wsa:Action</label> <def> <p>This REQUIRED element of type xs:anyURI conveys the [action] property. The [children] of this element convey the value of this property.</p> </def> </gitem> <gitem> <label> /[reference parameters]*</label> <def> <p>Each element information item of found in [reference parameters] (including all of its [children], [attributes] and [in-scope namespaces]) is represented as is.</p> </def> </gitem> </glist> <p>Note that each of the element information items described above allows attribute wildcards for future extensibility.</p> <div3 id="compiri"> <head>Comparing IRIs</head> <p>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 <bibref ref="RFC3987"/> section 5.3.1, is sufficient to determine equivalence of these IRIs.</p> </div3> </div2> <div2 id="formreplymsg"> <head>Formulating a Reply Message</head> <p>The reply to a WS-Addressing compliant request message MUST be compliant to WS-Addressing and is constructed according to the following rules:</p> <olist> <item> <p>Select the appropriate EPR:</p> <ulist> <item> <p>If the reply is a normal message, select the EPR from the incoming message's [reply endpoint] message addressing property. If none is present, the processor MUST fault.</p> </item> <item> <p>Otherwise, if the reply is a fault message and the incoming 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 incoming message's [reply endpoint] message addressing property. Otherwise, if the [reply endpoint] property is empty, the behavior of the recipient of the incoming message is unconstrained by this specification.</p> </item> </ulist> </item> <item> <p>Populate the reply message's message addressing properties:</p> <ulist> <item> <p>[destination]: this property takes the value of the selected EPR's [address] property</p> </item> <item> <p>[relationship]: a new pair of IRIs is added to this value as follows; the relationship type is the predefined reply IRI <attval>http://www.w3.org/2005/03/addressing/reply</attval> 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</p> </item> <item> <p>[reference parameters]: this property takes the value of the selected EPR's [reference parameters] property</p> </item> </ulist> </item> </olist> <p>The following example illustrates a request message containing message addressing properties serialized as header blocks in a SOAP 1.2 message:</p> <example> <head>Example request message.</head> <eg xml:space="preserve"> <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/03/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 S:mustUnderstand="1">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> </eg> </example> <p>This message would have the following property values:</p> <ulist> <item> <p> [destination]: <attval>mailto:fabrikam@example.com</attval> </p> </item> <item> <p> [reply endpoint]: The endpoint with [address] <attval>http://example.com/business/client1</attval> </p> </item> <item> <p> [action]: <attval>http://example.com/fabrikam/mail/Delete</attval> </p> </item> <item> <p> [message id]: <attval>http://example.com/someuniquestring</attval> </p> </item> </ulist> <p>The following example illustrates a reply to the above message:</p> <example> <head>Example response message.</head> <eg xml:space="preserve"> <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/03/addressing"> <S:Header> <wsa:MessageID> http://example.com/someotheruniquestring </wsa:MessageID> <wsa:RelatesTo> http://example.com/someuniquestring </wsa:RelatesTo> <wsa:To S:mustUnderstand="1"> 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> </eg> </example> <p>This message would have the following property values:</p> <ulist> <item> <p> [destination]: <attval>http://example.com/business/client1</attval> </p> </item> <item> <p> [action]: <attval>http://example.com/fabrikam/mail/DeleteAck</attval> </p> </item> <item> <p> [message id]: <attval>http://example.com/someotheruniquestring</attval> </p> </item> <item> <p> [relationship]: (<attval>http://www.w3.org/2005/03/addressing/reply</attval>, <attval>http://example.com/someuniquestring</attval>)</p> </item> </ulist> </div2> </div1> <div1 id="securityconsiderations"> <head>Security Considerations</head> <p>Users of WS-Addressing and EPRs (i.e., entities creating, consuming or receiving Message Addressing Properties and EPRs) SHOULD only use EPRs from sources they trust. For example, such users might only use EPRs that are signed by parties the user of the EPR trusts, or have some out-of-band means of establishing trust.</p> <p>EPRs and message addressing properties SHOULD be integrity protected to prevent tampering. Such optional integrity protection might be provided by transport, message level signature, and use of an XML digital signature within EPRs.</p> <p>To prevent information disclosure, EPR issuers SHOULD NOT put sensitive information into the [address] or [reference parameters] properties.</p> <p>Some processors may use message identifiers ([message id]) as part of a uniqueness metric in order to detect replays of messages. 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.</p> </div1> <div1 id="references"> <head>References</head> <blist> <bibl key="WS-Addressing-SOAP" id="WSADDR-SOAP" href="http://www.w3.org/TR/2005/WD-ws-addr-soap-20050331" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Addressing 1.0 - SOAP Binding</titleref>, M. Gudgin, M. Hadley, Editors.</bibl> <!-- <bibl key="WS-Addressing-WSDL" id="WSADDR-WSDL" href="&w3c-designation-wsa-wsdl;"> <titleref>&wsa-wsdl.title;</titleref>, M. Gudgin, M. Hadley, Editors.</bibl> *** For LC drafts only *** --> <bibl key="WS-Addressing-WSDL" id="WSADDR-WSDL" href="http://www.w3.org/TR/2005/WD-ws-addr-wsdl-20050215" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Addressing 1.0 - WSDL Binding</titleref>, M. Gudgin, M. Hadley, Editors.</bibl> <bibl key="WSDL 2.0" id="WSDL20" href="http://www.w3.org/TR/2004/WD-wsdl20-20040803" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Description Language 2.0</titleref>, 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/2004/WD-wsdl20-20040803. The <loc href="http://www.w3.org/TR/wsdl20" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of WSDL 2.0</loc> is available at http://www.w3.org/TR/wsdl20.</bibl> <bibl key="IETF RFC 2119" href="http://www.ietf.org/rfc/rfc2119.txt" id="RFC2119" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Key words for use in RFCs to Indicate Requirement Levels</titleref>, S. Bradner. Internet Engineering Task Force, June 1999. Available at http://www.ietf.org/rfc/rfc2119.txt. </bibl> <bibl id="RFC3987" key="IETF RFC 3987" href="http://www.ietf.org/rfc/rfc3987.txt" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> M. Duerst, M. Suignard, "Internationalized Resource Identifiers (IRIs)", January 2005.</bibl> <bibl id="XML10" key="XML 1.0" href="http://www.w3.org/TR/2004/REC-xml-20040204" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Extensible Markup Language (XML) 1.0 (Third Edition)</titleref>, 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 <loc href="http://www.w3.org/TR/REC-xml" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML 1.0</loc> is available at http://www.w3.org/TR/REC-xml. </bibl> <bibl id="XMLNS" key="XML Namespaces" href="http://www.w3.org/TR/1999/REC-xml-names-19990114" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Namespaces in XML</titleref>, 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 <loc href="http://www.w3.org/TR/REC-xml-names" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of Namespaces in XML</loc> is available at http://www.w3.org/TR/REC-xml-names. </bibl> <bibl id="XMLInfoSet" key="XML Information Set" href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Information Set</titleref>, 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 <loc href="http://www.w3.org/TR/xml-infoset" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML Information Set</loc> is available at http://www.w3.org/TR/xml-infoset. </bibl> <bibl id="XMLSchemaP1" key="XML Schema Structures" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 1: Structures Second Edition</titleref>, 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 <loc href="http://www.w3.org/TR/xmlschema-1/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML Schema Part 1</loc> is available at http://www.w3.org/TR/xmlschema-1. </bibl> <bibl key="XML Schema Datatypes" id="XMLSchemaP2" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Schema Part 2: Datatypes Second Edition</titleref>, 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 <loc href="http://www.w3.org/TR/xmlschema-2/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of XML Schema Part 2</loc> is available at http://www.w3.org/TR/xmlschema-2. </bibl> <bibl id="SOAP12-PART1" key="SOAP 1.2 Part 1: Messaging Framework" href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">SOAP Version 1.2 Part 1: Messaging Framework</titleref>, 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 <loc href="http://www.w3.org/TR/soap12-part1/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">latest version of "SOAP Version 1.2 Part 1: Messaging Framework"</loc> is available at http://www.w3.org/TR/soap12-part1/. </bibl> <bibl id="WS-Security" key="WS-Security" href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"> OASIS, <titleref xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Web Services Security: SOAP Message Security</titleref>, March 2004.</bibl> </blist> </div1> </body> <back> <inform-div1 id="acknowledgments"> <head>Acknowledgements</head> <p>This document is the work of the <loc href="http://www.w3.org/2002/ws/addr/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Web Service Addressing Working Group</loc>.</p> <p>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.).</p> <p>Previous members of the Working Group were: Lisa Bahler (SAIC - Telcordia Technologies), Marc Goodner (SAP AG), Harris Reynolds (webMethods, Inc.).</p> <p>The people who have contributed to <loc href="http://lists.w3.org/Archives/Public/public-ws-addressing/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">discussions on public-ws-addressing@w3.org</loc> are also gratefully acknowledged.</p> </inform-div1> <inform-div1 id="changelog"> <head>Change Log</head> <div2> <head>Changes Since Second Working Draft</head> <p role="ws-addr-core.xml:20050210:20060101">Placeholder for auto change log generation.</p> </div2> <div2> <head>Changes Since First Working Draft</head> <p role="ws-addr-core.xml:20041206:20050210">Placeholder for auto change log generation.</p> </div2> <div2> <head>Changes Since Submission</head> <p role="ws-addr-core.xml:20041001:20041205">Placeholder for auto change log generation.</p> </div2> </inform-div1> </back> </spec>