| < draft-winterbottom-geopriv-held-context-01.txt | draft-winterbottom-geopriv-held-context-02.txt > | |||
|---|---|---|---|---|
| Geopriv J. Winterbottom | Geopriv J. Winterbottom | |||
| Internet-Draft Andrew Corporation | Internet-Draft Andrew Corporation | |||
| Intended status: Standards Track H. Tschofenig | Intended status: Standards Track H. Tschofenig | |||
| Expires: April 8, 2008 Nokia Siemens Networks | Expires: August 23, 2008 Nokia Siemens Networks | |||
| M. Thomson | M. Thomson | |||
| Andrew Corporation | Andrew Corporation | |||
| October 6, 2007 | February 20, 2008 | |||
| HELD Protocol Context Management Extensions | HELD Protocol Context Management Extensions | |||
| draft-winterbottom-geopriv-held-context-01.txt | draft-winterbottom-geopriv-held-context-02.txt | |||
| 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 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
| 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 8, 2008. | This Internet-Draft will expire on August 23, 2008. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2008). | |||
| Abstract | Abstract | |||
| This document describes a protocol extension for the HTTP Enabled | This document describes a protocol extension for the HTTP Enabled | |||
| Location Delivery (HELD) protocol. It allows a Target to manage | Location Delivery (HELD) protocol. It allows a Target to manage | |||
| their location information on a Location Information Server (LIS) | their location information on a Location Information Server (LIS) | |||
| through the application of constraints invoked by accessing a | through the application of constraints invoked by accessing a | |||
| location URI. Constraints described in this memo restrict how often | location URI. Constraints described in this memo restrict how often | |||
| location can be accessed through a location URI, how long the URI is | location can be accessed through a location URI, how long the URI is | |||
| valid for, and the type of location information returned when a | valid for, and the type of location information returned when a | |||
| skipping to change at page 2, line 29 ¶ | skipping to change at page 2, line 29 ¶ | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. What is a Context? . . . . . . . . . . . . . . . . . . . . . . 5 | 3. What is a Context? . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. Constraints . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Constraints . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.1. Limited Use URIs . . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Limited Use URIs . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4.2. Snapshot URIs . . . . . . . . . . . . . . . . . . . . . . 7 | 4.2. Snapshot URIs . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.3. Location Type URIs . . . . . . . . . . . . . . . . . . . . 7 | 4.3. Location Type URIs . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. Protocol Details . . . . . . . . . . . . . . . . . . . . . . . 8 | 5. Protocol Details . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.1. Create Context Message . . . . . . . . . . . . . . . . . . 8 | 5.1. Create Context Message . . . . . . . . . . . . . . . . . . 8 | |||
| 5.2. Update Context Message . . . . . . . . . . . . . . . . . . 9 | 5.2. Update Context Message . . . . . . . . . . . . . . . . . . 9 | |||
| 5.3. Context Response Message . . . . . . . . . . . . . . . . . 10 | 5.3. Context Response Message . . . . . . . . . . . . . . . . . 10 | |||
| 5.4. Context Error Messages . . . . . . . . . . . . . . . . . . 12 | 5.4. Context Errors . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.5. Location URI and Context Identifier Generation Rules . . . 12 | 5.5. Location URI and Context Identifier Generation Rules . . . 12 | |||
| 6. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 6. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 8.1. URN Sub-Namespace Registration for | 8.1. URN Sub-Namespace Registration for | |||
| urn:ietf:params:xml:ns:geopriv:held:context . . . . . . . 19 | urn:ietf:params:xml:ns:geopriv:held:context . . . . . . . 19 | |||
| 8.2. XML Schema Registration . . . . . . . . . . . . . . . . . 19 | 8.2. XML Schema Registration . . . . . . . . . . . . . . . . . 19 | |||
| 8.3. New HELD Error Code Registration . . . . . . . . . . . . . 20 | ||||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 21 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| Appendix A. Context Extensions . . . . . . . . . . . . . . . . . 22 | Appendix A. Context Extensions . . . . . . . . . . . . . . . . . 22 | |||
| Appendix B. HELD Compliance to IETF Location Configuration | Appendix B. HELD Compliance to IETF Location Configuration | |||
| Protocol Location Reference Requirements . . . . . . 24 | Protocol Location Reference Requirements . . . . . . 24 | |||
| 10. Normative References . . . . . . . . . . . . . . . . . . . . . 26 | 10. Normative References . . . . . . . . . . . . . . . . . . . . . 26 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| Intellectual Property and Copyright Statements . . . . . . . . . . 28 | Intellectual Property and Copyright Statements . . . . . . . . . . 28 | |||
| 1. Introduction | 1. Introduction | |||
| skipping to change at page 5, line 23 ¶ | skipping to change at page 5, line 23 ¶ | |||
| from the URI to the Target's location. This specification provides a | from the URI to the Target's location. This specification provides a | |||
| degree of control to the Target, allowing it to specify rules to the | degree of control to the Target, allowing it to specify rules to the | |||
| LIS on how a context should map a URI to location information. | LIS on how a context should map a URI to location information. | |||
| A context expires when it reaches a certain age, at which time the | A context expires when it reaches a certain age, at which time the | |||
| mapping between the URI and the Target's location ceases. In the | mapping between the URI and the Target's location ceases. In the | |||
| basic HELD specification the exiry time of the context is determined | basic HELD specification the exiry time of the context is determined | |||
| by the LIS when the Target requests a location URI. By allowing the | by the LIS when the Target requests a location URI. By allowing the | |||
| Target to specify and change the life time of a context the Target is | Target to specify and change the life time of a context the Target is | |||
| able to create URIs for limited periods, or to terminate URIs for | able to create URIs for limited periods, or to terminate URIs for | |||
| which it longer wishes its location to be returned. This | which it no longer wishes its location to be returned. This | |||
| specification provides explicit support for this functionality. | specification provides explicit support for this functionality. | |||
| 4. Constraints | 4. Constraints | |||
| Constraints restrict the ability of a Location Recipient to resolve a | Constraints restrict the ability of a Location Recipient to resolve a | |||
| location URI to location information. The constraints are selected | location URI to location information. The constraints are selected | |||
| by the Target and they are provided to the LIS that maintains them | by the Target and they are provided to the LIS that maintains them | |||
| along with the context. A LIS, understanding this specification, | along with the context. A LIS, understanding this specification, | |||
| receives constraints provided by the Target, and returns a set of | receives constraints provided by the Target, and returns a set of | |||
| URIs influenced by the constraints. | URIs influenced by the constraints. | |||
| A single Target may want to place different contraints on different | A single Target may want to place different contraints on different | |||
| references and hence may have multiple contexts on the LIS. The | references and hence may have multiple contexts on the LIS. The | |||
| constraints describe what actions the LIS MUST take when a URI | constraints describe what actions the LIS MUST take when a URI | |||
| associated with the context is accessed. This document describes | associated with the context is accessed. This document describes | |||
| three basic constraints that a Target can use in comination for the | three basic constraints that a Target can use in combination for the | |||
| same context. Once set, these rules remain in force of the life of | same context. Once set, these rules remain in force of the life of | |||
| the context. | the context. | |||
| 4.1. Limited Use URIs | 4.1. Limited Use URIs | |||
| A limited use URI can only be accessed a fixed number of times to | A limited use URI can only be accessed a fixed number of times to | |||
| yield the location of the Target. Each time the URI is used to | yield the location of the Target. Each time the URI is used to | |||
| provide the location of the Target one usage is consumed. Once the | provide the location of the Target one usage is consumed. Once the | |||
| limit is reached the URI no longer yields the location of the Target | limit is reached the URI no longer yields the location of the Target | |||
| and the URI is deemed spent. | and the URI is deemed spent. | |||
| skipping to change at page 6, line 42 ¶ | skipping to change at page 6, line 42 ¶ | |||
| location only once. Setting the usage limit to something higher than | location only once. Setting the usage limit to something higher than | |||
| 1 creates functionality analogous to a metro-ticket, where a Location | 1 creates functionality analogous to a metro-ticket, where a Location | |||
| Recipient in possession of the URI can access the Target's location | Recipient in possession of the URI can access the Target's location | |||
| many more times, but not exceeding the imposed limit. | many more times, but not exceeding the imposed limit. | |||
| Not setting a usage limit provides similar semantics to the URI in | Not setting a usage limit provides similar semantics to the URI in | |||
| the base HELD specification, enabling a Location Recipient to | the base HELD specification, enabling a Location Recipient to | |||
| continually obtain the Target's location until the URI expires due to | continually obtain the Target's location until the URI expires due to | |||
| age. | age. | |||
| When an HTTP URI is assigned to a context, the limit is the number of | When a HELD URI is assigned to a context, the limit is the number of | |||
| times that the URI can be accessed before the LIS returns an error. | times that the URI can be accessed before the LIS returns an error. | |||
| In the case of SIP it is the number of NOTIFY messages that are sent | In the case of SIP or pres URIs it is the number of NOTIFY messages | |||
| prior to the LIS returning an error. Where a context supports both | that are sent prior to the LIS returning an error. Where a context | |||
| SIP and HTTP URIs it is the combination of URI accesses and NOTIFY | supports SIP, pres, and HELD URIs it is the combination of URI | |||
| messages that constitutes the usage value, each time the Target's | accesses and NOTIFY messages that constitutes the usage value, each | |||
| location is provided constitutes a usage. | time the Target's location is provided constitutes a usage. | |||
| 4.2. Snapshot URIs | 4.2. Snapshot URIs | |||
| A snapshot URI points to the location of the Target at a specific | A snapshot URI points to the location of the Target at a specific | |||
| point in time, and no matter how many times the URI is accessed it | point in time, and no matter how many times the URI is accessed it | |||
| will always yield the same location. This is useful if, for example, | will always yield the same location. This is useful if, for example, | |||
| the Target does not want to be tracked. In this specification the | the Target does not want to be tracked. In this specification the | |||
| location snapshot to which a snapshot URIs points is captured when | location snapshot to which a snapshot URIs points is captured when | |||
| the context is created on the LIS. | the context is created on the LIS. | |||
| 4.3. Location Type URIs | 4.3. Location Type URIs | |||
| A location type URI controls the form of location that can be | A location type URI controls the form of location that can be | |||
| accessed; This may be geodetic, civic, or both. | accessed; This may be geodetic, civic, or both. | |||
| 5. Protocol Details | 5. Protocol Details | |||
| This specification introduces four new HELD messages, create context | This specification introduces three new HELD messages, create context | |||
| (<createContext>), update context (<updateContext>), context response | (<createContext>), update context (<updateContext>), and context | |||
| (<contextResponse>), and context error (<contextError>). A LIS that | response (<contextResponse>). A LIS that does not understand this | |||
| does not understand this specification is expected to return a HELD | specification is expected to return a HELD _unsupportedMessage_ error | |||
| _unsupportedMessage_ error code in a HELD error message. | code in a HELD error message. A LIS that does understand this | |||
| specification returns errors associated with context operations in a | ||||
| HELD error message. New error codes relating to failed context | ||||
| operations are defined in this specification. | ||||
| The specification assumes that the LIS was discovered as part of the | The specification assumes that the LIS was discovered as part of the | |||
| general HELD LIS discovery process. All messages are sent using the | general HELD LIS discovery process. All messages are sent using the | |||
| application/held+xml MIME type as defined in | application/held+xml MIME type as defined in | |||
| [I-D.ietf-geopriv-http-location-delivery]. | [I-D.ietf-geopriv-http-location-delivery]. | |||
| 5.1. Create Context Message | 5.1. Create Context Message | |||
| The Target creates a context on the LIS using a create context | The Target creates a context on the LIS using a create context | |||
| message. The basic create context message supports the constraints | message. The basic create context message supports the constraints | |||
| skipping to change at page 8, line 37 ¶ | skipping to change at page 8, line 40 ¶ | |||
| positive integer, and has a default value of _unlimited_. The LIS | positive integer, and has a default value of _unlimited_. The LIS | |||
| SHOULD support the Target specifying up to at least 100 uses. | SHOULD support the Target specifying up to at least 100 uses. | |||
| o "snapshot": an optional attribute instructing the LIS to take a | o "snapshot": an optional attribute instructing the LIS to take a | |||
| snapshot of the Target's location for use with the context. This | snapshot of the Target's location for use with the context. This | |||
| a boolean value and has a default of _false_ meaning that a | a boolean value and has a default of _false_ meaning that a | |||
| snapshot is not taken, and the Target's location is determined | snapshot is not taken, and the Target's location is determined | |||
| each time the URI is accessed. | each time the URI is accessed. | |||
| o "locationType": an optional attribute instructing the LIS on the | o "locationType": an optional attribute instructing the LIS on the | |||
| form of location that URI MUST provide. This is an enumeration | form of location that the URI MUST return. This is an enumeration | |||
| and may have a value of _geodetic_, _civic_, or _any_. If | and may have a value of _geodetic_, _civic_, or _any_. If | |||
| unspecified by the Target the LIS will use a value of _any_. If | unspecified by the Target the LIS will use a value of _any_. If | |||
| the Target specifies a location type that the LIS cannot provide, | the Target specifies a location type that the LIS cannot provide, | |||
| then the LIS MUST fail the context creation. | then the LIS MUST fail the context creation. | |||
| o "lifeTime": is a mandatory element that defines the maximum period | o "lifeTime": is a mandatory element that defines the maximum period | |||
| in seconds that the LIS should keep the context for. The LIS MAY | in seconds that the LIS should keep the context for. The LIS MAY | |||
| create the context with a shorter life time than was requested, | create the context with a shorter life time than was requested, | |||
| but the life time MUST NOT be longer than was requested. | but the life time MUST NOT be longer than was requested. | |||
| <hc:createContext | <createContext | |||
| xmlns:hc="urn:ietf:params:xml:ns:geopriv:held:context" | xmlns="urn:ietf:params:xml:ns:geopriv:held:context" | |||
| uses="10" | uses="10" | |||
| snapshot="false" | snapshot="false" | |||
| locationType="any"> | locationType="any"> | |||
| <hc:lifeTime>7200</hc:lifeTime> | <lifeTime>7200</lifeTime> | |||
| </hc:createContext> | </createContext> | |||
| Figure 1: createContext Example | Figure 1: createContext Example | |||
| Figure 1 shows a create context message defining a context which: | Figure 1 shows a create context message defining a context which: | |||
| o may be accessed 10 times | o may be accessed 10 times | |||
| o will determine the location of the Target each time it is accessed | o will determine the location of the Target each time it is accessed | |||
| o will return the location in either geodetic or civic form | o will return the location in either geodetic or civic form | |||
| depending on the request tot he URI | depending on the request to the URI | |||
| o will be valid for 2 hours from the time of context creation | o will be valid for 2 hours from the time of context creation | |||
| 5.2. Update Context Message | 5.2. Update Context Message | |||
| A Target can change the life time of a context using an update | A Target can change the life time of a context using an update | |||
| context message. As stated in Section 4 the three attributes used in | context message. As stated in Section 4 the three attributes used in | |||
| the context creation, "uses", "snapshot", and "locationType" cannot | the context creation, "uses", "snapshot", and "locationType" cannot | |||
| be changed once a context is created. | be changed once a context is created. | |||
| Since the Target may have more than one context on the LIS, the | Since the Target may have more than one context on the LIS, the | |||
| Target needs to identify the context to be updated. It does this by | Target needs to identify the context to be updated. It does this by | |||
| including a context identifier that is provided to it by the LIS when | including a context identifier that is provided to it by the LIS when | |||
| the context is created. | the context is created. | |||
| <hc:updateContext | <updateContext | |||
| xmlns:hc="urn:ietf:params:xml:ns:geopriv:held:context" | xmlns="urn:ietf:params:xml:ns:geopriv:held:context" | |||
| hc:id="uhvuhdbnuiehudbnvcujevuijeijcvij3"> | id="uhvuhdbnuiehudbnvcujevuijeijcvij3"> | |||
| <lifeTime>3600</lifeTime> | <lifeTime>3600</lifeTime> | |||
| </hc:updateContext> | </updateContext> | |||
| Figure 2: updateContext Life Time Change Example | Figure 2: updateContext Life Time Change Example | |||
| When a Target includes a life time element in an update context | When a Target includes a life time element in an update context | |||
| message, the LIS needs to calculate a new context expiry time. The | message, the LIS needs to calculate a new context expiry time. The | |||
| LIS MUST do this by adding the new life time value to the current | LIS MUST do this by adding the new life time value to the current | |||
| time on the LIS. This mechanism means the Target can terminate a | time on the LIS. This mechanism means the Target can terminate a | |||
| context at any time. It does this by updating the context with a | context at any time. It does this by updating the context with a | |||
| life time of 0, which results in the LIS setting the context expiry | life time of 0, which results in the LIS setting the context expiry | |||
| time to the present. The LIS MAY also terminate a context if the | time to the present. The LIS MAY also terminate a context if the | |||
| life time value is set to less than 10 seconds. | life time value is set to less than 10 seconds. | |||
| <hc:updateContext | <updateContext | |||
| xmlns:hc="urn:ietf:params:xml:ns:geopriv:held:context" | xmlns="urn:ietf:params:xml:ns:geopriv:held:context" | |||
| hc:id="uhvuhdbnuiehudbnvcujevuijeijcvij3"> | id="uhvuhdbnuiehudbnvcujevuijeijcvij3"> | |||
| <lifeTime>0</lifeTime> | <lifeTime>0</lifeTime> | |||
| </lhc:updateContext> | </updateContext> | |||
| Figure 3: updateContext Termination Example | Figure 3: updateContext Termination Example | |||
| 5.3. Context Response Message | 5.3. Context Response Message | |||
| The LIS informs the Target about the outcome of context operations | The LIS informs the Target about the outcome of context operations | |||
| through the context response message. The LIS MUST always send a | through the context response message. The LIS MUST always send a | |||
| context response message to a Target in response to a create context | context response message to a Target in response to a create context | |||
| or update context message when the outcome was successful. The | or update context message when the outcome was successful. The | |||
| context response message contains a "code" attribute indicating the | context response message contains a "code" attribute indicating the | |||
| skipping to change at page 10, line 34 ¶ | skipping to change at page 10, line 34 ¶ | |||
| The "code" attribute is an enumerated type and has one of the | The "code" attribute is an enumerated type and has one of the | |||
| following values: | following values: | |||
| o _created_: The context was successfully created. | o _created_: The context was successfully created. | |||
| o _destroyed_: The context was destroyed. | o _destroyed_: The context was destroyed. | |||
| o _updated_: The context was successfully updated. | o _updated_: The context was successfully updated. | |||
| The following list details the other attributes are may be returned | The following list details the other attributes that may be returned | |||
| in a context response message. | in a context response message. | |||
| id: The identifier allocated to the context by the LIS. This | id: The identifier allocated to the context by the LIS. This | |||
| identifier is unique in the scope of the LIS. The Target MUST | identifier is unique in the scope of the LIS. The Target MUST | |||
| keep this secret and MUST included it in all update requests. The | keep this secret and MUST included it in all update requests. The | |||
| LIS MUST return and "id" in all context response messages. | LIS MUST return an "id" in all context response messages. | |||
| uses: The number of times that the context will yield the Target's | uses: The number of times that the context will yield the Target's | |||
| location. The LIS MAY report either the original value, or the | location. The LIS MAY report either the original value, or the | |||
| number of remaining uses. The LIS MUST report this value for all | number of remaining uses. The LIS MUST report this value for all | |||
| responses pertaining to a known and valid context. This value MAY | responses pertaining to a known and valid context. This value MAY | |||
| be ommitted when indicating that a context has been destroyed. | be ommitted when indicating that a context has been destroyed. | |||
| snapshot: The value of the snapshot attribute in the context. The | snapshot: The value of the snapshot attribute in the context. The | |||
| LIS MUST report this value for all responses pertaining to a known | LIS MUST report this value for all responses pertaining to a known | |||
| and valid context. This value MAY be ommitted when indicating | and valid context. This value MAY be ommitted when indicating | |||
| skipping to change at page 11, line 30 ¶ | skipping to change at page 11, line 30 ¶ | |||
| of _destroyed_ is included in the context repsonse message. | of _destroyed_ is included in the context repsonse message. | |||
| In addition to the above attributes, the LIS also provides a set of | In addition to the above attributes, the LIS also provides a set of | |||
| URIs that can used to access the Target's location with the surety | URIs that can used to access the Target's location with the surety | |||
| that the context constraints will be applied. A URI set is returned | that the context constraints will be applied. A URI set is returned | |||
| whenever a context is successfully created on the LIS, and this set | whenever a context is successfully created on the LIS, and this set | |||
| remains unchanged for the lifetime of the context. A context | remains unchanged for the lifetime of the context. A context | |||
| response message sent in reply to the create context message in | response message sent in reply to the create context message in | |||
| Figure 1 might look like Figure 4. | Figure 1 might look like Figure 4. | |||
| <hc:contextResponse | <contextResponse | |||
| xmlns:hc="urn:ietf:params:xml:ns:geopriv:held:context" | xmlns="urn:ietf:params:xml:ns:geopriv:held:context" | |||
| code="created" | code="created" | |||
| id="uhvuhdbnuiehudbnvcujevuijeijcvij4" | id="uhvuhdbnuiehudbnvcujevuijeijcvij4" | |||
| uses="10" | uses="10" | |||
| snapshot="false" | snapshot="false" | |||
| locationType="any" | locationType="any" | |||
| expires="2007-11-01T13:30:00"> | expires="2007-11-01T13:30:00"> | |||
| <hc:locationUriSet> | <locationUriSet> | |||
| <hc:locationURI> | <locationURI> | |||
| https://lis.example.com:9768/357yc6s64ceyoiuy5ax3o4 | held://lis.example.com:9768/357yc6s64ceyoiuy5ax3o4 | |||
| </hc:locationURI> | </locationURI> | |||
| <hc:locationURI> | <locationURI> | |||
| sips:357yc6s64ceyoiuy5ax3o4@lis.example.com:9769 | sips:357yc6s64ceyoiuy5ax3o4@lis.example.com:9769 | |||
| </hc:locationURI> | </locationURI> | |||
| </hc:locationUriSet> | </locationUriSet> | |||
| </hc:contextResponse> | </contextResponse> | |||
| Figure 4: contextResponse Example | Figure 4: contextResponse Example | |||
| 5.4. Context Error Messages | 5.4. Context Errors | |||
| When the LIS unable to perform the requested context operation it | When the LIS unable to perform the requested context operation it | |||
| need to inform the Target of this. It does this using a context | need to inform the Target of this. It does this using a held error | |||
| error message. The context error message consists of a "errorCode" | message. New codes are defined for context operation errors: | |||
| and an optional "message" attribute. The code indicates what went | ||||
| wrong, the message is human-readable text that may provide additional | ||||
| information on what occurred. | ||||
| The "errorCode" attribute is an enumerated type and has one of the | ||||
| following values: | ||||
| o _badMessage_: The LIS was unable to understand the content of the | o _badContextMessage_: The LIS was unable to understand the content | |||
| message. | of the message. In general this will apply to context messages | |||
| containing extensions that the LIS does not understand. | ||||
| o _unknownContext_: The LIS was unable to find the context. | o _unknownContext_: The LIS was unable to find the context. | |||
| o _failed_: The LIS was unable to perform the requested operation. | o _updateContextFailed_: The LIS was unable to updated the requested | |||
| context. | ||||
| A Target implementing this specification MUST accept a HELD error | o _createContextFailed_: The LIS was unable to created the requested | |||
| context. | ||||
| A Target implementing this specification MUST accept a any HELD error | ||||
| message as a valid response to a create context or update context | message as a valid response to a create context or update context | |||
| message. | message as a LIS may not understand context messages. A LIS that | |||
| does understand context messages is expected to return the error | ||||
| codes above unde the prescribed circumstances. | ||||
| <hc:contextError | <error xmlns="urn:ietf:params:xml:ns:geopriv:held" | |||
| xmlns:hc="urn:ietf:params:xml:ns:geopriv:held:context" | code="createContextFailed" | |||
| code="failed" | message="locationType of Civic is not supported"/> | |||
| message="unable to update context"> | ||||
| </hc:contextError> | ||||
| Figure 5: contextError With Message Example | Figure 5: Example Error Message | |||
| 5.5. Location URI and Context Identifier Generation Rules | 5.5. Location URI and Context Identifier Generation Rules | |||
| A primary aim of this specification is to provide a Target a means to | A primary aim of this specification is to provide a Target a means to | |||
| cancel a location URI so that it can no longer be used to provide its | cancel a location URI so that it can no longer be used to provide its | |||
| location. To achieve this, a location URI generated as part of a | location. To achieve this, a location URI generated as part of a | |||
| context creation needs to be unique with in the scope of the LIS, and | context creation needs to be unique with in the scope of the LIS, and | |||
| identify only that context. If the Target destroys a context and | identify only that context. If the Target destroys a context and | |||
| subsequently creates a new one, URIs associated the new context MUST | subsequently creates a new one, URIs associated the new context MUST | |||
| be different from those generated for the previous context. | be different from those generated for the previous context. | |||
| [I-D.ietf-geopriv-http-location-delivery] and | [I-D.ietf-geopriv-http-location-delivery] and | |||
| [I-D.ietf-geopriv-lbyr-requirements] provide guideance on the | [I-D.ietf-geopriv-lbyr-requirements] provide guidance on the creation | |||
| creation and desired characteristcs of a location URI. | and desired characteristcs of a location URI. | |||
| The context identifier provided by the LIS to the Target in the | The context identifier provided by the LIS to the Target in the | |||
| context response message MUST be unique and MUST be different from | context response message MUST be unique and MUST be different from | |||
| the identifier provided in any location URI. This latter constraint | the identifier provided in any location URI, and it MUST NOT be | |||
| ensures that possession of a location URI does not automatically | feasible to determine the context-ID from the location URI. This | |||
| provide access and control over the internals of the context. | constraint ensures that possession of a location URI does not | |||
| automatically provide access and control over the internals of the | ||||
| context. It MAY be feasible to determined the location URI knowing | ||||
| the context-ID however. | ||||
| A context identifier is generated by a LIS to uniquely identify a | A context identifier is generated by a LIS to uniquely identify a | |||
| context. It MUST NOT be feasible for a third-party to easily | context. It MUST NOT be feasible for a third-party to easily | |||
| determine a context identifier by knowing the identity of the Target. | determine a context identifier by knowing the identity of the Target. | |||
| This implies that internal correlation (using a hash-table or | This implies that internal correlation (using a hash-table or | |||
| similar) is the only method that the LIS can use to associate a | similar) is the only method that the LIS can use to associate a | |||
| context id with a particular Target. | context id with a particular Target. | |||
| 6. XML Schema | 6. XML Schema | |||
| skipping to change at page 14, line 31 ¶ | skipping to change at page 14, line 31 ¶ | |||
| </xs:simpleType> | </xs:simpleType> | |||
| <xs:simpleType name="codeType"> | <xs:simpleType name="codeType"> | |||
| <xs:restriction base="xs:token"> | <xs:restriction base="xs:token"> | |||
| <xs:enumeration value="created"/> | <xs:enumeration value="created"/> | |||
| <xs:enumeration value="updated"/> | <xs:enumeration value="updated"/> | |||
| <xs:enumeration value="destroyed"/> | <xs:enumeration value="destroyed"/> | |||
| </xs:restriction> | </xs:restriction> | |||
| </xs:simpleType> | </xs:simpleType> | |||
| <xs:simpleType name="errorCodeType"> | ||||
| <xs:restriction base="xs:token"> | ||||
| <xs:enumeration value="badMessage"/> | ||||
| <xs:enumeration value="unknownContext"/> | ||||
| <xs:enumeration value="failed"/> | ||||
| </xs:restriction> | ||||
| </xs:simpleType> | ||||
| <xs:simpleType name="useType"> | <xs:simpleType name="useType"> | |||
| <xs:union> | <xs:union memberTypes="xs:positiveInteger"> | |||
| <xs:simpleType> | <xs:simpleType> | |||
| <xs:restriction base="xs:token"> | <xs:restriction base="xs:token"> | |||
| <xs;enumeration value="unlimited"/> | <xs:enumeration value="unlimited"/> | |||
| </xs:restriction> | </xs:restriction> | |||
| </xs:simpleType> | </xs:simpleType> | |||
| <xs:positiveInteger/> | ||||
| </xs:union> | </xs:union> | |||
| </xs:simpleType> | </xs:simpleType> | |||
| <xs:complexType name="createContextMsg"> | <xs:complexType name="createContextMsg"> | |||
| <xs:complexContent> | <xs:complexContent> | |||
| <xs:restriction base="xs:anyType"> | <xs:restriction base="xs:anyType"> | |||
| <xs:sequence> | <xs:sequence> | |||
| <xs:element name="lifeTime" type="xs:nonNegativeInteger " | <xs:element name="lifeTime" type="xs:nonNegativeInteger " | |||
| minOccurs="1" maxOccurs="1"/> | minOccurs="1" maxOccurs="1"/> | |||
| <xs:any namespace="##other" processContents="lax" | <xs:any namespace="##other" processContents="lax" | |||
| skipping to change at page 15, line 13 ¶ | skipping to change at page 15, line 4 ¶ | |||
| <xs:complexContent> | <xs:complexContent> | |||
| <xs:restriction base="xs:anyType"> | <xs:restriction base="xs:anyType"> | |||
| <xs:sequence> | <xs:sequence> | |||
| <xs:element name="lifeTime" type="xs:nonNegativeInteger " | <xs:element name="lifeTime" type="xs:nonNegativeInteger " | |||
| minOccurs="1" maxOccurs="1"/> | minOccurs="1" maxOccurs="1"/> | |||
| <xs:any namespace="##other" processContents="lax" | <xs:any namespace="##other" processContents="lax" | |||
| minOccurs="0" maxOccurs="unbounded"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
| </xs:sequence> | </xs:sequence> | |||
| <xs:attribute name="uses" type="heldCx:useType" | <xs:attribute name="uses" type="heldCx:useType" | |||
| use="optional" default="unlimited"/> | use="optional" default="unlimited"/> | |||
| <xs:attribute name="snapshot" type="xs:boolean" | <xs:attribute name="snapshot" type="xs:boolean" | |||
| use="optional" default="false"/> | use="optional" default="false"/> | |||
| <xs:attribute name="locationType" type="heldCx:locationType" | <xs:attribute name="locationType" type="heldCx:locationType" | |||
| use="optional" default="any"/> | use="optional" default="any"/> | |||
| <xs:anyAttribute namespace="##any" processContents="lax"/> | <xs:anyAttribute namespace="##any" processContents="lax"/> | |||
| </xs:restriction> | </xs:restriction> | |||
| </xs:complexContent> | </xs:complexContent> | |||
| </xs:complexType> | </xs:complexType> | |||
| <xs:complexType name="uriSetType"> | <xs:complexType name="uriSetType"> | |||
| <xs:complexContent> | <xs:complexContent> | |||
| <xs:restriction base="xs:anyType"> | ||||
| <xs:sequence> | <xs:sequence> | |||
| <xs:element name="locationURI" type="xs:anyURI" | <xs:element name="locationURI" type="xs:anyURI" | |||
| maxOccurs="unbounded"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
| </xs:sequence> | </xs:sequence> | |||
| </xs:restriction> | ||||
| </xs:complexContent> | </xs:complexContent> | |||
| </xs:complexType> | </xs:complexType> | |||
| <xs:complexType name="contextResponseMsg"> | <xs:complexType name="contextResponseMsg"> | |||
| <xs:complexContent> | <xs:complexContent> | |||
| <xs:restriction base="xs:anyType"> | <xs:restriction base="xs:anyType"> | |||
| <xs:sequence> | <xs:sequence> | |||
| <xs:element name="locationUriSet" type="heldCx:uriSetType" | <xs:element name="locationUriSet" type="heldCx:uriSetType" | |||
| minOccurs="1" maxOccurs="1"/> | minOccurs="1" maxOccurs="1"/> | |||
| <xs:any namespace="##other" processContents="lax" | <xs:any namespace="##other" processContents="lax" | |||
| skipping to change at page 16, line 4 ¶ | skipping to change at page 15, line 46 ¶ | |||
| <xs:attribute name="expires" type="xs:dateTime" | <xs:attribute name="expires" type="xs:dateTime" | |||
| use="required"/> | use="required"/> | |||
| <xs:attribute name="uses" type="xs:positiveInteger" | <xs:attribute name="uses" type="xs:positiveInteger" | |||
| use="optional"/> | use="optional"/> | |||
| <xs:attribute name="snapshot" type="xs:boolean" | <xs:attribute name="snapshot" type="xs:boolean" | |||
| use="optional"/> | use="optional"/> | |||
| <xs:attribute name="locationType" type="heldCx:locationType" | <xs:attribute name="locationType" type="heldCx:locationType" | |||
| use="optional"/> | use="optional"/> | |||
| <xs:attribute name="code" type="heldCx:codeType" | <xs:attribute name="code" type="heldCx:codeType" | |||
| use="required"/> | use="required"/> | |||
| <xs:anyAttribute namespace="##any" processContents="lax"/> | <xs:anyAttribute namespace="##any" processContents="lax"/> | |||
| </xs:restriction> | </xs:restriction> | |||
| </xs:complexContent> | </xs:complexContent> | |||
| </xs:complexType> | </xs:complexType> | |||
| <xs:complexType name="updateContextMsg"> | <xs:complexType name="updateContextMsg"> | |||
| <xs:complexContent> | <xs:complexContent> | |||
| <xs:restriction base="heldCx:"> | <xs:restriction base="xs:anyType"> | |||
| <xs:sequence> | <xs:sequence> | |||
| <xs:element name="lifeTime" type="xs:nonNegativeInteger " | <xs:element name="lifeTime" type="xs:nonNegativeInteger " | |||
| minOccurs="0" maxOccurs="1"/> | minOccurs="0" maxOccurs="1"/> | |||
| <xs:any namespace="##other" processContents="lax" | <xs:any namespace="##other" processContents="lax" | |||
| minOccurs="0" maxOccurs="unbounded"/> | minOccurs="0" maxOccurs="unbounded"/> | |||
| </xs:sequence> | </xs:sequence> | |||
| <xs:attribute name="id" type="xs:token" | <xs:attribute name="id" type="xs:token" | |||
| use="required"/> | use="required"/> | |||
| <xs:anyAttribute namespace="##any" processContents="lax"/> | <xs:anyAttribute namespace="##any" processContents="lax"/> | |||
| </xs:restriction> | </xs:restriction> | |||
| </xs:complexContent> | </xs:complexContent> | |||
| </xs:complexType> | </xs:complexType> | |||
| <xs:complexType name="contextErrorMsg"> | ||||
| <xs:complexContent> | ||||
| <xs:restriction base="xs:anyType"> | ||||
| <xs:sequence/> | ||||
| <xs:attribute name="errorCode" type="heldCx:errorCodeType" | ||||
| use="required"/> | ||||
| <xs:attribute name="message" type="xs:token" | ||||
| use="optional"/> | ||||
| <xs:anyAttribute namespace="##any" processContents="lax"/> | ||||
| </xs:restriction> | ||||
| </xs:complexContent> | ||||
| </xs:complexType> | ||||
| <xs:element name="createContext" type="heldCx:createContextMsg"/> | <xs:element name="createContext" type="heldCx:createContextMsg"/> | |||
| <xs:element name="updateContext" type="heldCx:updateContextMsg"/> | <xs:element name="updateContext" type="heldCx:updateContextMsg"/> | |||
| <xs:element name="contextResponse" type="heldCx:contextResponseMsg"/> | <xs:element name="contextResponse" type="heldCx:contextResponseMsg"/> | |||
| <xs:element name="contextError" type="heldCx:contextErrorMsg"/> | ||||
| </xs:schema> | </xs:schema> | |||
| Figure 6: Context Management Schema | Figure 6: Context Management Schema | |||
| 7. Security Considerations | 7. Security Considerations | |||
| There are several security concerns associated with the details in | There are several security concerns associated with the details in | |||
| this specification. The first is to do with the nature of the | this specification. The first is to do with the nature of the | |||
| sensitivity of any data passed from the Target to the LIS for | sensitivity of any data passed from the Target to the LIS for | |||
| skipping to change at page 21, line 5 ¶ | skipping to change at page 20, line 10 ¶ | |||
| This section registers an XML schema as per the guidelines in | This section registers an XML schema as per the guidelines in | |||
| [RFC3688]. | [RFC3688]. | |||
| URI: urn:ietf:params:xml:schema:geopriv:held:context | URI: urn:ietf:params:xml:schema:geopriv:held:context | |||
| Registrant Contact: IETF, GEOPRIV working group, (geopriv@ietf.org), | Registrant Contact: IETF, GEOPRIV working group, (geopriv@ietf.org), | |||
| James Winterbottom (james.winterbottom@andrew.com). | James Winterbottom (james.winterbottom@andrew.com). | |||
| Schema: The XML for this schema can be found as the entirety of | Schema: The XML for this schema can be found as the entirety of | |||
| Figure 6 of this document. | Figure 6 of this document. | |||
| 8.3. New HELD Error Code Registration | ||||
| Reference: RFC-XXXX (i.e., this document)requires the following new | ||||
| HELD error codes to be added the HELD error code respository defined | ||||
| in [I-D.ietf-geopriv-http-location-delivery]. | ||||
| Error code: badContextMessage | ||||
| Error code: unknownContext | ||||
| Error code: updateContextFailed | ||||
| Error code: createContextFailed | ||||
| 9. Acknowledgements | 9. Acknowledgements | |||
| Thanks to Adam Muhlbauer and Neil Justusson for their comments on the | Thanks to Adam Muhlbauer and Neil Justusson for their comments on the | |||
| pre-version of this draft. | pre-version of this draft. | |||
| Thanks also to Tim Zelinski and Michael Diponio , who pointed out a | ||||
| problems while implementing an early revision of this specification. | ||||
| Appendix A. Context Extensions | Appendix A. Context Extensions | |||
| A context contains specific information about a Target and is stored | A context contains specific information about a Target and is stored | |||
| on the LIS. As with other protocols it is necessary to consider | on the LIS. As with other protocols it is necessary to consider | |||
| extensibility. When defining context data extensions it is necessary | extensibility. When defining context data extensions it is necessary | |||
| to consider how they will be used; this includes not only how to | to consider how they will be used; this includes not only how to | |||
| provide the information from the Target to the LIS, but also | provide the information from the Target to the LIS, but also | |||
| acceptance and error indications from the LIS back to the Target. | acceptance and error indications from the LIS back to the Target. | |||
| For example, a context may be created with several extensions | For example, a context may be created with several extensions | |||
| included, how does the LIS indicate that extensions 1 and 3 were | included, how does the LIS indicate that extensions 1 and 3 were | |||
| skipping to change at page 23, line 16 ¶ | skipping to change at page 23, line 16 ¶ | |||
| <hc:contextResponse | <hc:contextResponse | |||
| xmlns:hc="urn:ietf:params:xml:ns:geopriv:held:context" | xmlns:hc="urn:ietf:params:xml:ns:geopriv:held:context" | |||
| code="created" | code="created" | |||
| id="uhvuhdbnuiehudbnvcujevuijeijcvij" | id="uhvuhdbnuiehudbnvcujevuijeijcvij" | |||
| uses="unlimited" | uses="unlimited" | |||
| snapshot="false" | snapshot="false" | |||
| locType="any" | locType="any" | |||
| expires="2007-08-01T13:00:00"> | expires="2007-08-01T13:00:00"> | |||
| <locationUriSet> | <locationUriSet> | |||
| <locationURI> | <locationURI> | |||
| https://ls.example.com:9768/357yc6s64ceyoiuy5ax3o | held//ls.example.com:9768/357yc6s64ceyoiuy5ax3o | |||
| </locationURI> | </locationURI> | |||
| <locationURI> | <locationURI> | |||
| sips:357yc6s64ceyoiuy5ax3o@ls.example.com:9769 | sips:357yc6s64ceyoiuy5ax3o@ls.example.com:9769 | |||
| </locationURI> | </locationURI> | |||
| </locationUriSet> | </locationUriSet> | |||
| <ex1:extension-1 xmlns:ex1="urn:ietf:params:xml:ns:geopriv:held:ex1" | <ex1:extension-1 xmlns:ex1="urn:ietf:params:xml:ns:geopriv:held:ex1" | |||
| ex1:response="OK"/> | ex1:response="OK"/> | |||
| <ex2:extension-2 xmlns:ex2="urn:ietf:params:xml:ns:geopriv:held:ex2" | <ex2:extension-2 xmlns:ex2="urn:ietf:params:xml:ns:geopriv:held:ex2" | |||
| ex2:response="OK"/> | ex2:response="OK"/> | |||
| skipping to change at page 26, line 19 ¶ | skipping to change at page 26, line 19 ¶ | |||
| [RFC3693] Cuellar, J., Morris, J., Mulligan, D., Peterson, J., and | [RFC3693] Cuellar, J., Morris, J., Mulligan, D., Peterson, J., and | |||
| J. Polk, "Geopriv Requirements", RFC 3693, February 2004. | J. Polk, "Geopriv Requirements", RFC 3693, February 2004. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| January 2004. | January 2004. | |||
| [I-D.ietf-geopriv-http-location-delivery] | [I-D.ietf-geopriv-http-location-delivery] | |||
| Barnes, M., Winterbottom, J., Thomson, M., and B. Stark, | Barnes, M., Winterbottom, J., Thomson, M., and B. Stark, | |||
| "HTTP Enabled Location Delivery (HELD)", | "HTTP Enabled Location Delivery (HELD)", | |||
| draft-ietf-geopriv-http-location-delivery-02 (work in | draft-ietf-geopriv-http-location-delivery-04 (work in | |||
| progress), September 2007. | progress), January 2008. | |||
| [I-D.ietf-geopriv-l7-lcp-ps] | [I-D.ietf-geopriv-l7-lcp-ps] | |||
| Tschofenig, H. and H. Schulzrinne, "GEOPRIV Layer 7 | Tschofenig, H. and H. Schulzrinne, "GEOPRIV Layer 7 | |||
| Location Configuration Protocol; Problem Statement and | Location Configuration Protocol; Problem Statement and | |||
| Requirements", draft-ietf-geopriv-l7-lcp-ps-05 (work in | Requirements", draft-ietf-geopriv-l7-lcp-ps-06 (work in | |||
| progress), September 2007. | progress), November 2007. | |||
| [I-D.ietf-geopriv-lbyr-requirements] | [I-D.ietf-geopriv-lbyr-requirements] | |||
| Marshall, R., "Requirements for a Location-by-Reference | Marshall, R., "Requirements for a Location-by-Reference | |||
| Mechanism", draft-ietf-geopriv-lbyr-requirements-00 (work | Mechanism", draft-ietf-geopriv-lbyr-requirements-01 (work | |||
| in progress), September 2007. | in progress), October 2007. | |||
| Authors' Addresses | Authors' Addresses | |||
| James Winterbottom | James Winterbottom | |||
| Andrew Corporation | Andrew Corporation | |||
| PO Box U40 | PO Box U40 | |||
| University of Wollongong, NSW 2500 | University of Wollongong, NSW 2500 | |||
| AU | AU | |||
| Phone: +61 242 212938 | Phone: +61 242 212938 | |||
| skipping to change at page 28, line 7 ¶ | skipping to change at page 28, line 7 ¶ | |||
| PO Box U40 | PO Box U40 | |||
| University of Wollongong, NSW 2500 | University of Wollongong, NSW 2500 | |||
| AU | AU | |||
| Phone: +61 242 212915 | Phone: +61 242 212915 | |||
| Email: martin.thomson@andrew.com | Email: martin.thomson@andrew.com | |||
| URI: http://www.andrew.com/products/geometrix | URI: http://www.andrew.com/products/geometrix | |||
| Full Copyright Statement | Full Copyright Statement | |||
| Copyright (C) The IETF Trust (2007). | Copyright (C) The IETF Trust (2008). | |||
| This document is subject to the rights, licenses and restrictions | This document is subject to the rights, licenses and restrictions | |||
| contained in BCP 78, and except as set forth therein, the authors | contained in BCP 78, and except as set forth therein, the authors | |||
| retain all their rights. | retain all their rights. | |||
| 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, THE IETF TRUST AND | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | |||
| THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | |||
| OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | |||
| End of changes. 54 change blocks. | ||||
| 106 lines changed or deleted | 108 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/ | ||||