| < draft-ietf-simple-xcap-diff-02.txt | draft-ietf-simple-xcap-diff-03.txt > | |||
|---|---|---|---|---|
| SIMPLE J. Rosenberg | SIMPLE J. Rosenberg | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Expires: April 25, 2006 October 22, 2005 | Expires: September 7, 2006 March 6, 2006 | |||
| An Extensible Markup Language (XML) Document Format for Indicating A | An Extensible Markup Language (XML) Document Format for Indicating A | |||
| Change in XML Configuration Access Protocol (XCAP) Resources | Change in XML Configuration Access Protocol (XCAP) Resources | |||
| draft-ietf-simple-xcap-diff-02 | draft-ietf-simple-xcap-diff-03 | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| skipping to change at page 1, line 34 ¶ | skipping to change at page 1, line 34 ¶ | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on April 25, 2006. | This Internet-Draft will expire on September 7, 2006. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The Internet Society (2005). | Copyright (C) The Internet Society (2006). | |||
| Abstract | Abstract | |||
| This specification defines a document format that can be used to | This specification defines a document format that can be used to | |||
| indicate that a change has occurred in a document managed by the | indicate that a change has occurred in a document managed by the | |||
| Extensible Markup Language (XML) Configuration Access Protocol | Extensible Markup Language (XML) Configuration Access Protocol | |||
| (XCAP). This format indicates the document that has changed and its | (XCAP). This format indicates the document that has changed and its | |||
| former and new entity tags. XCAP diff documents can be delivered to | former and new entity tags. It also can indicate the specific change | |||
| clients using a number of means, including the Session Initiation | that was made in the document, using an XML patch format. XCAP diff | |||
| Protocol (SIP) event package for configuration data. By subscribing | documents can be delivered to clients using a number of means, | |||
| to this event package, clients can learn about document changes made | including a Session Initiation Protocol (SIP) event package. | |||
| by other clients. The XCAP diff format is extensible, so that | ||||
| additional information, such as a description of the actual change, | ||||
| can be included. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Structure of an XCAP Diff Document . . . . . . . . . . . . . . 4 | 3. Structure of an XCAP Diff Document . . . . . . . . . . . . . . 4 | |||
| 4. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. Example Document . . . . . . . . . . . . . . . . . . . . . . . 6 | 5. Example Document . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 6. Usage with the Config Framework . . . . . . . . . . . . . . . 7 | 6. Usage with an Event Package . . . . . . . . . . . . . . . . . 8 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 8.1 application/xcap-diff+xml MIME Type . . . . . . . . . . . 8 | 8.1 application/xcap-diff+xml MIME Type . . . . . . . . . . . 9 | |||
| 8.2 URN Sub-Namespace Registration for | 8.2 URN Sub-Namespace Registration for | |||
| urn:ietf:params:xml:ns:xcap-diff . . . . . . . . . . . . . 9 | urn:ietf:params:xml:ns:xcap-diff . . . . . . . . . . . . . 10 | |||
| 8.3 Schema Registration . . . . . . . . . . . . . . . . . . . 10 | 8.3 Schema Registration . . . . . . . . . . . . . . . . . . . 11 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 9.1 Normative References . . . . . . . . . . . . . . . . . . . 10 | 9.1 Normative References . . . . . . . . . . . . . . . . . . . 11 | |||
| 9.2 Informative References . . . . . . . . . . . . . . . . . . 11 | 9.2 Informative References . . . . . . . . . . . . . . . . . . 12 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . 12 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| Intellectual Property and Copyright Statements . . . . . . . . 13 | Intellectual Property and Copyright Statements . . . . . . . . 14 | |||
| 1. Introduction | 1. Introduction | |||
| The Extensible Markup Language (XML) Configuration Access Protocol | The Extensible Markup Language (XML) Configuration Access Protocol | |||
| (XCAP) [8] is a protocol that allows clients to manipulate XML | (XCAP) [8] is a protocol that allows clients to manipulate XML | |||
| documents stored on a server. These XML documents serve as | documents stored on a server. These XML documents serve as | |||
| configuration information for application protocols. As an example, | configuration information for application protocols. As an example, | |||
| resource list [12] subscriptions (also known as presence lists) allow | resource list [12] subscriptions (also known as presence lists) allow | |||
| a client to have a single SIP subscription to a list of users, where | a client to have a single SIP subscription to a list of users, where | |||
| the list is maintained on a server. The server will obtain presence | the list is maintained on a server. The server will obtain presence | |||
| skipping to change at page 3, line 28 ¶ | skipping to change at page 3, line 28 ¶ | |||
| they desire. | they desire. | |||
| Complexities arise when multiple clients attempt to simultaneously | Complexities arise when multiple clients attempt to simultaneously | |||
| manipulate a document, such as a presence list. Frequently, a client | manipulate a document, such as a presence list. Frequently, a client | |||
| will keep a copy of the current list in memory, so it can render it | will keep a copy of the current list in memory, so it can render it | |||
| to users. However, if another client modifies the document, the | to users. However, if another client modifies the document, the | |||
| cached version becomes stale. This modification event must be made | cached version becomes stale. This modification event must be made | |||
| known to all clients which have cached copies of the document, so | known to all clients which have cached copies of the document, so | |||
| that they can fetch the most recent one. | that they can fetch the most recent one. | |||
| To deal with this problem, clients can use the Session Initiation | To deal with this problem, clients can use a Session Initiation | |||
| Protocol (SIP) [10] event package [11] for subscribing to changes in | Protocol (SIP) [10] event package [11] to subscribe to change events | |||
| configuration and profile information [9], including application data | in XCAP documents. This notification needs to indicate the specific | |||
| that resides on an XCAP server. With that package, a user gets | resource that changed, and how it changed. One solution for the | |||
| notified that a particular document has changed. This notification | format of such a change notification would be a content indirection | |||
| can include the full content of the new document, or it can be a | object [15]. Though content indirection can tell a client that a | |||
| content indirection [15]. Though content indirection can tell a | document has changed, it provides it with MIME Content-ID indicating | |||
| client that a document has changed, it provides it with MIME | the new version of the document. The MIME Content-ID is not the same | |||
| Content-ID indicating the new version of the document. The MIME | as the entity tag, which is used by XCAP for document versioning. As | |||
| Content-ID is not the same as the entity tag, which is used by XCAP | such, a client cannot easily ascertain whether an indication of a | |||
| for document versioning. As such, a client cannot easily ascertain | change in a document is due to a change it just made, or due to a | |||
| whether an indication of a change in a document is due to a change it | change another client made at around the same time. Furthermore, | |||
| just made, or due to a change another client made at around the same | content indirections don't indicate how a document changed; they | |||
| time. | would only be able to indicate that it did change. | |||
| In addition, when an XCAP client inserts a new element or attribute | ||||
| into an existing document, the client has no way to know whether the | ||||
| insertion was done against its cached version of the document. The | ||||
| reasons for this are described in Section 7.10 of XCAP. To help a | ||||
| client ascertain whether this has occurred after performing the | ||||
| insertion, the XCAP response needs to contain a document which | ||||
| indicates the entity tags before and after the document was modified. | ||||
| To resolve these problems, this document defines a data format which | To resolve these problems, this document defines a data format which | |||
| can convey the fact that an XML document has changed. This data | can convey the fact that an XML document managed by XCAP has changed. | |||
| format is an XML document format, called an XCAP diff document. This | This data format is an XML document format, called an XCAP diff | |||
| format can indicate that a document has changed, and provide its | document. This format can indicate that a document has changed, and | |||
| previous and new entity tags. This specification also explains how | provide its previous and new entity tags. It can also optionally | |||
| this format is used in conjunction with the configuration profile | include a set of patch operations [9], which indicate how to | |||
| framework. | transform the document from the version prior to the change, to the | |||
| version after it. | ||||
| 2. Terminology | 2. Terminology | |||
| In this document, the key words "MUST", "MUST NOT", "REQUIRED", | In this document, the key words "MUST", "MUST NOT", "REQUIRED", | |||
| "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", | |||
| and "OPTIONAL" are to be interpreted as described in RFC 2119 [7] and | and "OPTIONAL" are to be interpreted as described in RFC 2119 [7] and | |||
| indicate requirement levels for compliant implementations. | indicate requirement levels for compliant implementations. | |||
| This specification also defines the following additional terms: | This specification also defines the following additional terms: | |||
| skipping to change at page 4, line 30 ¶ | skipping to change at page 4, line 25 ¶ | |||
| front of it, it refers to the XCAP document resource about whom | front of it, it refers to the XCAP document resource about whom | |||
| the XCAP diff document is reporting a change. | the XCAP diff document is reporting a change. | |||
| XCAP diff document: The XML document defined by this specification | XCAP diff document: The XML document defined by this specification | |||
| that reports on a set of changes in an XCAP document resource. | that reports on a set of changes in an XCAP document resource. | |||
| Server: Typically an XCAP server, this is a protocol entity that | Server: Typically an XCAP server, this is a protocol entity that | |||
| generates XCAP diff documents based on its knowledge of a set of | generates XCAP diff documents based on its knowledge of a set of | |||
| XCAP documents. | XCAP documents. | |||
| Client: Typically an XCAP client and SIP User Agent (UA) that acts as | Client: Typically an XCAP client and SIP User Agent (UA), the client | |||
| a subscriber to the configuration event package, this is a | consumes XCAP diff documents in order to reconstruct the document | |||
| protocol entity that consumes XCAP diff documents in order to | stored on the server. | |||
| reconstruct the document stored on the server. | ||||
| 3. Structure of an XCAP Diff Document | 3. Structure of an XCAP Diff Document | |||
| An XCAP diff document is an XML [2] document that MUST be well-formed | An XCAP diff document is an XML [2] document that MUST be well-formed | |||
| and SHOULD be valid. XCAP diff documents MUST be based on XML 1.0 | and SHOULD be valid. XCAP diff documents MUST be based on XML 1.0 | |||
| and MUST be encoded using UTF-8. This specification makes use of XML | and MUST be encoded using UTF-8. This specification makes use of XML | |||
| namespaces for identifying XCAP diff documents and document | namespaces for identifying XCAP diff documents and document | |||
| fragments. The namespace URI for elements defined by this | fragments. The namespace URI for elements defined by this | |||
| specification is a URN [3], using the namespace identifier 'ietf' | specification is a URN [3], using the namespace identifier 'ietf' | |||
| defined by [5] and extended by [6]. This URN is: | defined by [5] and extended by [6]. This URN is: | |||
| skipping to change at page 5, line 37 ¶ | skipping to change at page 5, line 30 ¶ | |||
| The optional "hash" attribute provides an HMAC of the document | The optional "hash" attribute provides an HMAC of the document | |||
| instance whose etag is "new-etag", once that document is represented | instance whose etag is "new-etag", once that document is represented | |||
| in canonical form. To compute this value, the server MUST apply the | in canonical form. To compute this value, the server MUST apply the | |||
| mandatory XML canonicalization defined in the Canonical XML 1.0 [1] | mandatory XML canonicalization defined in the Canonical XML 1.0 [1] | |||
| specification, and then computes an HMAC [13] using SHA1 over this | specification, and then computes an HMAC [13] using SHA1 over this | |||
| canonical document, with a key whose value is 0x2238a. The result is | canonical document, with a key whose value is 0x2238a. The result is | |||
| the value of the "hash" attribute. This attribute is optional, and a | the value of the "hash" attribute. This attribute is optional, and a | |||
| server MAY elect not to include it. Even if present, a client MAY | server MAY elect not to include it. Even if present, a client MAY | |||
| elect to ignore it. | elect to ignore it. | |||
| This contents of the <document> element are extensible, and can | Each <document> element contains zero or one <change-log> element, | |||
| include elements from other namespaces. It is anticipated that | followed by any number of elements from another namespace for the | |||
| extensions would be defined that allow the actual change in the | purposes of extensibility. Any such unknown elements MUST be ignored | |||
| document to be reported. | by the client. When present, the <change-log> element tells the | |||
| client the specific set of XML patch operations that can be applied | ||||
| to transform the document from the version whose etag was "previous- | ||||
| etag" to the version whose etag is "new-etag". If the "previous- | ||||
| etag" is not present, the <change-log> element tells the client the | ||||
| specific set of XML patch operations that can be applied to create a | ||||
| document from nothing, and result in the document whose etag is "new- | ||||
| etag". If the "new-etag" attribute is not present, it implies that | ||||
| the document was removed. In that case, the <change-log> is | ||||
| meaningless and SHOULD be ignored. | ||||
| The series of operations in the <change-log> do not have to be the | ||||
| same exact series of operations that occurred at the server. The | ||||
| only requirement is that, if the server includes the <change-log> | ||||
| element, the sequence of events, when executed serially, will result | ||||
| in the transformation of the document with the etag "previous-etag" | ||||
| to the one whose etag is "new-etag". If the <change-log> element is | ||||
| not present, it means that the document has changed in some way, but | ||||
| the XCAP server has elected not to provide the set of changes. In | ||||
| that case, a client can retrieve the latest document if its cached | ||||
| etag doesn't match the value of "new-etag". | ||||
| It is important to note that a <document> element with no <change- | ||||
| log> child is not equivalent to a <document> element with a <change- | ||||
| log> child that is itself empty. The latter means that the document | ||||
| has been assigned a new etag but its content is unchanged. The | ||||
| former means that it has been assigned a new etag as a result of a | ||||
| change, but the specific changes are not being reported in the XCAP | ||||
| diff document. | ||||
| Each <change-log> element contains a sequence of instructions, each | ||||
| of which can be <add>, <replace> and <remove> elements. These | ||||
| elements use the corresponding add, replace and remove types defined | ||||
| in [9], and define a set of patch operations that can be applied to | ||||
| transform the document. See [9] for instructions on how this | ||||
| transformation is effected. The <change-log> element can also | ||||
| contain elements from other namespaces for the purposes of | ||||
| extensibility. Any unknown elements MUST be ignored. | ||||
| 4. XML Schema | 4. XML Schema | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <xs:schema targetNamespace="urn:ietf:params:xml:ns:xcap-diff" | <xs:schema targetNamespace="urn:ietf:params:xml:ns:xcap-diff" | |||
| xmlns="urn:ietf:params:xml:ns:xcap-diff" | ||||
| xmlns:xs="http://www.w3.org/2001/XMLSchema" | xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||
| xmlns="urn:ietf:params:xml:ns:xcap-diff" | ||||
| elementFormDefault="qualified" attributeFormDefault="unqualified"> | elementFormDefault="qualified" attributeFormDefault="unqualified"> | |||
| <xs:include schemaLocation="patch-ops.xsd"/> | ||||
| <xs:element name="document"> | <xs:element name="document"> | |||
| <xs:complexType> | <xs:complexType> | |||
| <xs:sequence> | <xs:sequence> | |||
| <xs:element name="change-log" type="change-logType" minOccurs="0"/> | ||||
| <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> | <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> | |||
| </xs:sequence> | </xs:sequence> | |||
| <xs:attribute name="doc-selector" type="xs:anyURI" use="required"/> | <xs:attribute name="doc-selector" type="xs:anyURI" use="required"/> | |||
| <xs:attribute name="new-etag" type="xs:string" use="optional"/> | <xs:attribute name="new-etag" type="xs:string" use="optional"/> | |||
| <xs:attribute name="previous-etag" type="xs:string" use="optional"/> | <xs:attribute name="previous-etag" type="xs:string" use="optional"/> | |||
| <xs:attribute name="hash" type="xs:string" use="optional"/> | <xs:attribute name="hash" type="xs:string" use="optional"/> | |||
| <xs:anyAttribute namespace="##other" processContents="lax"/> | <xs:anyAttribute namespace="##other" processContents="lax"/> | |||
| </xs:complexType> | </xs:complexType> | |||
| </xs:element> | </xs:element> | |||
| <xs:element name="xcap-diff"> | <xs:element name="xcap-diff"> | |||
| <xs:complexType> | <xs:complexType> | |||
| <xs:sequence> | <xs:sequence> | |||
| <xs:element ref="document"/> | <xs:element ref="document"/> | |||
| </xs:sequence> | </xs:sequence> | |||
| <xs:attribute name="xcap-root" type="xs:anyURI" use="required"/> | <xs:attribute name="xcap-root" type="xs:anyURI" use="required"/> | |||
| </xs:complexType> | </xs:complexType> | |||
| </xs:element> | </xs:element> | |||
| <xs:complexType name="change-logType"> | ||||
| <xs:sequence minOccurs="0" maxOccurs="unbounded"> | ||||
| <xs:choice> | ||||
| <xs:element name="add" type="add"/> | ||||
| <xs:element name="remove" type="remove"/> | ||||
| <xs:element name="replace" type="replace"/> | ||||
| <xs:any namespace="##other"/> | ||||
| </xs:choice> | ||||
| </xs:sequence> | ||||
| </xs:complexType> | ||||
| </xs:schema> | </xs:schema> | |||
| 5. Example Document | 5. Example Document | |||
| The following is an example of a document compliant to the schema. | The following is an example of a document compliant to the schema. | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <xcap-diff xmlns="urn:ietf:params:xml:ns:xcap-diff" | <xcap-diff xmlns="urn:ietf:params:xml:ns:xcap-diff" | |||
| xcap-root="http://xcap.example.com/root"> | xcap-root="http://xcap.example.com/root"> | |||
| <document new-etag="7ahggs" | <document new-etag="7ahggs" | |||
| doc-selector="resource-lists/users/joe/coworkers" | doc-selector="resource-lists/users/joe/coworkers" | |||
| previous-etag="8a77f8d"/> | previous-etag="8a77f8d"/> | |||
| </xcap-diff> | </xcap-diff> | |||
| This indicates that the document with URI | This indicates that the document with URI | |||
| http://xcap.example.com/root/resource-lists/users/joe/coworkers has | "http://xcap.example.com/root/resource-lists/users/joe/coworkers" has | |||
| changed. Its previous entity tag is 8a77f8d and its new one is | changed. Its previous entity tag is 8a77f8d and its new one is | |||
| 7ahggs. | 7ahggs. | |||
| 6. Usage with the Config Framework | 6. Usage with an Event Package | |||
| The framework for user agent profile delivery [9] defines an event | The XCAP diff format was meant to be used with an event package for | |||
| package which can be used to subscribe to user, device, application | the purposes of indicating changes in a document. This section | |||
| or local-network data that defines the configuration of a client. | provides guidelines for its usage with any event package defined for | |||
| This data can be present in an XCAP server. Normally, content | that purpose. | |||
| indirection [15] will be used as the NOTIFY body format, to indicate | ||||
| the specific document that has changed, and should be re-fetched. | ||||
| However, if the client includes an Accept header field including the | ||||
| MIME type "application/xcap-diff+xml", the server has the option of | ||||
| returning documents in this format instead. | ||||
| When the client performs an initial subscription, the rules in [9] | Upon receipt of an initial SUBSCRIBE request, the client may have a | |||
| are used to select the set of documents which the subscription | cached version of some documents. However, the server does not know | |||
| applies to. Upon initial subscription, the server does not know | ||||
| which instances of each document (where each instance is identified | which instances of each document (where each instance is identified | |||
| by an etag) the client currently posessses, if any. Indeed, upon | by an etag) the client currently posessses, if any. Indeed, upon | |||
| startup, the client will not have any documents. The initial NOTIFY | initial startup, the client will not have any documents. The initial | |||
| in this case MUST include a <document> element for each document | NOTIFY in this case MUST include a <document> element for each | |||
| associated with the subscription. The "previous-etag" attribute MUST | document associated with the subscription. The "previous-etag" | |||
| be absent, and the "new-etag" attribute MUST be present and contain | attribute MUST be absent, and the "new-etag" attribute MUST be | |||
| the entity tag for the current version of that document resource. An | present and contain the entity tag for the current version of that | |||
| XCAP diff document structured this way is called a "reference" XCAP | document resource. An XCAP diff document structured this way is | |||
| diff document. It establishes the baseline etags and document URIs | called a "reference" XCAP diff document. It establishes the baseline | |||
| for the documents covered by the subscription. | etags and document URIs for the documents covered by the | |||
| subscription. | ||||
| Upon receipt of this document, the client can determine whether its | Upon receipt of this document, the client can determine whether its | |||
| local instance documents, if any, match the etags in the XCAP diff | local instance documents, if any, match the etags in the XCAP diff | |||
| document. If they do not match, the client SHOULD perform a | document. If they do not match, the client SHOULD perform a | |||
| conditional GET for each document. The document URI is constructed | conditional GET for each document. The document URI is constructed | |||
| by appending the XCAP root in the "xcap-root" attribute of the <xcap- | by appending the XCAP root in the "xcap-root" attribute of the <xcap- | |||
| diff> element to the escape coded "doc-selector" from each <document> | diff> element to the escape coded "doc-selector" from each <document> | |||
| element. The request is made conditional by including an If-Match | element. The request is made conditional by including an If-Match | |||
| header field, with the value of the etag from each <document> | header field, with the value of the etag from each <document> | |||
| element. So long as the documents haven't changed between the NOTIFY | element. So long as the documents haven't changed between the NOTIFY | |||
| and the GET, the client will obtain the reference versions that the | and the GET, the client will obtain the reference versions that the | |||
| server will use for subsequent notifications. | server will use for subsequent notifications. | |||
| If the conditional GET should fail, the client SHOULD generate a | If the conditional GET should fail, the client SHOULD generate a | |||
| SUBSCRIBE refresh request to trigger a new NOTIFY. The server will | SUBSCRIBE refresh request to trigger a new NOTIFY. The server will | |||
| always generate a "reference" XML diff document on receipt of a | always generate a "reference" XML diff document on receipt of a | |||
| SUBSCRIBE refresh. This establishes a new set of baseline etags, and | SUBSCRIBE refresh. This establishes a new set of baseline etags, and | |||
| the client can then attempt to do another fetch. It is anticipated | the client can then attempt to do another fetch. [[ISSUE: this is | |||
| that future extensions to the profile delivery framework will allow a | really awful; we should include a parameter in the subscription which | |||
| client to include, in its SUBSCRIBE request, an indicator of the | allows the client to indicate which version it has. That would | |||
| current version of the documents it holds. That would obviate the | obviate the need for a potentially never-ending stream of SUBSCRIBE/ | |||
| need for a potentially never-ending stream of SUBSCRIBE/GET sequences | GET sequences should the documents be rapidly changing, for some | |||
| should the documents be rapidly changing, for some reason. | reason.]] | |||
| Once the client has obtained the versions of the documents identified | Once the client has obtained the versions of the documents identified | |||
| in the reference XML diff, it can process NOTIFY requests on that | in the reference XML diff, it can process NOTIFY requests on that | |||
| subscription. To process the NOTIFY requests, it makes sure that its | subscription. To process the NOTIFY requests, it makes sure that its | |||
| current version matches the version in the "previous-etag" attribute | current version matches the version in the "previous-etag" attribute | |||
| of the <document> element. If not, the client can then fetch the | of the <document> element. If not, the client can then fetch the | |||
| updated document from the server. If they do match, the client has | updated document from the server. If they do match, the client has | |||
| the most current version. | the most current version. | |||
| 7. Security Considerations | 7. Security Considerations | |||
| XCAP diff documents are not very sensitive; they only contain entity | XCAP diff documents can include changes from one document to another. | |||
| tags and the URI for documents. An attacker that is able to examine | As a consequence, if the document itself is sensitive and requires | |||
| such a document cannot access or modify the referenced document | confidentiality, integrity or authentication, than the same applies | |||
| unless it has also managed to attack XCAP itself. Thus, there is no | to the XCAP diff format. Therefore, protocols which transport XCAP | |||
| requirement for message confidentiality. However, an attacker that | diff documents must provide sufficient security capabilities for | |||
| can modify XCAP diff documents in transit could fool a client into | transporting the document itself. | |||
| thinking that a document hasn't changed, when it has, or vice-a- | ||||
| versa. Therefore, protocols which transport XCAP Diff documents | ||||
| SHOULD provide message integrity. | ||||
| 8. IANA Considerations | 8. IANA Considerations | |||
| There are several IANA considerations associated with this | There are several IANA considerations associated with this | |||
| specification. | specification. | |||
| 8.1 application/xcap-diff+xml MIME Type | 8.1 application/xcap-diff+xml MIME Type | |||
| MIME media type name: application | MIME media type name: application | |||
| skipping to change at page 11, line 16 ¶ | skipping to change at page 12, line 16 ¶ | |||
| [5] Moats, R., "A URN Namespace for IETF Documents", RFC 2648, | [5] Moats, R., "A URN Namespace for IETF Documents", RFC 2648, | |||
| August 1999. | August 1999. | |||
| [6] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [6] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| January 2004. | January 2004. | |||
| [7] Bradner, S., "Key words for use in RFCs to Indicate Requirement | [7] Bradner, S., "Key words for use in RFCs to Indicate Requirement | |||
| Levels", BCP 14, RFC 2119, March 1997. | Levels", BCP 14, RFC 2119, March 1997. | |||
| [8] Rosenberg, J., "The Extensible Markup Language (XML) | [8] Rosenberg, J., "The Extensible Markup Language (XML) | |||
| Configuration Access Protocol (XCAP)", draft-ietf-simple-xcap-07 | Configuration Access Protocol (XCAP)", draft-ietf-simple-xcap-08 | |||
| (work in progress), June 2005. | (work in progress), October 2005. | |||
| [9] Petrie, D., "A Framework for Session Initiation Protocol User | [9] Urpalainen, J., "An Extensible Markup Language (XML) Patch | |||
| Agent Profile Delivery", draft-ietf-sipping-config-framework-07 | Operations Framework Utilizing XML Path Language (XPath) | |||
| (work in progress), July 2005. | Selectors", draft-ietf-simple-xml-patch-ops-01 (work in | |||
| progress), January 2006. | ||||
| 9.2 Informative References | 9.2 Informative References | |||
| [10] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., | [10] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., | |||
| Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: | Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: | |||
| Session Initiation Protocol", RFC 3261, June 2002. | Session Initiation Protocol", RFC 3261, June 2002. | |||
| [11] Roach, A., "Session Initiation Protocol (SIP)-Specific Event | [11] Roach, A., "Session Initiation Protocol (SIP)-Specific Event | |||
| Notification", RFC 3265, June 2002. | Notification", RFC 3265, June 2002. | |||
| skipping to change at page 13, line 41 ¶ | skipping to change at page 14, line 41 ¶ | |||
| This document and the information contained herein are provided on an | This document and the information contained herein are provided on an | |||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | |||
| ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | |||
| INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | |||
| INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| Copyright Statement | Copyright Statement | |||
| Copyright (C) The Internet Society (2005). This document is subject | Copyright (C) The Internet Society (2006). This document is subject | |||
| to the rights, licenses and restrictions contained in BCP 78, and | to the rights, licenses and restrictions contained in BCP 78, and | |||
| except as set forth therein, the authors retain all their rights. | except as set forth therein, the authors retain all their rights. | |||
| Acknowledgment | Acknowledgment | |||
| Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is currently provided by the | |||
| Internet Society. | Internet Society. | |||
| End of changes. 26 change blocks. | ||||
| 104 lines changed or deleted | 135 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||