draft-ietf-sipping-config-framework-08.txt | draft-ietf-sipping-config-framework-09.txt | |||
---|---|---|---|---|
SIPPING D. Petrie | SIPPING D. Petrie | |||
Internet-Draft SIPez LLC. | Internet-Draft SIPez LLC. | |||
Expires: September 7, 2006 Mar 6, 2006 | Expires: April 6, 2007 October 3, 2006 | |||
A Framework for Session Initiation Protocol User Agent Profile Delivery | A Framework for Session Initiation Protocol User Agent Profile Delivery | |||
draft-ietf-sipping-config-framework-08.txt | draft-ietf-sipping-config-framework-09.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 33 | skipping to change at page 1, line 33 | |||
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 September 7, 2006. | This Internet-Draft will expire on April 6, 2007. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The Internet Society (2006). | Copyright (C) The Internet Society (2006). | |||
Abstract | Abstract | |||
This document defines the application of a set of protocols for | This document defines the application of a set of protocols for | |||
providing profile data to SIP user agents. The objective is to | providing profile data to SIP user agents. The objective is to | |||
define a means for automatically providing profile data a user agent | define a means for automatically providing profile data that a user | |||
needs to be functional without user or administrative intervention. | agent needs to be functional, without user or administrative | |||
The framework for discovery, delivery, notification and updates of | intervention. The framework for discovery, delivery, notification | |||
user agent profile data is defined here. As part of this framework a | and updates of user agent profile data is defined here. As part of | |||
new SIP event package is defined here for the notification of profile | this framework a new SIP event package is defined here for the | |||
changes. This framework is also intended to ease ongoing | notification of profile changes. This framework is also intended to | |||
administration and upgrading of large scale deployments of SIP user | ease ongoing administration and upgrading of large scale deployments | |||
agents. The contents and format of the profile data to be defined is | of SIP user agents. The contents and format of the profile data to | |||
outside the scope of this document. | be defined is outside the scope of this document. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Requirements Terminology . . . . . . . . . . . . . . . . . . . 4 | 2. Requirements Terminology . . . . . . . . . . . . . . . . . . . 4 | |||
3. Profile Delivery Framework Terminology . . . . . . . . . . . . 5 | 3. Profile Delivery Framework Terminology . . . . . . . . . . . . 5 | |||
4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
5. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 5. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
5.1. Service Provider Use Case Scenario Bootstrapping with | 5.1. Service Provider Use Case Scenario Bootstrapping with | |||
Digest Authentication . . . . . . . . . . . . . . . . . . 7 | Digest Authentication . . . . . . . . . . . . . . . . . . 7 | |||
5.2. Service Provider Use Case Scenario Bootstrapping with | 5.2. Service Provider Use Case Scenario Bootstrapping with | |||
Device Certificate . . . . . . . . . . . . . . . . . . . 9 | Device Certificate . . . . . . . . . . . . . . . . . . . 9 | |||
6. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6. Data Model . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
7. Profile Change Event Notification Package . . . . . . . . . . 11 | 7. Profile Change Event Notification Package . . . . . . . . . . 11 | |||
7.1. Event Package Name . . . . . . . . . . . . . . . . . . . 11 | 7.1. Event Package Name . . . . . . . . . . . . . . . . . . . 12 | |||
7.2. Event Package Parameters . . . . . . . . . . . . . . . . 11 | 7.2. Event Package Parameters . . . . . . . . . . . . . . . . 12 | |||
7.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . 15 | 7.3. SUBSCRIBE Bodies . . . . . . . . . . . . . . . . . . . . 16 | |||
7.4. Subscription Duration . . . . . . . . . . . . . . . . . . 16 | 7.4. Subscription Duration . . . . . . . . . . . . . . . . . . 16 | |||
7.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 16 | 7.5. NOTIFY Bodies . . . . . . . . . . . . . . . . . . . . . . 16 | |||
7.6. Notifier processing of SUBSCRIBE requests . . . . . . . . 17 | 7.6. Notifier processing of SUBSCRIBE requests . . . . . . . . 17 | |||
7.7. Notifier generation of NOTIFY requests . . . . . . . . . 18 | 7.7. Notifier generation of NOTIFY requests . . . . . . . . . 19 | |||
7.8. Subscriber processing of NOTIFY requests . . . . . . . . 19 | 7.8. Subscriber processing of NOTIFY requests . . . . . . . . 19 | |||
7.9. Handling of forked requests . . . . . . . . . . . . . . . 19 | 7.9. Handling of forked requests . . . . . . . . . . . . . . . 20 | |||
7.10. Rate of notifications . . . . . . . . . . . . . . . . . . 19 | 7.10. Rate of notifications . . . . . . . . . . . . . . . . . . 20 | |||
7.11. State Agents . . . . . . . . . . . . . . . . . . . . . . 19 | 7.11. State Agents . . . . . . . . . . . . . . . . . . . . . . 20 | |||
7.12. Examples . . . . . . . . . . . . . . . . . . . . . . . . 19 | 7.12. Examples . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
7.13. Use of URIs to Retrieve State . . . . . . . . . . . . . . 20 | 7.13. Use of URIs to Retrieve State . . . . . . . . . . . . . . 21 | |||
7.13.1. Device URIs . . . . . . . . . . . . . . . . . . . . . 21 | 7.13.1. Device URIs . . . . . . . . . . . . . . . . . . . . . 22 | |||
7.13.2. User and Application URIs . . . . . . . . . . . . . . 22 | 7.13.2. User URIs . . . . . . . . . . . . . . . . . . . . . . 24 | |||
7.13.3. Local Network URIs . . . . . . . . . . . . . . . . . 23 | 7.13.3. Local Network URIs . . . . . . . . . . . . . . . . . 24 | |||
8. Profile Delivery Framework Details . . . . . . . . . . . . . . 23 | 8. Profile Delivery Framework Details . . . . . . . . . . . . . . 25 | |||
8.1. Discovery of Subscription URI . . . . . . . . . . . . . . 23 | 8.1. Discovery of Subscription URI . . . . . . . . . . . . . . 25 | |||
8.1.1. Discovery of Local Network URI . . . . . . . . . . . 24 | 8.1.1. Discovery of Local Network URI . . . . . . . . . . . 25 | |||
8.1.2. Discovery of Device URI . . . . . . . . . . . . . . . 24 | 8.1.2. Discovery of Device URI . . . . . . . . . . . . . . . 26 | |||
8.1.3. Discovery of User and Application URI . . . . . . . . 27 | 8.1.3. Discovery of User URI . . . . . . . . . . . . . . . . 29 | |||
8.2. Enrollment with Profile Server . . . . . . . . . . . . . 28 | 8.2. Enrollment with Profile Server . . . . . . . . . . . . . 29 | |||
8.3. Notification of Profile Changes . . . . . . . . . . . . . 28 | 8.3. Notification of Profile Changes . . . . . . . . . . . . . 29 | |||
8.4. Retrieval of Profile Data . . . . . . . . . . . . . . . . 28 | 8.4. Retrieval of Profile Data . . . . . . . . . . . . . . . . 30 | |||
8.5. Upload of Profile Changes . . . . . . . . . . . . . . . . 29 | 8.5. Upload of Profile Changes . . . . . . . . . . . . . . . . 30 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 30 | |||
9.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 29 | 9.1. SIP Event Package . . . . . . . . . . . . . . . . . . . . 30 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | 9.2. New HTTP Event Header . . . . . . . . . . . . . . . . . . 31 | |||
10.1. Confidential Profile Content in NOTIFY Request . . . . . 30 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 31 | |||
10.2. Confidential Profile Content via Content Indirection . . 31 | 10.1. Confidential Profile Content in NOTIFY Request . . . . . 32 | |||
10.3. Integrity protection for non-confidential profiles . . . 32 | 10.2. Confidential Profile Content via Content Indirection . . 33 | |||
10.4. Initial Enrollment Using a Manufacturer's Certificate . . 32 | 10.3. Integrity protection for non-confidential profiles . . . 34 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 34 | 10.4. Initial Enrollment Using a Manufacturer's Certificate . . 34 | |||
12. Change History . . . . . . . . . . . . . . . . . . . . . . . . 34 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
12. Change History . . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
12.1. Changes from | 12.1. Changes from | |||
draft-ietf-sipping-config-framework-07.txt . . . . . . . 34 | draft-ietf-sipping-config-framework-08.txt . . . . . . . 36 | |||
12.2. Changes from | 12.2. Changes from | |||
draft-ietf-sipping-config-framework-06.txt . . . . . . . 34 | draft-ietf-sipping-config-framework-07.txt . . . . . . . 36 | |||
12.3. Changes from | 12.3. Changes from | |||
draft-ietf-sipping-config-framework-05.txt . . . . . . . 35 | draft-ietf-sipping-config-framework-06.txt . . . . . . . 37 | |||
12.4. Changes from | 12.4. Changes from | |||
draft-ietf-sipping-config-framework-04.txt . . . . . . . 35 | draft-ietf-sipping-config-framework-05.txt . . . . . . . 37 | |||
12.5. Changes from | 12.5. Changes from | |||
draft-ietf-sipping-config-framework-03.txt . . . . . . . 36 | draft-ietf-sipping-config-framework-04.txt . . . . . . . 38 | |||
12.6. Changes from | 12.6. Changes from | |||
draft-ietf-sipping-config-framework-02.txt . . . . . . . 36 | draft-ietf-sipping-config-framework-03.txt . . . . . . . 38 | |||
12.7. Changes from | 12.7. Changes from | |||
draft-ietf-sipping-config-framework-01.txt . . . . . . . 36 | draft-ietf-sipping-config-framework-02.txt . . . . . . . 38 | |||
12.8. Changes from | 12.8. Changes from | |||
draft-ietf-sipping-config-framework-00.txt . . . . . . . 36 | draft-ietf-sipping-config-framework-01.txt . . . . . . . 39 | |||
12.9. Changes from | 12.9. Changes from | |||
draft-petrie-sipping-config-framework-00.txt . . . . . . 37 | draft-ietf-sipping-config-framework-00.txt . . . . . . . 39 | |||
12.10. Changes from draft-petrie-sip-config-framework-01.txt . . 37 | 12.10. Changes from | |||
12.11. Changes from draft-petrie-sip-config-framework-00.txt . . 37 | draft-petrie-sipping-config-framework-00.txt . . . . . . 39 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | 12.11. Changes from draft-petrie-sip-config-framework-01.txt . . 40 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 38 | 12.12. Changes from draft-petrie-sip-config-framework-00.txt . . 40 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 39 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 40 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 42 | 13.2. Informative References . . . . . . . . . . . . . . . . . 41 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 44 | ||||
Intellectual Property and Copyright Statements . . . . . . . . . . 45 | ||||
1. Introduction | 1. Introduction | |||
Today all SIP (Session Initiation Protocol) [RFC3261] user agent | Today all SIP (Session Initiation Protocol) [RFC3261] user agent | |||
implementers use proprietary means of delivering user, device, | implementers use proprietary means of delivering user, device and | |||
application and local network policy profiles to the user agent. The | local network policy profiles to the user agent. The profile | |||
profile delivery framework defined in this document is intended to | delivery framework defined in this document is intended to enable a | |||
enable a first phase migration to a standard means of providing | first phase migration to a standard means of providing profiles to | |||
profiles to SIP user agents. It is expected that UA (User Agent) | SIP user agents. It is expected that UA (User Agent) implementers | |||
implementers will be able to use this framework as a means of | will be able to use this framework as a means of delivering their | |||
delivering their existing proprietary data profiles (i.e. using their | existing proprietary data profiles (i.e. using their existing | |||
existing proprietary binary or text formats). This in itself is a | proprietary binary or text formats). This in itself is a tremendous | |||
tremendous advantage in that a SIP environment can use a single | advantage in that a SIP environment can use a single profile delivery | |||
profile delivery server for profile data to user agents from multiple | server for profile data to user agents from multiple implementers. | |||
implementers. Follow-on standardization activities can: | Follow-on standardization activities can: | |||
1. define a standard profile content format framework (e.g. XML | 1. define a standard profile content format framework (e.g. XML | |||
with namespaces [W3C.REC-xml-names11-20040204] or name-value | with namespaces [W3C.REC-xml-names11-20040204] or name-value | |||
pairs [RFC0822]). | pairs [RFC0822]). | |||
2. specify the content (i.e. name the profile data parameters, xml | 2. specify the content (i.e. name the profile data parameters, xml | |||
schema, name spaces) of the data profiles. | schema, name spaces) of the data profiles. | |||
One of the objectives of the framework described in this document is | One of the objectives of the framework described in this document is | |||
to provide a start up experience similar to that of users of an | to provide a start up experience similar to that of users of an | |||
analog telephone. When you plug in an analog telephone it just works | analog telephone. When you plug in an analog telephone it just works | |||
(assuming the line is live and the switch has been provisioned). | (assuming the line is live and the switch has been provisioned). | |||
skipping to change at page 5, line 7 | skipping to change at page 5, line 7 | |||
[I-D.sinnreich-sipdev-req] | [I-D.sinnreich-sipdev-req] | |||
2. Requirements Terminology | 2. Requirements Terminology | |||
Keywords "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT" and | Keywords "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT" and | |||
"MAY" that appear in this document are to be interpreted as described | "MAY" that appear in this document are to be interpreted as described | |||
in [RFC2119]. | in [RFC2119]. | |||
3. Profile Delivery Framework Terminology | 3. Profile Delivery Framework Terminology | |||
profile - data set specific to a user, device, user's application or | profile - data set specific to a user, device, or the local network. | |||
the local network. | ||||
device - software or hardware appliance containing one or more SIP | device - software or hardware appliance containing one or more SIP | |||
user agents. | user agents. | |||
profile content server - The server that provides the content of the | profile content server - The server that provides the content of the | |||
profiles using the protocol specified by the URI scheme. | profiles using the protocol specified by the URI scheme. | |||
notifier - As defined in [RFC3265] the SIP user agent server which | notifier - As defined in [RFC3265] the SIP user agent server which | |||
processes SUBSCRIBE requests for events and sends NOTIFY requests | processes SUBSCRIBE requests for events and sends NOTIFY requests | |||
with profile data or URIs (Uniform Resource Identifiers) that | with profile data or URIs (Uniform Resource Identifiers) that | |||
point to the data. | point to the data. | |||
profile delivery server - The logical collection of the notifier and | profile delivery server - The logical collection of the notifier and | |||
the server which provides the contents of the notification either | the server which provides the contents of the notification either | |||
directly in the NOTIFY requests or indirectly via profile URI(s). | directly in the NOTIFY requests or indirectly via profile URI(s). | |||
hotelling- when a user moves to a new user agent (i.e. that is not | hotelling- when a user moves to a new user agent (i.e. that is not | |||
already provisioned to know the user's identity, credentials or | already provisioned to know the user's identity, credentials or | |||
profile data) and gives the user agent sufficient information to | profile data) and gives the user agent sufficient information to | |||
retrieve the user's profile(s). The user agent either permanently | retrieve the user's profile(s). The user agent either permanently | |||
or temporarily makes the user's profiles effective on that user | or temporarily makes the user's profiles effective on that user | |||
agent. | agent. | |||
roaming- when the user agent moves to a different local network | nomadic- when the user agent moves to a different local network | |||
instance id- text identifier globally unique across all user agent | ||||
(soft and hard devices) | ||||
4. Overview | 4. Overview | |||
The profile life cycle can be described by five functional steps. | The profile life cycle can be described by five functional steps. | |||
These steps are not necessarily discrete. However it is useful to | These steps are not necessarily discrete. However it is useful to | |||
describe these steps as logically distinct. These steps are named as | describe these steps as logically distinct. These steps are named as | |||
follows: | follows: | |||
Discovery - discover a profile delivery server | Discovery - discover a profile delivery server | |||
Enrollment - enroll with the profile delivery server | Enrollment - enroll with the profile delivery server | |||
skipping to change at page 6, line 9 | skipping to change at page 6, line 10 | |||
means of discovery is described in Section 8.1. | means of discovery is described in Section 8.1. | |||
Enrollment is the process by which a UA makes itself known to the | Enrollment is the process by which a UA makes itself known to the | |||
profile delivery server. In enrolling, the UA provides identity | profile delivery server. In enrolling, the UA provides identity | |||
information, requested profile type(s) and supported protocols for | information, requested profile type(s) and supported protocols for | |||
profile retrieval. It also subscribes to a mechanism for | profile retrieval. It also subscribes to a mechanism for | |||
notification of profile changes. As a result of enrollment, the UA | notification of profile changes. As a result of enrollment, the UA | |||
receives the data or the URI for each of the profiles that the | receives the data or the URI for each of the profiles that the | |||
profile delivery server is able to provide. Each profile type (set) | profile delivery server is able to provide. Each profile type (set) | |||
requires a separate enrollment or SUBSCRIBE session. A profile type | requires a separate enrollment or SUBSCRIBE session. A profile type | |||
may represent one or more data sets (e.g. one profile data set for | may represent one or more data sets. Enrollment which is performed | |||
each of a user's applications). Enrollment which is performed by the | by the device by constructing and sending a SUBSCRIBE request to | |||
device by constructing and sending a SUBSCRIBE request to profile | profile delivery server for the event package described in Section 7. | |||
delivery server for the event package described in Section 7. | ||||
Profile Retrieval is the process of retrieving the content for each | Profile Retrieval is the process of retrieving the content for each | |||
of the profiles the UA requested. The profiles are retrieved either | of the profiles requested by the UA. The profiles are retrieved | |||
directly or indirectly from the NOTIFY request body as describe in | either directly or indirectly from the NOTIFY request body as | |||
Section 7.5 and Section 8.4. | described in Section 7.5 and Section 8.4. | |||
Profile Change Notification is the process by which the profile | Profile Change Notification is the process by which the profile | |||
delivery server notifies the UA that the content of one or more of | delivery server notifies the UA that the content of one or more of | |||
the profiles has changed. If the content is provided indirectly the | the profiles has changed. If the content is provided indirectly, the | |||
UA MAY retrieve the profile from the specified URI upon receipt of | UA MAY retrieve the profile from the specified URI upon receipt of | |||
the change notification. Profile change notification is provided by | the change notification. Profile change notification is provided by | |||
the NOTIFY request for the event package as described in Section 7.8 | the NOTIFY request for the event package as described in Section 7.8 | |||
and Section 8.3. | and Section 8.3. | |||
Profile Change Upload is the process by which a UA or other entity | Profile Change Upload is the process by which a UA or other entity | |||
(e.g. corporate directory or configuration management server) pushes | (e.g. corporate directory or configuration management server) pushes | |||
a change to the profile data back up to the profile delivery server. | a change to the profile data back up to the profile delivery server. | |||
This process is described in Section 8.5. | This process is described in Section 8.5. | |||
This framework defines a new SIP event package [RFC3265] to solve | This framework defines a new SIP event package [RFC3265] to solve | |||
enrollment and profile change notification steps. The event package | enrollment and profile change notification steps. The event package | |||
in Section 7 defines everything but the mandatory content type. This | in Section 7 defines everything but the mandatory content type. This | |||
makes this event package abstract until the content type is bound. | makes this event package abstract until the content type is bound. | |||
The profile content type(s) will be defined outside the scope of this | The profile content type definition is outside of scope for this | |||
document. It is the author's belief that it would be a huge | document. It is the author's belief that it would be a huge | |||
accomplishment if all SIP user agents used this framework for | accomplishment if all SIP user agents used this framework for | |||
delivering their existing proprietary profiles. Even though this | delivering their existing proprietary profiles. Even though this | |||
does not accomplish interoperability of profiles, it is a big first | does not accomplish interoperability of profiles, it is a big first | |||
step in easing the administration of SIP user agents. The definition | step in easing the administration of SIP user agents. The definition | |||
of standard profiles and data sets (see [I-D.petrie-sipping-profile- | of standard profiles and data sets (see [I-D.petrie-sipping-profile- | |||
datasets] ) will enable interoperability as a subsequent step. | datasets] ) will enable interoperability as a subsequent step. | |||
The question arises as to why SIP should be used for the profile | The question arises as to why SIP should be used for the profile | |||
delivery framework. In this document SIP is used for only a small | delivery framework. In this document SIP is used for only a small | |||
skipping to change at page 7, line 36 | skipping to change at page 7, line 36 | |||
The content delivery server may be either in the public network or | The content delivery server may be either in the public network or | |||
accessible through a private network. The user agents requiring | accessible through a private network. The user agents requiring | |||
profiles may be behind firewalls and NATs and many protocols, such as | profiles may be behind firewalls and NATs and many protocols, such as | |||
HTTP, may be used for profile content retrieval without special | HTTP, may be used for profile content retrieval without special | |||
consideration in the firewalls and NATs (e.g. an HTTP client on the | consideration in the firewalls and NATs (e.g. an HTTP client on the | |||
UA can typically pull content from a server outside the NAT/ | UA can typically pull content from a server outside the NAT/ | |||
firewall.). | firewall.). | |||
5. Use Cases | 5. Use Cases | |||
The following use case are intended to help give an understanding of | The following use cases are intended to help give an understanding of | |||
how the profile delivery framework can be used. These use cases are | how the profile delivery framework can be used. These use cases are | |||
not intended to be exhaustive in demonstrating all the capabilities | not intended to be exhaustive in demonstrating all of the | |||
or ways the framework can be applied. | capabilities or ways the framework can be applied. | |||
5.1. Service Provider Use Case Scenario Bootstrapping with Digest | 5.1. Service Provider Use Case Scenario Bootstrapping with Digest | |||
Authentication | Authentication | |||
The following describes a use case scenario for bootstrapping a new | The following describes a use case scenario for bootstrapping a new | |||
user agent, which has had no prior provisioned information, to the | user agent, which has had no prior provisioned information, to the | |||
point of being functional with a SIP Service Provider's system. In | point of being functional with a SIP Service Provider's system. In | |||
this example scenario, the user has purchased a new SIP user agent. | this example scenario, the user has purchased a new SIP user agent. | |||
The user signs up for the service to obtain three pieces of | The user signs up for the service to obtain three pieces of | |||
information: a hostname, a user ID and a password. These three | information: a hostname, a user ID and a password. These three | |||
pieces of information may be one-time use, that become invalid after | pieces of information may be one-time use, that become invalid after | |||
the one use. This scenario assumes that no association or mapping | the one use. This scenario assumes that no association or mapping | |||
between the device and the user's account is created before the | between the device and the user's account is created before the | |||
following steps: | following steps: | |||
|Service Provider | | ||||
|Profile Delivery Server| | ||||
| ___ _____ | | ||||
| |SIP| |HTTPS| | | ||||
|_|___|_________|_____|_| | ||||
A A | ||||
| | | ||||
\___ |-5A) HTTP GET of device profile | ||||
\ |-6) HTTPS response w/device profile | ||||
\ | ______________ | ||||
\ | | Residential | | ||||
4) NOTIFY on-\ \ | Router ____ | | ||||
existing TLS \ \ | |DHCP| | | ||||
connetion \ \ |_______|____|_| | ||||
\ \ A A | ||||
\ \ 1B) SUBSCRIBE-| | | ||||
\ \ local network| | | ||||
\ \ profile| | | ||||
\ \ | | | ||||
\ \ | |-1A) DHCP | ||||
\ \ | |request | ||||
\ \ | | | ||||
\ \ C=======D | ||||
3) SIP/TLS SUBSCRIBE to device profile-\ \ /^\ | ||||
7) reSUBSCRIBE to device profile as-\ / \ | ||||
configured in device profile / Device \ | ||||
----------- | ||||
2) User enters service provider hostname | ||||
5B) User enters HTTP profile userID and password | ||||
1. The user plugs the device in to provide power and network | 1. The user plugs the device in to provide power and network | |||
connectivity the first time (or installs the software in the case | connectivity the first time (or installs the software in the case | |||
of a software user agent). The device subscribes to the local | of a software user agent). The device subscribes to the local | |||
network to get the local network profile. However as the device | network to get the local network profile. However as the device | |||
is plugged into a residential LAN or router, there is no profile | is plugged into a residential LAN or router, there is no profile | |||
delivery server for the local network profile (see Section 8.1.1 | delivery server for the local network profile (see Section 8.1.1 | |||
and Section 7.13.3). The device assumes symmetric SIP signalling | and Section 7.13.3). | |||
as there is not local network profie which may have provided | ||||
other firewall or NAT traversal mechanism information. | ||||
2. The device prompts the user for the hostname to subscribe to for | 2. The device prompts the user for the hostname to subscribe to for | |||
the device profile. The hostname was provided by the service | the device profile. The hostname was provided by the service | |||
provider and is used as the host part of the SUBSCRIBE profile | provider and is used as the host part of the SUBSCRIBE profile | |||
URI described in Section 7.13.1. Note: in a scenario where the | URI described in Section 7.13.1. Note: in a scenario where the | |||
system operator (e.g. enterprise) has control of the network, the | system operator (e.g. enterprise) has control of the network, the | |||
hostname for the SUBSCRIBE can be discovered (see Section 8.1.2) | hostname for the SUBSCRIBE can be discovered (see Section 8.1.2) | |||
to avoid the need for the user to enter the hostname. | to avoid the need for the user to enter the hostname. | |||
3. The device creates a TLS connection for the SIP SUBSCRIBE request | ||||
to the provided hostname. The device verifies the server's | 3. The device creates a TLS [RFC2246] connection for the SIP | |||
certificate. If the common name does not match the hostname or | SUBSCRIBE request to the provided hostname. The device verifies | |||
the certificate is not valid, the device warns the user and | the server's certificate. If the SubjectAltName does not match | |||
prompts whether to continue. | the hostname or the certificate is not valid (as described in | |||
Section 23 of [RFC3261]), the device warns the user and prompts | ||||
whether to continue. | ||||
4. The profile delivery server receives the SUBSCRIBE request for | 4. The profile delivery server receives the SUBSCRIBE request for | |||
the device profile and sends a NOTIFY with content indirection | the device profile and sends a NOTIFY with content indirection | |||
containing the HTTPS URI for the device profile (see | containing the HTTPS URI for the device profile (see | |||
Section 7.5). | Section 7.5). | |||
5. The device receives the NOTIFY request with the device profile | 5. The device receives the NOTIFY request with the device profile | |||
URI. The device prompts the user for the user ID and password | URI. The device prompts the user for the user ID and password | |||
provided by the service provider. The device does an HTTPS GET | provided by the service provider. The device does an HTTPS GET | |||
to retrieve the device profile (see Section 8.4 and Section 7.8). | to retrieve the device profile (see Section 8.4 and Section 7.8). | |||
The profile delivery server challenges for Digest authentication. | The profile delivery server challenges for Digest authentication. | |||
The device re-sends the HTTPS GET with Digest credentials using | The device re-sends the HTTPS GET with Digest credentials using | |||
the user ID and password entered by the user. Note: for devices | the user ID and password entered by the user. | |||
with only DTMF style input, the service provider may provide the | ||||
host, user ID and password in octal format that can be entered | ||||
requiring only digits. | ||||
6. The profile delivery server receives the HTTP GET request for the | 6. The profile delivery server receives the HTTP GET request for the | |||
device profile along with the user ID and password for the | device profile along with the user ID and password for the | |||
specific user. At this point the profile delivery server has | specific user. At this point, the profile delivery server has | |||
authenticated the user and can create an association between a | authenticated the user and can create an association between a | |||
specific device identified in the HTTPS URI and the user or user | specific device identified in the HTTPS URI and the user or user | |||
account (see Section 10.2). The profile delivery server provides | account (see Section 10.2). The profile delivery server provides | |||
the device profile which may contain the on-going SUBSCRIBE | the device profile which may contain the on-going SUBSCRIBE | |||
request URIs for the device, user and application profiles along | request URIs for the device, user and other profiles along with | |||
with credentials for retrieving the profiles. | credentials for retrieving the profiles. | |||
7. The device receives the device profile from the HTTPS response, | 7. The device receives the device profile from the HTTPS response, | |||
re-SUBSCRIBEs using the device profile URI provided in the | re-SUBSCRIBEs using the device profile URI provided in the | |||
profile. The device profile also may contain URIs for the | profile. The device profile also may contain URIs for the | |||
default user's user and application profile SUBSCRIBE request | default user's user and other profile SUBSCRIBE request URIs for | |||
URIs for the SIP event package defined in Section 7. The device | the SIP event package defined in Section 7. The device uses | |||
uses these URIs to retrieve user and application profiles in a | these URIs to retrieve user and other profiles in a similar way | |||
similar way to the device profile. After retriving these | to the device profile. After retrieving these profiles the | |||
profiles the device is fully functional in the service provider's | device is fully functional in the service provider's SIP service. | |||
SIP service. | ||||
5.2. Service Provider Use Case Scenario Bootstrapping with Device | 5.2. Service Provider Use Case Scenario Bootstrapping with Device | |||
Certificate | Certificate | |||
The following describes another use case scenario where the device | The following describes another use case scenario where the device | |||
implementor provides a certificate for the device which authenticates | implementor provides a certificate for the device which authenticates | |||
the device ID. In this scenario, the user signs up for the SIP | the device ID. In this scenario, the user signs up for the SIP | |||
service with the service provider and provides the device ID (see | service with the service provider and provides the device ID (see | |||
Section 7.13.1 for more information on device ID) to the service | Section 7.13.1 for more information on device ID) to the service | |||
provider prior to the following steps, so that the service provider | provider prior to the following steps, so that the service provider | |||
has an association or mapping between the device ID and the user | has an association or mapping between the device ID and the user | |||
account ahead of time. The service provide gives the user a hostname | account ahead of time. The service provider gives the user a | |||
to be entered on the device. | hostname to be entered on the device. | |||
1. Step 1-3 occur the same as in the prior use case described in | 1. Steps 1-3 occur the same as in the prior use case described in | |||
Section 5.1. | Section 5.1. | |||
2. The device receives the NOTIFY request with the device profile | 2. The device receives the NOTIFY request with the device profile | |||
URI. The device does an HTTPS GET to retrieve the device profile | URI. The device does an HTTPS GET to retrieve the device profile | |||
(see Section 8.4 and Section 7.8). | (see Section 8.4 and Section 7.8). | |||
3. The profile delivery server requests the device certficate in the | 3. The profile delivery server requests the device certificate in | |||
TLS connection used for the HTTPS GET. The device has a | the TLS connection used for the HTTPS GET. The device has a | |||
certificate that contains the MAC address used in the device ID. | certificate that contains the MAC address used in the device ID. | |||
The device certificate is signed and provided by the implementor | The device certificate is signed and provided by the implementor | |||
for the purpose of authenticating the device ID in the initial | for the purpose of authenticating the device ID in the initial | |||
bootstrapping process only. The profile delivery server | bootstrapping process only. The profile delivery server | |||
validates the device ID and returns the device profile using | validates the device ID and returns the device profile using | |||
HTTPS. | HTTPS. | |||
4. The device receives the device profile in the HTTPS response. | 4. The device receives the device profile in the HTTPS response. | |||
The process continues in a similar way to step 6 in the above use | The process continues in a similar way to step 7 in the above use | |||
case. The device profile contains a more perminent device | case. The device profile contains a more permanent device | |||
certificate and private key or Digest authentication credentials | certificate and private key or Digest authentication credentials | |||
which are used for on-going device ID authentication. | which are used for on-going device ID authentication. | |||
6. Data Model | 6. Data Model | |||
A conscious separation of device, user, application and local network | A conscious separation of device, user and local network profiles is | |||
profiles is made in this document. This is useful to provide | made in this document. This is useful to provide features such as | |||
features such as hotelling (described above) as well as securing or | hotelling (described above) as well as securing or restricting user | |||
restricting user agent functionality. By maintaining this | agent functionality. For example, by maintaining this separation, | |||
separation, a user may walk up to someone else's user agent and | Alice may walk up to Bob's user agent and direct Bob's user agent to | |||
direct that user agent to get the new user's profile data. In doing | get the Alice's profile data. In doing so the user agent can replace | |||
so the user agent can replace the previous user's profile data while | the previous user's profile data while still keeping the device's and | |||
still keeping the device's and the local network's profile data which | the local network's profile data which may be necessary for core | |||
may be necessary for core functionality and communication described | functionality and communication described in this document. The | |||
in this document. The local network profiles are relevant to a | local network profiles are relevant to a visiting device which gets | |||
visiting device which gets plugged in to a foreign network. The | plugged in to a foreign network. The concept of the local network | |||
concept of the local network providing profile data is useful to | providing profile data is useful to provide nomadic capabilities | |||
provide roaming (described above) as well as local policy data that | (described above) as well as local policy data that may constrain the | |||
may constrain the user or device behavior relative to the local | user or device behavior relative to the local network. For example, | |||
network. For example media types and codecs may be constrained to | media types and codecs may be constrained to reflect the network's | |||
reflect the network's capabilities. | capabilities. | |||
The separation of these profiles also enables the separation of the | The separation of these profiles also enables the separation of the | |||
management of the profiles. The user profile may be managed by a | management of the profiles. The user profile may be managed by a | |||
profile delivery server operated by the user's ISP. The device | profile delivery server operated by the user's ISP. The device | |||
profile may be delivered from a profile delivery server operated by | profile may be delivered from a profile delivery server operated by | |||
the user's employer. The application profile(s) may be delivered | the user's employer. Other profile(s) may be delivered from the | |||
from the user's ASP (Application Service Provider). The local | user's ASP (Application Service Provider). The local network profile | |||
network profile may delivered by a WLAN (Wireless LAN) hotspot | may delivered by a WLAN (Wireless LAN) hotspot service provider. | |||
service provider. Some interesting services and mobility | Some interesting services and mobility applications are enabled with | |||
applications are enabled with this separation of profiles. | this separation of profiles. | |||
A very high level data model is implied here with the separation of | A very high level data model is implied here with the separation of | |||
these four profile types. Each profile type instance requires a | these three profile types. Each profile type instance requires a | |||
separate subscription to retrieve the profile. A loose hierarchy | separate subscription to retrieve the profile. A loose hierarchy | |||
exists mostly for the purpose of bootstrapping and discovery or | exists mostly for the purpose of bootstrapping and discovery or | |||
formation of the profile URIs. No other meaning is implied by this | formation of the profile URIs. No other meaning is implied by this | |||
hierarchy. However the profile format and data sets to be defined | hierarchy. However, the profile format and data sets to be defined | |||
outside this document may define additional meaning to this | outside this document may define additional meaning to this | |||
hierarchy. In the bootstrapping scenario, a device straight out of | hierarchy. In the bootstrapping scenario, a device straight out of | |||
the box (software or hardware) does not know anything about its user | the box (software or hardware) does not know anything about its user | |||
or local network. The one thing that is does know is it's instance | or local network. The one thing that it does know is its instance | |||
id. So the hierarchy of the profiles exists as follows. | id. So the hierarchy of the profiles exists as follows. | |||
The local network profile is subscribed to and retrieved based upon a | The local network profile is subscribed to and retrieved based upon a | |||
URI formed from the local network domain. The local network profile | URI formed from the local network domain. The local network profile | |||
is subscribed to first as it may contain information on how to | is subscribed to first as it may contain information on how to | |||
communicate to the Internet or primary network from the local network | communicate to the Internet or primary network from the local network | |||
(e.g. HTTP proxy, SIP firewall or NAT traversal information). The | (e.g. HTTP proxy, SIP firewall or NAT traversal information). The | |||
device instance id is used to form the user id part of the URI for | device instance id is used to form the user id part of the URI for | |||
subscribing to the device and local network profiles. The device | subscribing to the device and local network profiles. The device | |||
profile may contain a default user AOR (Address of Record) for that | profile may contain a default user AOR (Address of Record) for that | |||
device. The default user AOR may then be used to retrieve the user | device. The default user AOR may then be used to retrieve the user | |||
profile. Applications to be used on the device may be defined in the | profile. Applications to be used on the device may be defined in the | |||
device and user profiles. The user's AOR is also used to retrieve | device and user profiles. | |||
any application profiles for that user. | ||||
7. Profile Change Event Notification Package | 7. Profile Change Event Notification Package | |||
This section defines a new SIP event package [RFC3265]. The purpose | This section defines a new SIP event package [RFC3265]. The purpose | |||
of this event package is to send to subscribers notification of | of this event package is to send to subscribers notification of | |||
content changes to the profile(s) of interest and to provide the | content changes to the profile(s) of interest and to provide the | |||
location of the profile(s) via content indirection [I-D.ietf-sip- | location of the profile(s) via content indirection [I-D.ietf-sip- | |||
content-indirect-mech] or directly in the body of the NOTIFY. | content-indirect-mech] or directly in the body of the NOTIFY. | |||
Frequently the profiles delivered to the user agent are much larger | Frequently the profiles delivered to the user agent are much larger | |||
(e.g. several KB or even several MB) than the MTU of the network. | (e.g. several KB or even several MB) than the MTU of the network. | |||
skipping to change at page 11, line 31 | skipping to change at page 12, line 7 | |||
content indirection and that the profile delivery server SHOULD use | content indirection and that the profile delivery server SHOULD use | |||
content indirection. Similarly the content type for the differential | content indirection. Similarly the content type for the differential | |||
notification of profile changes [I-D.ietf-simple-xcap-diff] may be | notification of profile changes [I-D.ietf-simple-xcap-diff] may be | |||
used in the Accept header to express support for receiving profile | used in the Accept header to express support for receiving profile | |||
change deltas. | change deltas. | |||
The MIME types or formats of profiles to be delivered via this | The MIME types or formats of profiles to be delivered via this | |||
framework are to be defined in the documents that define the profile | framework are to be defined in the documents that define the profile | |||
contents. These profile MIME types specified in the Accept header | contents. These profile MIME types specified in the Accept header | |||
along with the profile types specified in the Event header parameter | along with the profile types specified in the Event header parameter | |||
"profile-type" MAY be used to specify which profiles get delivered | "profile-type" SHOULD be used to specify which profiles get delivered | |||
either directly or indirectly in the NOTIFY requests. As this event | either directly or indirectly in the NOTIFY requests. As this event | |||
package does not specify the mandatory content type, this package is | package does not specify the mandatory content type, this package is | |||
abstract. The profile definition documents will specify the | abstract. The profile definition documents will specify the | |||
mandatory content type to make a concrete event package. | mandatory content type to make a concrete event package. | |||
7.1. Event Package Name | 7.1. Event Package Name | |||
The name of this package is "ua-profile". This value appears in the | The name of this package is "ua-profile". This value appears in the | |||
Event header field present in SUBSCRIBE and NOTIFY requests for this | Event header field present in SUBSCRIBE and NOTIFY requests for this | |||
package as defined in [RFC3265]. | package as defined in [RFC3265]. | |||
skipping to change at page 12, line 10 | skipping to change at page 12, line 34 | |||
NOTIFY requests only. The "effective-by" parameter is ignored if it | NOTIFY requests only. The "effective-by" parameter is ignored if it | |||
appears in a SUBSCRIBE request. The other parameters are for use in | appears in a SUBSCRIBE request. The other parameters are for use in | |||
the SUBSCRIBE request and are ignored if they appear in NOTIFY | the SUBSCRIBE request and are ignored if they appear in NOTIFY | |||
requests. | requests. | |||
The "profile-type" parameter is used to indicate the token name of | The "profile-type" parameter is used to indicate the token name of | |||
the profile type the user agent wishes to obtain data or URIs for and | the profile type the user agent wishes to obtain data or URIs for and | |||
to be notified of subsequent changes. Using a token in this | to be notified of subsequent changes. Using a token in this | |||
parameter allows the URI semantics for retrieving the profiles to be | parameter allows the URI semantics for retrieving the profiles to be | |||
opaque to the subscribing user agent. All it needs to know is the | opaque to the subscribing user agent. All it needs to know is the | |||
token value for this parameter. This document defines four logical | token value for this parameter. This document defines three logical | |||
types of profiles and their token names. The contents or format of | types of profiles and their token names. The contents or format of | |||
the profiles is outside the scope of this document. | the profiles is outside the scope of this document. | |||
The four types of profiles defined here are "device", "user", | The three types of profiles defined here are "device", "user" and | |||
"application" and "local-network". Specifying "device" type | "local-network". Specifying "device" type profile(s) indicates the | |||
profile(s) indicates the desire for the profile data (URI when | desire for the profile data (URI when content indirection is used) | |||
content indirection is used) and change notification of the contents | and change notification of the contents of the profile that is | |||
of the profile that is specific to the device or user agent. | specific to the device or user agent. Specifying "user" type profile | |||
Specifying "user" type profile indicates the desire for the profile | indicates the desire for the profile data (URI when content | |||
data (URI when content indirection is used) and change notification | ||||
of the profile content for the user. Specifying "application" type | ||||
profile indicates the desire for the profile data (URI when content | ||||
indirection is used) and change notification of the profile content | indirection is used) and change notification of the profile content | |||
for the user's applications. Specifying "local-network" type profile | for the user. Specifying "local-network" type profile indicates the | |||
indicates the desire for profile data (URI when content indirection | desire for profile data (URI when content indirection is used) | |||
is used) specific to the local network. The device, user, | specific to the local network. The device, user or local network is | |||
application or local network is identified in the URI of the | identified in the URI of the SUBSCRIBE request. A separate SUBSCRIBE | |||
SUBSCRIBE request. A separate SUBSCRIBE dialog is used for each | dialog is used for each profile type. The profile type associated | |||
profile type. The profile type associated with the dialog can then | with the dialog can then be used to infer which profile type changed | |||
be used to infer which profile type changed and is contained in the | and is contained in the NOTIFY or content indirection URI. The | |||
NOTIFY or content indirection URI. The Accept header of the | Accept header of the SUBSCRIBE request MUST include the MIME types | |||
SUBSCRIBE request MUST include the MIME types for all profile content | for all profile content types for which the subscribing user agent | |||
types for which the subscribing user agent wishes to retrieve | wishes to retrieve profiles or receive change notifications. In the | |||
profiles or receive change notifications. In the following ABNF, | following ABNF, EQUAL and token are defined in [RFC3261]. Additional | |||
EQUAL and token are defined in [RFC3261]. | profile types may be defined in subsequent documents. | |||
Profile-type = "profile-type" EQUAL profile-value | Profile-type = "profile-type" EQUAL profile-value | |||
profile-value = profile-types / token | profile-value = profile-types / token | |||
profile-types = "device" / "user" / "application" / "local-network" | profile-types = "device" / "user" / "local-network" | |||
The "device", "user", "application" or "local-network" token in | The "device", "user" or "local-network" token in the profile-type | |||
the profile-type parameter may represent a class or set of profile | parameter may represent a class or set of profile properties. As | |||
properties. As standards are defined for specific profile | standards are defined for specific profile contents related to the | |||
contents related to the user, device or local network, it may be | user, device or local network, it may be desirable to define | |||
desirable to define additional tokens for the profile-type | additional tokens for the profile-type parameter. Also additional | |||
parameter. Also additional content types may be defined along | content types may be defined along with the profile formats that | |||
with the profile formats that can be used in the Accept header of | can be used in the Accept header of the SUBSCRIBE to filter or | |||
the SUBSCRIBE to filter or indicate what data sets of the profile | indicate what data sets of the profile are desired. | |||
are desired. | ||||
The rationale for the separation of user, device, application and | The rationale for the separation of user, device and local network | |||
local network type profiles is provided in Section 4. It should be | type profiles is provided in Section 4. It should be noted that any | |||
noted that any of the types may result in zero or more profiles or | of the types may result in zero or more profiles or URIs being | |||
URIs being provided in the NOTIFY request. As discussed, a default | provided in the NOTIFY request. As discussed, a default user may be | |||
user may be assigned to a device. The default user's AOR, if defined | assigned to a device. The default user's AOR, if defined in the | |||
in the device profile, may in turn be used as the URI to SUBSCRIBE to | device profile, may in turn be used as the URI to SUBSCRIBE to the | |||
the "user" and "application" profile types. | "user" profile type. | |||
The data provided in the four types of profiles may overlap. As an | The data provided in the three types of profiles may overlap. As an | |||
example, the codecs that a user prefers to use, the codecs that the | example, the codecs that a user prefers to use, the codecs that the | |||
device supports (and the enterprise or device owner wishes to use), | device supports (and the enterprise or device owner wishes to use), | |||
the codecs that the local network can support (and the network | the codecs that the local network can support (and the network | |||
operator wishes to allow) all may overlap in how they are specified | operator wishes to allow) all may overlap in how they are specified | |||
in the three corresponding profiles. This policy for merging the | in the three corresponding profiles. This policy for merging the | |||
constraints across the multiple profile types can only unambiguously | constraints across the multiple profile types can only unambiguously | |||
be defined in the context of the profile syntax and semantics. This | be defined in the context of the profile syntax and semantics. This | |||
is out of scope for this document. | is out of scope for this document and will be defined in a subsequent | |||
document(s) that define the data profile format. | ||||
The "vendor", "model" and "version" parameter values are tokens | The "vendor", "model" and "version" parameter values are tokens | |||
specified by the implementer of the user agent. These parameters | specified by the implementer of the user agent. These parameters | |||
MUST be provided in the SUBSCRIBE request for all profile types. The | MUST be provided in the SUBSCRIBE request for all profile types. The | |||
implementer SHOULD use their DNS domain name (e.g. example.com) as | implementer SHOULD use their DNS domain name (e.g. example.com) as | |||
the value of the "vendor" parameter so that it is known to be unique. | the value of the "vendor" parameter so that it is known to be unique. | |||
These parameters are useful to the profile delivery server to affect | These parameters are useful to the profile delivery server to affect | |||
the profiles provided. In some scenarios it is desirable to provide | the profiles provided. In some scenarios it is desirable to provide | |||
different profiles based upon these parameters. For example, feature | different profiles based upon these parameters. For example, feature | |||
property X in a profile may work differently on two versions of the | property X in a profile may work differently on two versions of the | |||
same user agent. This gives the profile delivery server the ability | same user agent. This gives the profile delivery server the ability | |||
to compensate for or take advantage of the differences. In the | to compensate for or take advantage of the differences. In the | |||
following ABNF, EQUAL and quoted-string are defined in [RFC3261]. | following ABNF, EQUAL and quoted-string are defined in [RFC3261]. | |||
Vendor = "vendor" EQUAL quoted-string | Vendor = "vendor" EQUAL quoted-string | |||
Model = "model" EQUAL quoted-string | Model = "model" EQUAL quoted-string | |||
Version = "version" EQUAL quoted-string | Version = "version" EQUAL quoted-string | |||
The "network-user" parameter SHOULD be set when subscribing for | The "network-user" parameter MUST be set when subscribing for device | |||
device and local network profiles if the user's AOR is known. When | profiles if the user's AOR is known. The "network-user" parameter | |||
the profile-type is "device" or "local-network", the SUBSCRIBE URI | MUST be set when subscribing for "local-network" profiles if it is | |||
addresses the device or local network profile delivery server. As | known, unless the device is provisioned to preserve privacy within | |||
the SUBSCRIBE request URI for the "device" or "local-network" profile | the local network. | |||
must contain the device identity, it cannot contain the user profile | When the profile-type is "device", the SUBSCRIBE URI addresses the | |||
identifier. The "network-user" parameter is used to indicate the | device which must contain the device identity (see Section 7.13). | |||
user profile resource identifier. The SUBSCRIBE server SHOULD | When the profile-type is "local-network", the SUBSCRIBE URI | |||
authenticate the subscriber to verify the resource identifier in the | addresses the local network profile resource id which must contain | |||
"network-user" parameter if the profile provided is specific to the | the localdomain with no user part (see Section 7.13). The URIs | |||
user (e.g. granting policies or privileges beyond those of an | will not contain the user profile identifier. For this reason the | |||
anonymous user). If the value of the "profile-type" parameter is not | "network-user" parameter is needed to indicate the user profile | |||
"device" or "local-network", the "network-user" parameter has no | resource identifier associated with the "device" or URI. | |||
defined meaning and is ignored. If the "network-user" parameter is | The SUBSCRIBE server SHOULD authenticate the subscriber to verify the | |||
provided in the SUBSCRIBE request, it MUST be present in the NOTIFY | resource identifier in the "network-user" parameter if the profile | |||
request as well. In the following ABNF, EQUAL, LDQUOT, RDQUOT and | provided is specific to the user (e.g. granting policies or | |||
addr-spec are defined in [RFC3261]. | privileges beyond those of a default user). If the value of the | |||
"profile-type" parameter is not "device" or "local-network", the | ||||
"network-user" parameter has no defined meaning and is ignored. If | ||||
the "network-user" parameter is provided in the SUBSCRIBE request, it | ||||
MUST be present in the NOTIFY request as well. In the following | ||||
ABNF, EQUAL, LDQUOT, RDQUOT and addr-spec are defined in [RFC3261]. | ||||
Network-User = "network-user" EQUAL LDQUOT addr-spec RDQUOT | Network-User = "network-user" EQUAL LDQUOT addr-spec RDQUOT | |||
The entity that is subscribing and getting the "device" and | The entity that is subscribing and getting the "device" and | |||
"local-network" profiles is the device. For this reason the From | "local-network" profiles is the device. For this reason the From | |||
field should indicate the device's identity. These profiles types | field should indicate the device's identity. These profiles types | |||
contain device specific information and it is the device's | contain device specific information and it is the device's | |||
identity that gets authenticated for the "device" profile. | identity that gets authenticated for the "device" profile. | |||
Depending upon the local adminstration policy and segmentation of | Depending upon the local administration policy and segmentation of | |||
services, the device identity and user profile identity | services, the device identity and user profile identity | |||
association may not be know to the the configuration delivery | association may not be known to the configuration delivery server | |||
server ahead of time. So because the From field and SUBSCRIBE | ahead of time. Since the From field and SUBSCRIBE request URI | |||
request URI indicate the "device" profile resource identifier, the | indicate the "device" profile resource identifier, the "network- | |||
"network-user" parameter is needed to indicate the additional | user" parameter is needed to indicate the additional resource | |||
resource identifier for the user assocated with this device. | identifier for the user associated with this device. | |||
When the profile-type is "device", the user agent SHOULD set the | When the profile-type is "device", the user agent SHOULD set the | |||
"network-user" parameter to the "user" profile resource identifier is | "network-user" parameter to the "user" profile resource identifier if | |||
known. This is an indication to the profile delivery server to set | it is known. This is an indication to the profile delivery server to | |||
or change the association of the default user with the device | set or change the association of the default user with the device | |||
indicated in the SUBSCRIBE URI. If the profile delivery server | indicated in the SUBSCRIBE URI. If the profile delivery server | |||
implements and allows this policy of setting the default user with a | implements and allows this policy of setting the default user with a | |||
device, the user agent can utilize this mechanism to allow a user to | device, the user agent can utilize this mechanism to allow a user to | |||
login and make the user agent and user association permanent. | login and make the user agent and user association permanent. | |||
In the case where the profile-type is "local-network", the user agent | If the profile-type is "local-network" and users's AOR is known, the | |||
SHOULD set the "network-user" parameter if the user's AOR is known. | user agent SHOULD assign the "network-user" parameter to be the | |||
If the user has special privileges beyond that of an anonymous user | user's AOR. If the user has special privileges beyond that of a | |||
in the local network, the "network-user" parameter identifies the | default user in the local network, the "network-user" parameter | |||
user to the local network. The value of this parameter is the user's | identifies the user to the local network. | |||
address of record. | ||||
The "effective-by" parameter in the Event header of the NOTIFY | The "effective-by" parameter in the Event header of the NOTIFY | |||
request specifies the maximum number of seconds before the user agent | request specifies the maximum number of seconds before the user agent | |||
must attempt to make the new profile effective. The "effective-by" | must attempt to make the new profile effective. The "effective-by" | |||
parameter MAY be provided in the NOTIFY request for any of the | parameter MAY be provided in the NOTIFY request for any of the | |||
profile types. A value of 0 (zero) indicates that the subscribing | profile types. A value of 0 (zero) indicates that the subscribing | |||
user agent must attempt to make the profiles effective immediately | user agent must attempt to make the profiles effective immediately | |||
(despite possible service interruptions). This gives the profile | (despite possible service interruptions). This gives the profile | |||
delivery server the power to control when the profile is effective. | delivery server the power to control when the profile is effective. | |||
This may be important to resolve an emergency problem or disable a | This may be important to resolve an emergency problem or disable a | |||
user agent immediately. The "effective-by" parameter is ignored in | user agent immediately. The "effective-by" parameter is ignored in | |||
all messages other than the NOTIFY request. In the following ABNF, | all messages other than the NOTIFY request. In the following ABNF, | |||
EQUAL and DIGIT are defined in [RFC3261]. | EQUAL and DIGIT are defined in [RFC3261]. | |||
Effective-By = "effective-by" EQUAL 1*DIGIT | Effective-By = "effective-by" EQUAL 1*DIGIT | |||
SUBSCRIBE request Event header examples: | ||||
The following are example Event headers which may occur in | ||||
SUBSCRIBE requests. These examples are not intended to be | ||||
complete SUBSCRIBE requests. | ||||
Event: ua-profile;profile-type=device; | Event: ua-profile;profile-type=device; | |||
vendor="vendor.example.com";model="Z100";version="1.2.3" | vendor="vendor.example.com";model="Z100";version="1.2.3" | |||
Event: ua-profile;profile-type="user"; | Event: ua-profile;profile-type="user"; | |||
vendor="premier";model="trs8000";version="5.5" | vendor="premier.example.com";model="trs8000";version="5.5" | |||
The following are example Event headers which may occur in | ||||
NOTIFY requests. These example headers are not intended to | ||||
be complete SUBSCRIBE requests. | ||||
NOTIFY request Event header examples: | ||||
Event: ua-profile;effective-by=0 | Event: ua-profile;effective-by=0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600 | |||
The following table shows the use of Event header parameters in | The following table shows the use of Event header parameters in | |||
SUBSCRIBE requests for the four profile types: | SUBSCRIBE requests for the three profile types: | |||
profile-type || device | user | application | local-network | profile-type || device | user | local-network | |||
=========================================================== | ============================================= | |||
vendor || m | m | m | m | vendor || m | m | m | |||
model || m | m | m | m | model || m | m | m | |||
version || m | m | m | m | version || m | m | m | |||
network-user || s | | | s | network-user || s | | s | |||
effective-by || | | | | effective-by || | | | |||
m - mandatory | m - mandatory | |||
s - SHOULD be provided | s - SHOULD be provided | |||
o - optional | o - optional | |||
Non-specified means that the parameter has no meaning and | Non-specified means that the parameter has no meaning and | |||
should be ignored. | should be ignored. | |||
The following table shows the use of Event header parameters in | The following table shows the use of Event header parameters in | |||
NOTIFY requests for the four profile types: | NOTIFY requests for the three profile types: | |||
profile-type || device | user | application | local-network | profile-type || device | user | local-network | |||
=========================================================== | ============================================= | |||
vendor || | | | | vendor || | | | |||
model || | | | | model || | | | |||
version || | | | | version || | | | |||
network-user || | | | s | network-user || s | | s | |||
effective-by || o | o | o | o | effective-by || o | o | o | |||
7.3. SUBSCRIBE Bodies | 7.3. SUBSCRIBE Bodies | |||
This package defines no new use of the SUBSCRIBE request body. | This package defines no use of the SUBSCRIBE request body. A body | |||
contained in a SUBSCRIBE request for this event package is ignored. | ||||
Future documents may specify a filter-like mechanism using etags to | Future documents may specify a filter-like mechanism using etags to | |||
minimize the delivery or notification of profiles where the user | minimize the delivery or notification of profiles where the user | |||
agent already has a current version. | agent already has a current version. | |||
7.4. Subscription Duration | 7.4. Subscription Duration | |||
As the presence (or lack of) a device or user agent is not very time | As the presence (or lack of) a device or user agent is not very time | |||
critical to the functionality of the profile delivery server, it is | critical to the functionality of the profile delivery server, it is | |||
recommended that default subscription duration be 86400 seconds (one | recommended that the default subscription duration be 86400 seconds | |||
day). A one-time fetch of a profile can be accomplished by setting | (one day). A one-time fetch of a profile can be accomplished by | |||
the Expires parameter to 0 as defined in [RFC3265] resulting in a | setting the Expires parameter to 0 as defined in [RFC3265] resulting | |||
single NOTIFY with no change notification. | in a single NOTIFY with no change notification. | |||
7.5. NOTIFY Bodies | 7.5. NOTIFY Bodies | |||
The size of profile content is likely to be hundreds to several | The size of profile content is likely to be hundreds to several | |||
thousand of bytes in size. For this reason if the Accept header of | thousands of bytes in size. For this reason, if the Accept header of | |||
the SUBSCRIBE included the MIME type message/external-body indicating | the SUBSCRIBE included the MIME type message/external-body, | |||
support for content indirection the profile delivery server SHOULD | indicating support for content indirection, the profile delivery | |||
use content indirection [I-D.ietf-sip-content-indirect-mech] in the | server SHOULD use content indirection [I-D.ietf-sip-content-indirect- | |||
NOTIFY body for providing the profiles. | mech] in the NOTIFY body for providing the profiles. | |||
When delivering profiles via content indirection the profile delivery | When delivering profiles via content indirection, the profile | |||
server MUST include the Content-ID MIME header described in | delivery server MUST include the Content-ID MIME header described in | |||
[I-D.ietf-sip-content-indirect-mech] for each profile URI. This is | [I-D.ietf-sip-content-indirect-mech] for each profile URI. This is | |||
to avoid unnecessary download of the profiles. Some user agents are | to avoid unnecessary download of the profiles. Some user agents are | |||
not able to make a profile effective without rebooting or restarting. | not able to make a profile effective without rebooting or restarting. | |||
Rebooting is something to be avoided on a user agent performing | Rebooting is something to be avoided on a user agent performing | |||
services such as telephony. By examining the Content-ID, the user | services such as telephony. By examining the Content-ID, the user | |||
agent can recognize if it already has the indirected content, thus | agent can recognize if it already has the indirected content, thus | |||
avoiding unnecessary interruption of service. The Content-Type MUST | avoiding unnecessary interruption of service. The Content-Type MUST | |||
be specified for each URI. For minimal interoperability, the profile | be specified for each URI. For minimal interoperability, the profile | |||
delivery server MUST support the "http:" and "https:" URI schemes for | delivery server MUST support the "http:" and "https:" URI schemes for | |||
content indirection. Other URI schemes MAY also be provided in the | content indirection. Other URI schemes MAY also be provided in the | |||
skipping to change at page 17, line 12 | skipping to change at page 17, line 45 | |||
package and framework if the subscribing user agent and profile | package and framework if the subscribing user agent and profile | |||
delivery server both support the same scheme. The negotiation of the | delivery server both support the same scheme. The negotiation of the | |||
URI scheme is described in the following sections. | URI scheme is described in the following sections. | |||
7.6. Notifier processing of SUBSCRIBE requests | 7.6. Notifier processing of SUBSCRIBE requests | |||
The general rules for processing SUBSCRIBE requests [RFC3265] apply | The general rules for processing SUBSCRIBE requests [RFC3265] apply | |||
to this package. If content indirection is used for delivering the | to this package. If content indirection is used for delivering the | |||
profiles, the notifier does not need to authenticate the subscription | profiles, the notifier does not need to authenticate the subscription | |||
as the profile content is not transported in the SUBSCRIBE or NOTIFY | as the profile content is not transported in the SUBSCRIBE or NOTIFY | |||
transaction messages. With content indirection only URIs are | transaction messages. With content indirection, only URIs are | |||
transported in the NOTIFY request which may be secured using the | transported in the NOTIFY request which may be secured using the | |||
techniques in Section 10. If content indirection is not used, the | techniques in Section 10. If content indirection is not used, the | |||
subscribe server SHOULD reject SUBSCRIBE requests from conections | subscribe server SHOULD reject SUBSCRIBE requests from connections | |||
that are not over TLS and SHOULD challenge the SUBSCRIBE request with | that are not over TLS and SHOULD challenge the SUBSCRIBE request with | |||
SIP Digest authentication. The subscriber MUST support the "http:" | SIP Digest authentication. The subscriber MUST support the "http:" | |||
or "https:" URI scheme for content indirection. If the subscriber | or "https:" URI scheme for content indirection. If the subscriber | |||
wishes to use a URI scheme other than "http:", the subscriber must | wishes to use a URI scheme other than "http:", the subscriber must | |||
use the "schemes" Contact header field parameter to indicate the URI | use the "schemes" Contact header field parameter to indicate the URI | |||
scheme as defined in [I-D.ietf-sip-content-indirect-mech]. For | scheme as defined in [I-D.ietf-sip-content-indirect-mech]. For | |||
example the subscriber may request that content indirection use the | example the subscriber may request that content indirection use the | |||
"ldaps:" URI scheme by including "ldaps" in the "scheme" Contact | "ldaps:" URI scheme by including "ldaps" in the "scheme" Contact | |||
header parameter of the SUBSCRIBE request. If the subscriber does | header parameter of the SUBSCRIBE request. If the subscriber does | |||
not specify the URI scheme, the notifier may use either "http:" or | not specify the URI scheme, the notifier may use either "http:" or | |||
skipping to change at page 17, line 39 | skipping to change at page 18, line 24 | |||
left to the implementer. The profile delivery server may be as | left to the implementer. The profile delivery server may be as | |||
simple as a SIP SUBSCRIBE UAS and NOTIFY UAC front end to a simple | simple as a SIP SUBSCRIBE UAS and NOTIFY UAC front end to a simple | |||
HTTP server delivering static files that are hand edited. At the | HTTP server delivering static files that are hand edited. At the | |||
other extreme the profile delivery server can be part of a | other extreme the profile delivery server can be part of a | |||
configuration management system that integrates with a corporate | configuration management system that integrates with a corporate | |||
directory and IT system or carrier operations support systems, | directory and IT system or carrier operations support systems, | |||
where the profiles are automatically generated. The design of | where the profiles are automatically generated. The design of | |||
this framework intentionally provides the flexibility of | this framework intentionally provides the flexibility of | |||
implementation from simple/cheap to complex/expensive. | implementation from simple/cheap to complex/expensive. | |||
If the user or device is not known to the profile delivery server, | The "profile-type" parameter can be thought of as a filter to | |||
the implementer MAY accept the subscription or reject it. It is | indicate which profile(s) are to be provided. If the profile type | |||
recommended that the implementer accept the subscription. It is | indicated in the "profile-type" Event header parameter is not | |||
useful for the profile delivery server to maintain the subscription | provisioned or provided to any users in the domain, the profile | |||
for unprovisioned users or devices as an administrator may add the | delivery server the Notifier SHOULD return a 404 responce to the | |||
user or device to the system after the initial subscription, defining | SUBSCRIBE request. | |||
the profile contents. This allows the profile delivery server to | ||||
immediately send a NOTIFY request with the profile URIs. If the | ||||
profile delivery server does not accept the subscription from an | ||||
unknown user or device, the administer or user must manually provoke | ||||
the user agent to re-subscribe. This may be difficult if the user | ||||
agent and administrator are at different locations. | ||||
A user agent can provide hotelling by collecting a user's AOR and | If the specific user or device is not known to the profile delivery | |||
server, the implementer MAY accept the subscription or reject it. It | ||||
is a policy decision whether to maintain the subscription dialog for | ||||
an unprovisioned user or device. It is recommended that the | ||||
implementer accept the subscription. It is useful for the profile | ||||
delivery server to maintain the subscription for unprovisioned users | ||||
or devices as an administrator may add the user or device to the | ||||
system after the initial subscription, defining the profile contents. | ||||
This allows the profile delivery server to immediately send a NOTIFY | ||||
request with the profile URIs. If the profile delivery server does | ||||
not accept the subscription from an unknown user or device, the | ||||
administer or user must manually provoke the user agent to re- | ||||
subscribe. This may be difficult if the user agent and administrator | ||||
are at different locations. | ||||
A user agent can provide hotelling by collecting a user's AOR and the | ||||
credentials needed to SUBSCRIBE and retrieve the user's profiles. | credentials needed to SUBSCRIBE and retrieve the user's profiles. | |||
Hotelling functionality is achieved by subscribing to the user's AOR | Hotelling functionality is achieved by subscribing to the user's AOR | |||
and specifying the "user" profile type. This same mechanism can also | and specifying the "user" profile type. This same mechanism can also | |||
be used to secure a user agent, requiring a non-mobile user to login | be used to secure a user agent, requiring a non-mobile user to login | |||
to enable functionality beyond the default user's restricted | to enable functionality beyond the default user's restricted | |||
functionality. | functionality. | |||
When the Event header "profile-type" is "device" and the user agent | When the Event header "profile-type" is "device" and the user agent | |||
has provided the user's AOR in the "network-user" parameter, the | has provided the user's AOR in the "network-user" parameter, the | |||
profile delivery server MAY set or change the default user associated | profile delivery server MAY set or change the default user associated | |||
skipping to change at page 18, line 28 | skipping to change at page 19, line 21 | |||
SHOULD authenticate the user for the SUBSCRIBE request before | SHOULD authenticate the user for the SUBSCRIBE request before | |||
changing the default user associated with the device. | changing the default user associated with the device. | |||
7.7. Notifier generation of NOTIFY requests | 7.7. Notifier generation of NOTIFY requests | |||
As in [RFC3265], the profile delivery server MUST always send a | As in [RFC3265], the profile delivery server MUST always send a | |||
NOTIFY request upon accepting a subscription. If the device or user | NOTIFY request upon accepting a subscription. If the device or user | |||
is unknown to the profile delivery server and it chooses to accept | is unknown to the profile delivery server and it chooses to accept | |||
the subscription, the implementer has two choices. A NOTIFY MAY be | the subscription, the implementer has two choices. A NOTIFY MAY be | |||
sent with no body or content indirection containing the profile | sent with no body or content indirection containing the profile | |||
URI(s). Alternatively a NOTIFY MAY be sent with a body or content | URI(s). Alternatively, a NOTIFY MAY be sent with a body or content | |||
indirection containing URI(s) pointing to a default data set. The | indirection containing URI(s) pointing to a default data set. The | |||
data sets provided may allow for only limited functionality of the | data sets provided may allow for only limited functionality of the | |||
user agent (e.g. for a user agent with telephony capabilities, to | user agent (e.g. a telephony user agent that only permits calls to | |||
enable calls to help desk and emergency services.). This is an | the help desk and emergency services). This is an implementation and | |||
implementation and business policy decision for the profile delivery | business policy decision for the profile delivery server. | |||
server. | ||||
If the URI in the SUBSCRIBE request is a known identity and is | If the URI in the SUBSCRIBE request is a known identity and is | |||
provisioned with the requested profile type (i.e. as specified in the | provisioned with the requested profile type (i.e. as specified in the | |||
profile-type parameter of the Event header), the profile delivery | profile-type parameter of the Event header), the profile delivery | |||
server SHOULD send a NOTIFY with profile data or content indirection | server SHOULD send a NOTIFY with profile data or content indirection | |||
(if the content indirection mime type was included in the Accept | (if the content indirection mime type was included in the Accept | |||
header) containing the URI for the profile. To protect the integrety | header) containing the URI for the profile. To protect the integrity | |||
of the profile data or indirect content profile data URIs, the | of the profile data or indirect content profile data URIs, the | |||
notifier SHOULD send the NOTIFY request on the same TLS connection as | notifier SHOULD send the NOTIFY request on the same TLS connection as | |||
the SUBSCRIBE request came in on if TLS was used. | the SUBSCRIBE request came in on if TLS was used. | |||
The profile delivery server may specify when the new profiles must be | The profile delivery server may specify when the new profiles must be | |||
made effective by the user agent. The profile delivery server MAY | made effective by the user agent. The profile delivery server MAY | |||
specify a maximum time in seconds (zero or more), in the | specify a maximum time in seconds (zero or more) in the | |||
"effective-by" event header parameter, by which the user agent is | "effective-by" event header parameter. The user agent uses the | |||
required to make the new profiles effective for all dialogs. | "effective-by" parameter to determine when to make the new profiles | |||
effective for all dialogs. | ||||
7.8. Subscriber processing of NOTIFY requests | 7.8. Subscriber processing of NOTIFY requests | |||
The user agent subscribing to this event package MUST adhere to the | The user agent subscribing to this event package MUST adhere to the | |||
NOTIFY request processing behavior specified in [RFC3265]. The user | NOTIFY request processing behavior specified in [RFC3265]. The user | |||
agent MUST attempt to make the profiles effective within the time in | agent MUST attempt to make the profiles effective within the time in | |||
seconds given in the "effective-by" Event header parameter if present | seconds given in the "effective-by" Event header parameter if present | |||
in the NOTIFY request (see Section 7.7). By default the user agent | in the NOTIFY request (see Section 7.7). By default, the user agent | |||
makes the profiles effective as soon as it thinks that it is non- | makes the profiles effective as soon as it thinks that it is non- | |||
obtrusive to do so (e.g. when there are no active calls). Profile | obtrusive to do so. For example, when there are no active calls. | |||
changes SHOULD affect behavior on all new dialogs which are created | Profile changes SHOULD affect behavior on all new dialogs which are | |||
after the notification, but may not be able to affect existing | created after the notification, but may not be able to affect | |||
dialogs. The user agent SHOULD use one of the techniques specified | existing dialogs. The user agent SHOULD use one of the techniques | |||
in Section 10 to securely retrieve the profiles. If the subscriber | specified in Section 10 to securely retrieve the profiles. If the | |||
included the MIME type message/external-body for content indirection | subscriber included the MIME type message/external-body for content | |||
in the SUBSCRIBE request Accept header, the subscriber MUST support | indirection in the SUBSCRIBE request Accept header, the subscriber | |||
the http: or https: URI schemes for content indirection. If the | MUST support the http: or https: URI schemes for content indirection. | |||
subscriber indicated alternative URI schemes for content indirection | If the subscriber indicated alternative URI schemes for content | |||
it MUST also indicate support for http: or https:. The subscriber | indirection it MUST also indicate support for http: or https:. The | |||
should still be prepared to use http: or https: as the profile | subscriber should still be prepared to use http: or https: as the | |||
delivery server may not support the alternative URI schemes. | profile delivery server may not support the alternative URI schemes. | |||
The subscriber MUST be prepared to receive a NOTIFY request with no | ||||
body. The subscriber MUST NOT reject the NOTIFY request with no | ||||
body. The subscription dialog MUST NOT be termnated by the NOTIFY | ||||
with no body. | ||||
The subscriber should maintain the dialog as it was the profile | ||||
delivery server's policy decision to create the dialog. Most | ||||
likely the NOTIFY body is empty because the user or device is not | ||||
provisioned in the profile delivery server. The notifier decided | ||||
to maintain the dialog so that it can NOTIFY the subscribe of the | ||||
availablity of the profile immediately after the user or device | ||||
gets provisioned. If the subscriber ended the dialog after | ||||
receiving the NOTIFY with no body, the subscriber would need to be | ||||
manually provoked to resubscribe. | ||||
7.9. Handling of forked requests | 7.9. Handling of forked requests | |||
This event package allows the creation of only one dialog as a result | This event package allows the creation of only one dialog as a result | |||
of an initial SUBSCRIBE request. The techniques to achieve this are | of an initial SUBSCRIBE request. The techniques to achieve this are | |||
described in section 4.4.9 of [RFC3265]. | described in section 4.4.9 of [RFC3265]. | |||
7.10. Rate of notifications | 7.10. Rate of notifications | |||
It is anticipated that the rate of change for user and device | It is anticipated that the rate of change for user and device | |||
profiles will be very infrequent (i.e. days or weeks apart). For | profiles will be very infrequent (i.e. days or weeks apart). For | |||
this reason no throttling or minimum period between NOTIFY requests | this reason no throttling or minimum period between NOTIFY requests | |||
is specified for this package. | is specified for this package. | |||
7.11. State Agents | 7.11. State Agents | |||
State agents are not applicable to this event package. | State agents are not applicable to this event package. | |||
7.12. Examples | 7.12. Examples | |||
Example SUBSCRIBE and NOTIFY request using content indirection: | Example SUBSCRIBE and NOTIFY request using content indirection: Note: | |||
The Event and Via header fields are continued on a second line due to | ||||
format constraints of this document. | ||||
SUBSCRIBE sip:MAC%3aFF00000036C5@acme.example.com SIP/2.0 | SUBSCRIBE sip:MAC%3aFF00000036C5@acme.example.com SIP/2.0 | |||
Event: ua-profile;profile-type=device;vendor="vendor.example.com"; | Event: ua-profile;profile-type=device;vendor="vendor.example.com"; | |||
model="Z100";version="1.2.3" | model="Z100";version="1.2.3";network-user="sip:betty@example.com" | |||
From: sip:MAC%3aFF00000036C5@acme.example.com;tag=1234 | From: sip:MAC%3aFF00000036C5@acme.example.com;tag=1234 | |||
To: sip:MAC%3aFF00000036C5@acme.example.com;tag=abcd | To: sip:MAC%3aFF00000036C5@acme.example.com | |||
Call-ID: 3573853342923422@10.1.1.44 | Call-ID: 3573853342923422@10.1.1.44 | |||
CSeq: 2131 SUBSCRIBE | CSeq: 2131 SUBSCRIBE | |||
Contact: sip:MAC%3aFF00000036C5@10.1.1.44 | Contact: sip:MAC%3aFF00000036C5@10.1.1.44 | |||
Via: SIP/2.0/TCP 10.1.1.41; | Via: SIP/2.0/TCP 10.1.1.41; | |||
branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | branch=z9hG4bK6d6d35b6e2a203104d97211a3d18f57a | |||
Accept: message/external-body, application/x-z100-device-profile | Accept: message/external-body, application/x-z100-device-profile | |||
Content-Length: 0 | Content-Length: 0 | |||
NOTIFY sip:MAC%3aFF00000036C5@10.1.1.44 SIP/2.0 | NOTIFY sip:MAC%3aFF00000036C5@10.1.1.44 SIP/2.0 | |||
Event: ua-profile;effective-by=3600 | Event: ua-profile;effective-by=3600; | |||
network-user="sip:betty@example.com" | ||||
From: sip:MAC%3aFF00000036C5@acme.example.com;tag=abcd | From: sip:MAC%3aFF00000036C5@acme.example.com;tag=abcd | |||
To: sip:MAC%3aFF00000036C5@acme.example.com;tag=1234 | To: sip:MAC%3aFF00000036C5@acme.example.com;tag=1234 | |||
Call-ID: 3573853342923422@10.1.1.44 | Call-ID: 3573853342923422@10.1.1.44 | |||
CSeq: 321 NOTIFY | CSeq: 321 NOTIFY | |||
Via: SIP/2.0/UDP 192.168.0.3; | Via: SIP/2.0/UDP 192.168.0.3; | |||
branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | branch=z9hG4bK1e3effada91dc37fd5a0c95cbf6767d1 | |||
MIME-Version: 1.0 | MIME-Version: 1.0 | |||
Content-Type: multipart/mixed; boundary=boundary42 | Content-Type: multipart/mixed; boundary=boundary42 | |||
Content-Length: ... | Content-Length: ... | |||
skipping to change at page 20, line 49 | skipping to change at page 22, line 6 | |||
--boundary42-- | --boundary42-- | |||
7.13. Use of URIs to Retrieve State | 7.13. Use of URIs to Retrieve State | |||
The URI for the SUBSCRIBE request is formed differently depending | The URI for the SUBSCRIBE request is formed differently depending | |||
upon which profile type the subscription is for. This allows the | upon which profile type the subscription is for. This allows the | |||
different profile types to be potentially managed by different | different profile types to be potentially managed by different | |||
profile delivery servers (perhaps even operated by different | profile delivery servers (perhaps even operated by different | |||
entities). The To and From field will typically contain the same URI | entities). The To and From field will typically contain the same URI | |||
as is used in the original SUBSCIRBE request URI. | as is used in the original SUBSCRIBE request URI. | |||
7.13.1. Device URIs | 7.13.1. Device URIs | |||
The URI for the "device" type profile (device URI) is based upon the | The URI for the "device" type profile (device URI) is based upon the | |||
identity of the device. The device URI MUST be unique across all | identity of the device. The device URI MUST be unique across all | |||
devices and implementations. If an instance id is used as the user | devices and implementations. If an instance id is used as the user | |||
part of the device URI, it SHOULD remain the same for the lifetime of | part of the device URI, it SHOULD remain the same for the lifetime of | |||
the user agent. The device URI is used to identify which profile is | the user agent. The device URI is used to identify which profile is | |||
associated with a specific instance of a user agent. | associated with a specific instance of a user agent. | |||
skipping to change at page 21, line 37 | skipping to change at page 22, line 40 | |||
The URI for the device type profile MUST use a unique identifier as | The URI for the device type profile MUST use a unique identifier as | |||
the user portion of the URI. The host and port portion of the URI is | the user portion of the URI. The host and port portion of the URI is | |||
set to that of the domain or address of the profile delivery server | set to that of the domain or address of the profile delivery server | |||
which manages that user agent. A means of discovering the host and | which manages that user agent. A means of discovering the host and | |||
port portion is discussed in Section 8.1. There is an administration | port portion is discussed in Section 8.1. There is an administration | |||
aspect of the unique identifier, that makes it desirable for the id | aspect of the unique identifier, that makes it desirable for the id | |||
to be obtainable or predictable prior to installation of the device | to be obtainable or predictable prior to installation of the device | |||
(hard or soft). Also from a human factors perspective, ids that are | (hard or soft). Also from a human factors perspective, ids that are | |||
easily distinguished and communicated will make the administrators | easily distinguished and communicated will make the administrators | |||
job a little easier. The MAC address or UUID SHOULD be used for | job a little easier. The MAC address or a UUID [RFC4122] SHOULD be | |||
constructing a unique identifier to be used in the user portion of | used for constructing a unique identifier to be used in the user | |||
the device URI. | portion of the device URI. | |||
If the identifier is a MAC address, it MUST be formatted as the | If the identifier is a MAC address, it MUST be formatted as the | |||
characters "MAC:" followed by a 12 digit hexadecimal representation | characters "MAC:" followed by a 12 digit hexadecimal representation | |||
of the MAC address. The address can not include ":", whitespace, or | of the MAC address. The address can not include ":", whitespace, or | |||
other formatting. | other formatting. | |||
The MAC address of the device may be used if there will always be | The MAC address of the device may be used if there will always be | |||
no more than one user agent using that MAC address over time (e.g. | no more than one user agent using that MAC address over time (e.g. | |||
a dedicated telephone appliance). The MAC address may not be used | a dedicated telephone appliance). The MAC address may not be used | |||
if more than one user agent instance exists using the same MAC | if more than one user agent instance exists using the same MAC | |||
address (e.g. multiple instances of a softphone may run on a | address (e.g. multiple instances of a softphone may run on a | |||
general purpose computing device). The advantage of the MAC | general purpose computing device). The advantage of the MAC | |||
address is that many vendors put bar codes on the device with the | address is that many vendors put bar codes on the device with the | |||
actual MAC address on it. A bar code scanner is a convenient | actual MAC address on it. A bar code scanner is a convenient | |||
means of collecting the instance id for input and provisioning on | means of collecting the instance id for input and provisioning on | |||
the profile delivery server. If the MAC address is used, it is | the profile delivery server. If the MAC address is used, it is | |||
skipping to change at page 22, line 18 | skipping to change at page 23, line 27 | |||
prefix of "MAC:" should be added to the MAC address to form a | prefix of "MAC:" should be added to the MAC address to form a | |||
proper URN [RFC2141]. For example a device managed by | proper URN [RFC2141]. For example a device managed by | |||
sipuaconfig.example.com using its MAC address to form the device | sipuaconfig.example.com using its MAC address to form the device | |||
URI might look like: | URI might look like: | |||
sip:MAC%3a00DF1E004CD0@sipuaconfig.example.com. | sip:MAC%3a00DF1E004CD0@sipuaconfig.example.com. | |||
UHEX = DIGIT / %x41-46 ;uppercase A-F | UHEX = DIGIT / %x41-46 ;uppercase A-F | |||
MAC = %x4d.41.43 ; MAC in caps | MAC = %x4d.41.43 ; MAC in caps | |||
mac-ident = MAC ":" 12UHEX | mac-ident = MAC ":" 12UHEX | |||
When the MAC address is not used in the device URI, UUID SHOULD be | When the MAC address is not used in the device URI, a UUID [RFC4122] | |||
used. | for the device SHOULD be used. | |||
For devices where there is no MAC address or the MAC address is | For devices where there is no MAC address or the MAC address is | |||
not unique to an instance of a user agent (e.g. multiple | not unique to an instance of a user agent (e.g. multiple | |||
softphones on a computer or a gateway with multiple logical user | softphones on a computer or a gateway with multiple logical user | |||
agents) it is RECOMMENDED that a UUID [RFC4122] is used as the | agents) it is RECOMMENDED that a UUID [RFC4122] is used as the | |||
user portion of the device URI. The same approach to defining a | user portion of the device URI. The same approach to defining a | |||
user agent instance ID as [I-D.ietf-sip-outbound] should be used. | user agent instance ID as [I-D.ietf-sip-outbound] should be used. | |||
When constructing the instance id the implementer should also | When constructing the instance id, the implementer should also | |||
consider that a human may need to manually enter the instance id | consider that a human may need to manually enter the instance id | |||
to provision the device in the profile delivery server (e.g. | to provision the device in the profile delivery server (e.g. | |||
longer strings are more error prone in data entry). When the URN | longer strings are more error prone in data entry). When the URN | |||
is used as the user part of URI, it MUST be URL escaped. The ":" | is used as the user part of the URI, it MUST be URL escaped. The | |||
is not a legal character (without being escaped) in the user part | ":" is not a legal character (without being escaped) in the user | |||
of a addr-spec [RFC4122]. For example the instance ID: | part of a addr-spec [RFC4122]. For example the instance ID: | |||
urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6 would be escaped to | urn:uuid:f81d4fae-7ced-11d0-a765-00a0c91e6bf6 would be escaped to | |||
look as follows in a URI: | look as follows in a URI: | |||
sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com. | sip:urn%3auuid%3af81d4fae-7ced-11d0-a765-00a0c91e6bf6@example.com. | |||
Soft user agents are likely to need to use this approach due to | Soft user agents are likely to need to use this approach due to | |||
the multi-user nature of general purpose computers. The software | the multi-user nature of general purpose computers. The software | |||
installer program might generate the uuid as part of the install | installer program might generate the uuid as part of the install | |||
process so that it remains persistent for the installation. It | process so that it remains persistent for the installation. It | |||
may also be desirable that any upgrades of the software maintain | may also be desirable that any upgrades of the software maintain | |||
the unique id. However these are all implementation choices. | the unique id. However these are all implementation choices. | |||
7.13.2. User and Application URIs | 7.13.2. User URIs | |||
The URI for the "user" and "application" type profiles is based upon | The URI for the "user" type profile is based upon the identity of the | |||
the identity of the user. It is an administration policy on how user | user. It is an administration policy on how user profile identities | |||
profile identities are assigned. Typically the user's address of | are assigned. Typically the user's address of record (AOR) is used | |||
record (AOR) is used as the URI in the SUBSCRIBE request. A new user | as the URI in the SUBSCRIBE request. A new user agent or device may | |||
agent or device may not know the user's AOR. The user's AOR may be | not know the user's AOR. The user's AOR may be obtained as part of a | |||
obtained as part of a default user property in the device profile. | default user property in the device profile. Alternatively the user | |||
Alternatively the user agent may prompt the user for an AOR and | agent may prompt the user for an AOR and credentials to be used to | |||
credentials to be used to authenticate the request. This can provide | authenticate the request. This can provide a login and/or hotelling | |||
a login and/or hotelling feature on the user agent. The user agent | feature on the user agent. The user agent may be pre-provisioned | |||
may be pre-provisioned with the user's AOR or provided as information | with the user's AOR or provided as information on a SIM or flash key. | |||
on a SIM or flash key. These are only examples not an exhaustive | These are only examples and not an exhaustive list of sources for the | |||
list of sources for the user AOR. | user AOR. | |||
7.13.3. Local Network URIs | 7.13.3. Local Network URIs | |||
The URI for the "local-network" type profile is based upon the | The URI for the "local-network" type profile is based upon the | |||
identity of the local network. When subscribing to the local network | identity of the local network. When subscribing to the local network | |||
profile, the user part of the URI SHOULD be the same device ID used | profile, the user part of the SUBSCRIBE request URI SHOULD NOT be | |||
as the user part of the device profile SUBSCRIBE request URI defined | provided. The From field user part of the SUBSCRIBE request SHOULD | |||
in Section 7.13.1. The host and port part of the URI is the local | be the same device ID used as the user part of the device profile | |||
network name/domain. The discovery of the local network name or | SUBSCRIBE request URI defined in Section 7.13.1. The host and port | |||
domain is discussed in Section 8.1. The user agent may provide the | part of the request URI and From field is the local network name/ | |||
user's AOR as the value to the "network-user" event header parameter. | domain. The discovery of the local network name or domain is | |||
This is useful if the user has privileges in the local network beyond | discussed in Section 8.1. The user agent may provide the user's AOR | |||
those of the default user. When "network-user" is provided the | as the value to the "network-user" event header parameter. This is | |||
profile delivery server SHOULD authenticate the user before providing | useful if the user has privileges in the local network beyond those | |||
the profile if additional privileges are granted. Example URI: | of the default user. When "network-user" is provided the profile | |||
sip:MAC%3a00DF1E004CD0@example.com | delivery server SHOULD authenticate the user before providing the | |||
profile if additional privileges are granted. Example URI: sip: | ||||
example.com | ||||
The local network profile SUBSCRIBE request URI uses the device ID | The local network profile SUBSCRIBE request URI does not have a | |||
in the user part of the local network request URI so that every | user part so that the URI is distinct between the "local" and | |||
device in the network has a unique and constant request URI. Even | "device" URIs when the domain is the same for the two. This | |||
though every device may get the same or similar local network | provides a means of routing to the appropriate profile delivery | |||
profiles, the uniqueness of the URI provides an important | server in domains where they are distinct servers. The From field | |||
capability. Having unique URIs allows the management of the local | uses the device ID in the user part of the local network request | |||
network to track user agents present in the network and | URI so that every device in the network has a unique and constant | |||
consequently also manage resources such as bandwidth and port | From field. Even though every device may get the same or similar | |||
allocation. | local network profiles, the uniqueness of the From field provides | |||
an important capability. Having unique From fields allows the | ||||
management of the local network to track user agents present in | ||||
the network and consequently also manage resources such as | ||||
bandwidth and port allocation. | ||||
8. Profile Delivery Framework Details | 8. Profile Delivery Framework Details | |||
The following describes how different functional steps of the profile | The following describes how different functional steps of the profile | |||
delivery framework work. Also described here is how the event | delivery framework work. Also described here is how the event | |||
package defined in this document provides the enrollment and | package defined in this document provides the enrollment and | |||
notification functions within the framework. | notification functions within the framework. | |||
8.1. Discovery of Subscription URI | 8.1. Discovery of Subscription URI | |||
The discovery approach varies depending upon which profile type URI | The discovery approach varies depending upon which profile type URI | |||
is to be discovered. The order of discovery is important in the | is to be discovered. The order of discovery is important in the | |||
bootstrapping situation as the user agent may not have any | bootstrapping situation as the user agent may not have any | |||
information provisioned. The local network profile should be | information provisioned. The local network profile should be | |||
discovered first as it may contain key information such as how to | discovered first as it may contain key information such as how to | |||
traverse a NAT/firewall to get to outside services (e.g. the user's | traverse a NAT/firewall to get to outside services (e.g. the user's | |||
profile delivery server). The device profile URI should be | profile delivery server). The device profile URI should be | |||
discovered next. The device profile may contain the default user's | discovered next. The device profile may contain the default user's | |||
AOR or firmware/software information that should be updated first | AOR or firmware/software information that should be updated first | |||
before proceeding with the discovery process. The user and | before proceeding with the discovery process. The user profile | |||
application profile subscription URIs should be discovered last. The | subscription URI should be discovered last. The URIs are formed | |||
URIs are formed differently for each of the profile types. This is | differently for each of the profile types. This is to support the | |||
to support the delegation of the profile management to potentially | delegation of the profile management to potentially three different | |||
four different entities. However all four profile types may be | entities. However all three profile types may be provided by the | |||
provided by the same entity. As the user agent has no way of knowing | same entity. As the user agent has no way of knowing whether the | |||
whether the profiles are provide by one or more different profile | profiles are provide by one or more different profile delivery | |||
delivery servers ahead of time, it must subscribe to all four profile | servers ahead of time, it must subscribe to all three profile types | |||
types in separate SUBSCRIBE requests to get the profiles. | in separate SUBSCRIBE requests to get the profiles. | |||
8.1.1. Discovery of Local Network URI | 8.1.1. Discovery of Local Network URI | |||
The "discovered" host for the "local-network" profile subscription | The "discovered" host for the "local-network" profile subscription | |||
URI is the local IP network domain for the user agent, either | URI is the local IP network domain for the user agent, either | |||
provisioned as part of the device's static network configuration or | provisioned as part of the device's static network configuration or | |||
discovered via DHCP [RFC2131](option 15 [RFC2132]). The local | discovered via DHCP [RFC2131](option 15 [RFC2132]). The local | |||
network profile subscription URI SHOULD not be remembered if the user | network profile subscription URI SHOULD not be remembered if the user | |||
agent moves from one local network to another other. The user agent | agent moves from one local network to another other. The user agent | |||
should perform the local network discovery to construct the network | should perform the local network discovery to construct the network | |||
skipping to change at page 25, line 20 | skipping to change at page 26, line 33 | |||
everywhere. | everywhere. | |||
Therefore a number of mechanisms should be tried in the specified | Therefore a number of mechanisms should be tried in the specified | |||
order: SIP DHCP option [RFC3361], SIP DNS SRV [RFC3263], DNS A record | order: SIP DHCP option [RFC3361], SIP DNS SRV [RFC3263], DNS A record | |||
and manual. The user agent may be pre-provisioned with the host and | and manual. The user agent may be pre-provisioned with the host and | |||
port (e.g. service providers may pre-provision a device before | port (e.g. service providers may pre-provision a device before | |||
sending it to a subscriber, provide a SIM or flash key, etc.) in | sending it to a subscriber, provide a SIM or flash key, etc.) in | |||
which case this discovery mechanism is not needed. Before performing | which case this discovery mechanism is not needed. Before performing | |||
the discovery steps, the user agent should provide a means to skip | the discovery steps, the user agent should provide a means to skip | |||
the discovery stage and manually enter the device URI host and port. | the discovery stage and manually enter the device URI host and port. | |||
In addition the user agent should allow the user to accept or reject | In addition, the user agent should allow the user to accept or reject | |||
the discovered host and port, in case an alternate to the discovered | the discovered host and port in case an alternative to the discovered | |||
host and port are desired. | host and port is desired. | |||
1. The first discovery mechanism that should be tried to construct | 1. The first discovery mechanism for the device SUBSCRIBE request | |||
the device SUBSCRIBE request URI, as described in Section 7.13.1, | URI Section 7.13.1 is to use the host and port of the outbound | |||
is to use the host and port of the outbound proxy discovered by | proxy discovered by the SIP DHCP option 120 [RFC3361]. If the | |||
the SIP DHCP option 120 as described in [RFC3361]. If the SIP | SIP DHCP option is not provided in the DHCP response or if the | |||
DHCP option is not provided in the DHCP response; or no SIP | SUBSCRIBE request to the ua-profile event receives no response or | |||
response is received for the SUBSCRIBE request; or a SIP failure | a failure response other than for authentication, the next | |||
response other than for authorization is received for the | discovery mechanism should be tried. | |||
SUBSCRIBE request to the ua-profile event, the next discovery | ||||
mechanism should be tried. | ||||
For example: Consider a dedicated hardware device with a | For example: Consider a dedicated hardware device with a | |||
single user agent having the MAC address: abc123efd456. The | single user agent having the MAC address: abc123efd456. The | |||
user agent sends a DHCP request including the request for the | user agent sends a DHCP request including the request for the | |||
DHCP option for SIP: 120 (see [RFC3361]). If the DHCP | DHCP option for SIP: 120 (see [RFC3361]). If the DHCP | |||
response includes an answer for option 120, then the DNS name | response includes an answer for option 120, then the DNS name | |||
or IP address included is used in the host part of the device | or IP address included is used in the host part of the device | |||
URI. For this example let's assume: example.com. The device | URI. For this example let's assume: example.com. The device | |||
URI would look like: sip:MAC%3aABC123EFD456@example.com. The | URI would look like: sip:MAC%3aABC123EFD456@example.com. The | |||
user agent should send this request using the normal SIP | user agent should send this request using the normal SIP | |||
skipping to change at page 26, line 41 | skipping to change at page 28, line 4 | |||
4. If all other discovery techniques fail, a manual means for the | 4. If all other discovery techniques fail, a manual means for the | |||
user to enter the host and port used to construct the SUBSCRIBE | user to enter the host and port used to construct the SUBSCRIBE | |||
request URI MUST be provided by the user agent. | request URI MUST be provided by the user agent. | |||
Two approaches to the manual discovery process are suggested. In the | Two approaches to the manual discovery process are suggested. In the | |||
first approach using SIP, the user agent provides a means for | first approach using SIP, the user agent provides a means for | |||
entering the subscription host and port information for the request | entering the subscription host and port information for the request | |||
URI along with the user id and password to be used for authentication | URI along with the user id and password to be used for authentication | |||
of the SUBSCRIBE request. With this approach the user agent begins | of the SUBSCRIBE request. With this approach the user agent begins | |||
with the enrollment process followed by the change notification and | with the enrollment process followed by the change notification and | |||
profile retrieve steps. | profile retrieval steps. | |||
An alternative to the manual discovery using SIP, is to start with | An alternative to the manual discovery using SIP, is to start with | |||
the retrieve process. The user agent provides a means of entering a | the retrieve process. The user agent provides a means of entering a | |||
HTTPS URI along with the user id and password to be used for | HTTPS URI along with the user id and password to be used for | |||
authentication of the retrieval of the profile. The retrieved device | authentication of the retrieval of the profile. The retrieved device | |||
profile may contain the properties for the SUBSCRIBE request URI and | profile may contain the properties for the SUBSCRIBE request URI and | |||
credentials to enroll and get change notification of profile changes. | credentials to enroll and get change notification of profile changes. | |||
This approach bootstraps the process in a different step in the | This approach bootstraps the process in a different step in the | |||
cycle, but uses the same profile framework. When the device starts | cycle, but uses the same profile framework. When the device starts | |||
with retrieval of the profile via HTTPS (instead of a SIP SUBSCRIBE | with retrieval of the profile via HTTPS (instead of a SIP SUBSCRIBE | |||
to the event package), the device MUST provide the Event header in | to the event package), the device MUST provide the Event header in | |||
the HTTPS request using the same format as described for the | the HTTPS request using the same format as described for the | |||
SUBSCRIBE request (see Section 7.2) . The Event header is necessary | SUBSCRIBE request (see Section 7.2) . The Event header is necessary | |||
to determine which profile is requested as well as for providing | to determine which profile is requested as well as for providing | |||
specific information about the device. | specific information about the device. | |||
Once a user agent has successfully discovered, enrolled and received | This document defines a new HTTP request header "Event". The syntax | |||
a NOTIFY response with profile data or URI(s), the user agent should | of the HTTP Event header is the same as the SIP Event header defined | |||
cache (i.e. store persistantly) the device profile SUBSCRIBE request | in this document. The purpose of the HTTP Event header, just like | |||
URI (rather than reconstructing it as described in the discovery | the SIP Event header is to define the content of the state | |||
process every time the device is restarted) to avoid having to | information to be retrieved. In particular, the state information is | |||
rediscover the profile delivery server again in the future. Caching | the device, user or local network profile for the device. The SIP | |||
of the device URI is necessary when the user agent is likely to move | Event header parameters for this event package ("profile-type", | |||
to different local network domains as the local network may not be | "vendor", "model", "version") are also manditory for the HTTP Event | |||
the provider for the device's profile. The user agent should not | header as they are used to provide information as to what profile | |||
cache the device URI until it receives a NOTIFY with profile data or | type is requested along with information about the device which may | |||
URI(s). The reason for this is that a profile delivery server may | impact the contents of the profile. | |||
Once a user agent has been successfully discovered, enrolled and | ||||
received a NOTIFY response with profile data or URI(s), the user | ||||
agent should cache (i.e. store persistently) the device profile | ||||
SUBSCRIBE request URI (rather than reconstructing it as described in | ||||
the discovery process every time the device is restarted) to avoid | ||||
having to rediscover the profile delivery server again in the future. | ||||
Caching of the device URI is necessary when the user agent is likely | ||||
to move to different local network domains as the local network may | ||||
not be the provider for the device's profile. The user agent should | ||||
not cache the device URI until it receives a NOTIFY with profile data | ||||
or URI(s). The reason for this is that a profile delivery server may | ||||
send 202 responses to SUBSCRIBE requests and NOTIFY responses to | send 202 responses to SUBSCRIBE requests and NOTIFY responses to | |||
unknown user agent (see Section 7.6) with no profile data or URIs. | unknown user agent (see Section 7.6) with no profile data or URIs. | |||
Until the profile delivery server has sent a NOTIFY request with | Until the profile delivery server has sent a NOTIFY request with | |||
profile data or URI(s), it has not agreed to provide profiles. | profile data or URI(s), it has not agreed to provide profiles. | |||
To illustrate why the user agent should not cache the device | To illustrate why the user agent should not cache the device | |||
profile SUBSCRIBE URI until profile data or URI(s) are provided in | profile SUBSCRIBE URI until profile data or URI(s) are provided in | |||
the NOTIFY, consider the following example: a user agent running | the NOTIFY, consider the following example: a user agent running | |||
on a laptop plugged into a visited LAN in which a foreign profile | on a laptop plugged into a visited LAN in which a foreign profile | |||
delivery server is discovered. The profile delivery server never | delivery server is discovered. The profile delivery server never | |||
provides profile URIs in the NOTIFY request as it is not | provides profile URIs in the NOTIFY request as it is not | |||
provisioned to accept the user agent. The user then takes the | provisioned to accept the user agent. The user then takes the | |||
laptop to their enterprise LAN. If the user agent cached the | laptop to their enterprise LAN. In this example, the user agent | |||
SUBSCRIBE URI from the visited LAN (which did not provide | cached the SUBSCRIBE URI from the visited LAN which did not | |||
profiles), when subsequently placed in the enterprise LAN which is | provide profiles. When the UA is subsequently placed in the | |||
provisioned to provide profiles to the user agent, the user agent | enterprise LAN which is provisioned to provide profiles to the | |||
would not attempt to discover the profile delivery server. | user agent, the user agent would not attempt to discover the | |||
profile delivery server. | ||||
8.1.3. Discovery of User and Application URI | 8.1.3. Discovery of User URI | |||
The user's AOR may be preprovisioned or provided via SIM or flash | The user's AOR may be pre-provisioned or provided via SIM or flash | |||
key, etc. The device profile may define a default user and AOR. If | key, etc. The device profile may define a default user and AOR. If | |||
provided in the device profile and a preprovisioned user AOR is not | provided in the device profile and a pre-provisioned user AOR is not | |||
provided, the default user's AOR is used to subscribe to the "user" | provided, the default user's AOR is used to subscribe to the "user" | |||
and "application" profiles. If not provided through the above two | profile. If not provided through the above two approaches, the AOR | |||
approaches, the AOR to be used for the "user" and "application" | to be used for the "user" subscription URI, is "discovered" manually | |||
subscription URI, is "discovered" manually by prompting the user. | by prompting the user. The URI obtained in the discovery steps | |||
The URI obtained in the discovery steps described above for the | described above for the "user" profile subscription is stored | |||
"user" and "application" profile subscriptions is stored persistantly | persistently in the device until explicitly reset or updated by the | |||
in the device until explicitly reset or updated by the user or | user or profile. | |||
profile. | ||||
8.2. Enrollment with Profile Server | 8.2. Enrollment with Profile Server | |||
Enrollment is accomplished by subscribing to the event package | Enrollment is accomplished by subscribing to the event package | |||
described in Section 7. The enrollment process is useful to the | described in Section 7. The enrollment process is useful to the | |||
profile delivery server as it makes the server aware of user agents | profile delivery server as it makes the server aware of user agents | |||
to which it may deliver profiles (those user agents the profile | to which it may deliver profiles. These include user agents that the | |||
delivery server is provisioned to provide profiles to; those present | profile delivery server is provisioned to provide profiles to, those | |||
to which the server may provide profiles in the future; and those | present to which the server may provide profiles in the future, and | |||
that the server can automatically provide default profiles). It is | those that the server can automatically provide default profiles. It | |||
an implementation choice and business policy as to whether the | is an implementation choice and business policy as to whether the | |||
profile delivery server provides profiles to user agents that it is | profile delivery server provides profiles to user agents that it is | |||
not explicitly provisioned to do so. However the profile delivery | not explicitly provisioned to do so. However the profile delivery | |||
server SHOULD accept (with 2xx response) SUBSCRIBE requests from any | server SHOULD accept (with 2xx response) SUBSCRIBE requests from any | |||
user agent as explained in Section 7.5. | user agent as explained in Section 7.5. | |||
8.3. Notification of Profile Changes | 8.3. Notification of Profile Changes | |||
The NOTIFY request in the ua-profile event package serves two | The NOTIFY request in the ua-profile event package serves two | |||
purposes. First it provides the user agent with a means to obtain | purposes. First it provides the user agent with a means to obtain | |||
the profile data directly or via URI(s) for desired profiles without | the profile data directly or via URI(s) for desired profiles without | |||
skipping to change at page 29, line 32 | skipping to change at page 31, line 12 | |||
This specification registers a new event package as defined in | This specification registers a new event package as defined in | |||
[RFC3265]. The following information required for this registration: | [RFC3265]. The following information required for this registration: | |||
Package Name: ua-profile | Package Name: ua-profile | |||
Package or Template-Package: This is a package | Package or Template-Package: This is a package | |||
Published Document: RFC XXXX (Note to RFC Editor: Please fill in | Published Document: RFC XXXX (Note to RFC Editor: Please fill in | |||
XXXX with the RFC number of this specification). | XXXX with the RFC number of this specification). | |||
Person to Contact: Daniel Petrie dan.ietf AT SIPez DOT com | Person to Contact: Daniel Petrie dan.ietf AT SIPez DOT com | |||
New event header parameters: profile-type, vendor, model, version, | New event header parameters: profile-type, vendor, model, version, | |||
effective-by, network-user | effective-by, network-user | |||
The profile-type parameter has predefined values. The other new | ||||
event header parameters do not. | ||||
The following table illustrates the additions to the IANA SIP Header | ||||
Field Parameters and Parameter Values: (Note to RFC Editor: Please | ||||
fill in XXXX with the RFC number of this specification) | ||||
Predefined | ||||
Header Field Parameter Name Values Reference | ||||
---------------------------- --------------- --------- --------- | ||||
Event profile-type Yes [RFCXXXX] | ||||
Event vendor No [RFCXXXX] | ||||
Event model No [RFCXXXX] | ||||
Event version No [RFCXXXX] | ||||
Event effective-by No [RFCXXXX] | ||||
Event network-user No [RFCXXXX] | ||||
9.2. New HTTP Event Header | ||||
This document defines a new permanent HTTP request header field: | ||||
Event | ||||
Header field name: Event | ||||
Applicable protocol: http | ||||
Status: standard | ||||
Author/Change controller: IETF | ||||
Specification document(s): [RFCXXXX] (Note to RFC Editor: Please | ||||
fill in XXXX with the RFC number of this specification). | ||||
10. Security Considerations | 10. Security Considerations | |||
Profiles may contain sensitive data such as user credentials and | Profiles may contain sensitive data such as user credentials and | |||
personal information. The protection of this data depends upon how | personal information. The protection of this data depends upon how | |||
the data is delivered. Some profiles may be safe to deliver without | the data is delivered. Some profiles may be safe to deliver without | |||
the need to protect the content. For example in some environments | the need to protect the content. For example in some environments | |||
the local network profile may contain the list of codecs that are | the local network profile may contain the list of codecs that are | |||
acceptable for use in the network and information on NAT traversal | acceptable for use in the network and information on NAT traversal | |||
such as a STUN server to use. As the information in this example | such as a STUN server to use. As the information in this example | |||
skipping to change at page 30, line 4 | skipping to change at page 32, line 10 | |||
such as a STUN server to use. As the information in this example | such as a STUN server to use. As the information in this example | |||
local network profile does not contain passwords or sensitive | local network profile does not contain passwords or sensitive | |||
information it may be acceptable to provide it without authentication | information it may be acceptable to provide it without authentication | |||
or confidentiality (encryption). We refer to these as non- | or confidentiality (encryption). We refer to these as non- | |||
confidential profiles. Non-confidential profiles require message | confidential profiles. Non-confidential profiles require message | |||
integrity and profile server authentication, as described in | integrity and profile server authentication, as described in | |||
Section 10.3. However any profiles that contain personal | Section 10.3. However any profiles that contain personal | |||
information, passwords or credentials (confidential profiles) require | information, passwords or credentials (confidential profiles) require | |||
mutual authentication, confidentiality, and message integrity, and | mutual authentication, confidentiality, and message integrity, and | |||
must follow the guidance provided in the next two subsections. | must follow the guidance provided in the next two subsections. | |||
Profile specifications that define schemas MUST identify if they | Profile specifications that define schemas MUST identify if they | |||
contain confidential data to indicate which of the security | contain confidential data to indicate which of the security | |||
approaches describer here should be used. | approaches described here should be used. | |||
The profile data is delivered in either the NOTIFY request or via the | The profile data is delivered in either the NOTIFY request or via the | |||
URI scheme indicated in the content indirection in the NOTIFY | URI scheme indicated in the content indirection in the NOTIFY | |||
request. The security approach is different for these two delivery | request. The security approach is different for these two delivery | |||
mechanisms. | mechanisms. | |||
Subscribers implementing this specification MUST implement either | Subscribers implementing this specification MUST implement either | |||
HTTP or HTTPS. Subscribers also MUST implement the hash verification | HTTP or HTTPS. Subscribers also MUST implement the hash verification | |||
scheme described in SIP content indirection [I-D.ietf-sip-content- | scheme described in SIP content indirection [I-D.ietf-sip-content- | |||
indirect-mech]. SIP profile delivery servers MUST implement both | indirect-mech]. SIP profile delivery servers MUST implement both | |||
skipping to change at page 30, line 33 | skipping to change at page 32, line 38 | |||
10.1. Confidential Profile Content in NOTIFY Request | 10.1. Confidential Profile Content in NOTIFY Request | |||
When the profile data is delivered directly in the NOTIFY request, | When the profile data is delivered directly in the NOTIFY request, | |||
the SUBSCRIBE request MUST be authenticated using the SIP Digest | the SUBSCRIBE request MUST be authenticated using the SIP Digest | |||
authentication mechanism. As the profile content is delivered in the | authentication mechanism. As the profile content is delivered in the | |||
resulting NOTIFY request to the subscription, authenticating the | resulting NOTIFY request to the subscription, authenticating the | |||
SUBSCRIBE is the only way to prevent unauthorized access to the | SUBSCRIBE is the only way to prevent unauthorized access to the | |||
profile data. To provide message integrity and confidentiality over | profile data. To provide message integrity and confidentiality over | |||
the profile data, a direct TLS connection MUST be established for the | the profile data, a direct TLS connection MUST be established for the | |||
SUBSCRIBE request. The device SHOULD authenticate the server via the | SUBSCRIBE request. The device SHOULD authenticate the server via the | |||
TLS connection, which also provides a means of verifying that a | TLS connection, which also provides a means of verifying (as | |||
direct TLS connection was used (e.g. The device may prompt the user | described in [RFC3261]) that a direct TLS connection was used (e.g. | |||
to verify the Common Name in the server's certificate.). The server | The device may prompt the user to verify the SubjectAltName in the | |||
may challenge the device for its certificate, when establishing the | server's certificate.). The server may challenge the device for its | |||
TLS connection, to obtain the public key to use to S/MIME encode the | certificate, when establishing the TLS connection, to obtain the | |||
NOTIFY request body containing the profile data. Because the device | public key to use to S/MIME encode the NOTIFY request body containing | |||
verified that it has a direct TLS connection by verifying the | the profile data. Because the device verified that it has a direct | |||
server's certificate and the server verified the identity of the | TLS connection by verifying the server's certificate and the server | |||
device using Digest Authentication, the server can assume the | verified the identity of the device using Digest Authentication, the | |||
certficate provided by the device is authenticated. The use of | server can assume the certificate provided by the device is | |||
S/MIME in the NOTIFY request does not relieve the need to | authenticated. The use of S/MIME in the NOTIFY request does not | |||
authenticate the SUBSCRIBE request using SIP Digest authentication. | relieve the need to authenticate the SUBSCRIBE request using SIP | |||
In this scenario S/MIME only provides message integrity and | Digest authentication. In this scenario S/MIME only provides message | |||
confidentiality of the content of the profile. If S/MIME is not used | integrity and confidentiality of the content of the profile. If | |||
for the profile data in the NOTIFY request, the notifier MUST use the | S/MIME is not used for the profile data in the NOTIFY request, the | |||
same direct TLS connection established by the device for the | notifier MUST use the same direct TLS connection established by the | |||
SUBSCRIBE request to send the notification. In this scenario the use | device for the SUBSCRIBE request to send the notification. In this | |||
of a user-specific ID and secret for Digest Authentication can be | scenario the use of a user-specific ID and secret for Digest | |||
used to establish an association between the user ID and the device | Authentication can be used to establish an association between the | |||
ID provided in the device profile SUBSCRIBE request. | user ID and the device ID provided in the device profile SUBSCRIBE | |||
request. | ||||
10.2. Confidential Profile Content via Content Indirection | 10.2. Confidential Profile Content via Content Indirection | |||
When the profile data is delivered via content indirection, | When the profile data is delivered via content indirection, | |||
authentication, integrity, confidentiality are all provided in the | authentication, integrity, confidentiality are all provided in the | |||
profile indirection retrieval scheme. When content indirection is | profile indirection retrieval scheme. When content indirection is | |||
used, the SUBSCRIBE request does not need to be authenticated. There | used, the SUBSCRIBE request does not need to be authenticated. There | |||
is a TLS certificate approach and a Digest Authentication approach | is a TLS certificate approach and a Digest Authentication approach | |||
which may be used to provide the required security. The profile | which may be used to provide the required security. The profile | |||
delivery server MUST support both of these methods. The device MUST | delivery server MUST support both of these methods. The device MUST | |||
support the Digest Authentication method to provide minimal | support the Digest Authentication method to provide minimal | |||
interoperablity. | interoperability. | |||
For the TLS certificate approach, the device requests the profile | For the TLS certificate approach, the device requests the profile | |||
using HTTPS. To provide authentication, the server challenges the | using HTTPS. To provide authentication, the server challenges the | |||
device for its certificate. The server obtains the user part of the | device for its certificate. The server obtains the user part of the | |||
SIP URI in the Subject Alternative Name field of the device's | SIP URI in the Subject Alternative Name field of the device's | |||
certificate. The user part of the SIP URI in the device's | certificate. The user part of the SIP URI in the device's | |||
certificate is used as the device ID to authenticate if the device is | certificate is used as the device ID to authenticate if the device is | |||
authorized to retieive the specified profile. The device | authorized to retrieve the specified profile. The device | |||
certificates chain of authorities MUST also be verified. This | certificates chain of authorities MUST also be verified. This | |||
approach for providing security requires that the device ID and | approach for providing security requires that the device ID and | |||
associated user are provisioned to the content indirection retreival. | associated user are provisioned for authentication as part of the | |||
content indirection retrieval. | ||||
For the Digest Authentication approach, HTTPS SHOULD be used to | For the Digest Authentication approach, HTTPS SHOULD be used to | |||
provide confidentiality of the profile data. HTTP Digest | provide confidentiality of the profile data. HTTP Digest | |||
Authentication [RFC2617] MUST be used to authenticate and authorize | Authentication [RFC2617] MUST be used to authenticate and authorize | |||
the device to retrieve the profile. The shared secret used in the | the device to retrieve the profile. The shared secret used in the | |||
Digest Authentication is provided through out of band means to the | Digest Authentication is provided through out of band means to the | |||
device or user of the device. The same credentials used for SIP | device or user of the device. The same credentials used for SIP | |||
Digest authentication (e.g. authenication of SIP SUBSCRIBE and | Digest authentication (e.g. authentication of SIP SUBSCRIBE and | |||
REGISTER requests) are used in the HTTPS request. Other URI schemes | REGISTER requests) are used in the HTTPS request. Other URI schemes | |||
may be used, but are not defined in this document. A non-replayable | may be used, but are not defined in this document. A non-replayable | |||
authentication mechanism such as Digest authentication MUST be used | authentication mechanism such as Digest authentication MUST be used | |||
for the content indirection URI scheme which provides the profile | for the content indirection URI scheme which provides the profile | |||
data (e.g. LDAP, HTTP and HTTPS all support Digest authentication). | data (e.g. LDAP, HTTP and HTTPS all support Digest authentication). | |||
URI schemes which provide no authentication or only clear-text | URI schemes which provide no authentication or only clear-text | |||
authentication SHOULD NOT be used for profile delivery as they are | authentication SHOULD NOT be used for profile delivery as they are | |||
vulnerable to replay attacks (e.g. TFTP does not provide | vulnerable to replay attacks (e.g. TFTP does not provide | |||
authentication). | authentication). | |||
Without a suitable authentication mechanism, the content | Without a suitable authentication mechanism, the content | |||
indirection profile delivery URI scheme is susceptible to replay | indirection profile delivery URI scheme is susceptible to replay | |||
attacks. Even if the profile is symmetrically encrypted, if it | attacks. Even if the profile is symmetrically encrypted, if it | |||
can be retrieved through a replay attack, the encrypted profile | can be retrieved through a replay attack, the encrypted profile | |||
can be used for offline attacks to crack the encryption key. | can be used for offline attacks to crack the encryption key. | |||
The profile delivery scheme MUST use channel security such as TLS | The profile delivery scheme MUST use channel security such as TLS | |||
(e.g. HTTPS) to protect the content from being snooped in transport | (e.g. HTTPS) to protect the content from being snooped in transport | |||
to the user agent. Mutual authentication using the client and server | to the user agent. Mutual authentication using the client and server | |||
certificates MAY be used to verify the authenticity of the user or | certificates MAY be used to verify the authenticity of the user or | |||
skipping to change at page 34, line 15 | skipping to change at page 36, line 21 | |||
11. Acknowledgements | 11. Acknowledgements | |||
Many thanks to those who contributed and commented on the many | Many thanks to those who contributed and commented on the many | |||
iterations of this document. Detailed input was provided by Jonathan | iterations of this document. Detailed input was provided by Jonathan | |||
Rosenberg from Cisco, Henning Schulzrinne from Columbia University, | Rosenberg from Cisco, Henning Schulzrinne from Columbia University, | |||
Cullen Jennings from Cisco, Rohan Mahy from Plantronics, Rich Schaaf | Cullen Jennings from Cisco, Rohan Mahy from Plantronics, Rich Schaaf | |||
from Pingtel, Volker Hilt from Bell Labs, Adam Roach of Estacado | from Pingtel, Volker Hilt from Bell Labs, Adam Roach of Estacado | |||
Systems, Hisham Khartabil from Telio, Henry Sinnreich from MCI, | Systems, Hisham Khartabil from Telio, Henry Sinnreich from MCI, | |||
Martin Dolly from AT&T Labs, John Elwell from Siemens, Elliot Eichen | Martin Dolly from AT&T Labs, John Elwell from Siemens, Elliot Eichen | |||
and Robert Liao from Verizon, Dale Worley from Pingtel, Francois | and Robert Liao from Verizon, Dale Worley from Pingtel, Francois | |||
Audet from Nortel. | Audet from Nortel, Roni Even from Polycom, Jason Fischl from | |||
Counterpath. | ||||
12. Change History | 12. Change History | |||
[[RFC Editor: Please remove this entire section upon publication as | [[RFC Editor: Please remove this entire section upon publication as | |||
an RFC.]] | an RFC.]] | |||
12.1. Changes from draft-ietf-sipping-config-framework-07.txt | 12.1. Changes from draft-ietf-sipping-config-framework-08.txt | |||
The request URI for profile-type=localnet now SHOULD not have a | ||||
user part to make routing easier. The From field SHOULD now | ||||
contain the device id so that device tracking can still be done. | ||||
Described the concept of profile-type as a filter and added | ||||
normative text requiring 404 for profile types not provided. | ||||
Moved "application" profile type to | ||||
draft-ietf-sipping-xcap-config-01. The "application" value for | ||||
the profile-type parameter will also be used as a requirement that | ||||
XCAP be supported. | ||||
Fixed text on certificate validation. | ||||
Added new HTTP header: Event to IANA section and clean up the IANA | ||||
section. | ||||
Added diagram for service provider use case schenario. | ||||
Added clarification for HTTP Event header. | ||||
Added clarification of subscriber handling of NOTIFY with no body. | ||||
12.2. Changes from draft-ietf-sipping-config-framework-07.txt | ||||
Made XCAP informative reference. Removed "document" and "auid" | Made XCAP informative reference. Removed "document" and "auid" | |||
event header parameters, and Usage of XCAP section to be put in | event header parameters, and Usage of XCAP section to be put in | |||
separate supplementary draft. | separate supplementary draft. | |||
Fixed ABNF for network-user to be addr-spec only (not name-addr) | Fixed ABNF for network-user to be addr-spec only (not name-addr) | |||
and to be quoted as well. | and to be quoted as well. | |||
Syncronized with XCAP path terminology. Removed XCAP path | Synchronized with XCAP path terminology. Removed XCAP path | |||
definition as it is already defined in XCAP. | definition as it is already defined in XCAP. | |||
User agent instance ID is now defined in output (not GRUU). | User agent instance ID is now defined in output (not GRUU). | |||
Clarified the rational for the network-user parameter. | Clarified the rational for the network-user parameter. | |||
Added text to suggest URIs for To and From fields. | Added text to suggest URIs for To and From fields. | |||
Clearified use of network-user parameter. | Clarified use of network-user parameter. | |||
Allow the use of the auid and document parameters per request by | Allow the use of the auid and document parameters per request by | |||
the OMA. | the OMA. | |||
12.2. Changes from draft-ietf-sipping-config-framework-06.txt | 12.3. Changes from draft-ietf-sipping-config-framework-06.txt | |||
Restructured the introduction and overview section to be more | Restructured the introduction and overview section to be more | |||
consistent with other Internet-Drafts. | consistent with other Internet-Drafts. | |||
Added additional clarifcation for the Digest Authentication and | Added additional clarification for the Digest Authentication and | |||
Certificate based authentication cases in the security section. | Certificate based authentication cases in the security section. | |||
Added two use case scenarios with cross referencing to better | Added two use case scenarios with cross referencing to better | |||
illustrate how the framework works. Added better cross | illustrate how the framework works. Added better cross | |||
referencing in the overview section to help readers find where | referencing in the overview section to help readers find where | |||
concepts and functionality is defined in the document. | concepts and functionality is defined in the document. | |||
Clarified the section on the use of XCAP. Changed the Event | Clarified the section on the use of XCAP. Changed the Event | |||
parameter "App-Id" to "auid". Made "auid" mutually exclusive to | parameter "App-Id" to "auid". Made "auid" mutually exclusive to | |||
"document". "auid" is now only used with XCAP. | "document". "auid" is now only used with XCAP. | |||
Local network subscription URI changed to <device-id>@ | Local network subscription URI changed to <device-id>@ | |||
<local-network> (was anonymous@<local-network>). Having a | <local-network> (was anonymous@<local-network>). Having a | |||
different request URI for each device allows the network | different request URI for each device allows the network | |||
management to track user agents and potentially manage bandwidth, | management to track user agents and potentially manage bandwidth, | |||
port allocation, etc. | port allocation, etc. | |||
Changed event package name from sip-profile to ua-profile per | Changed event package name from sip-profile to ua-profile per | |||
discussion on the list and last IETF meeting. | discussion on the list and last IETF meeting. | |||
Changed "local" profile type token to "local-network" per | Changed "local" profile type token to "local-network" per | |||
discussion on the list and last IETF meeting. | discussion on the list and last IETF meeting. | |||
Simplified "Vendor", "Model", "Version" event header parameters to | Simplified "Vendor", "Model", "Version" event header parameters to | |||
skipping to change at page 35, line 21 | skipping to change at page 37, line 47 | |||
discussion on the list and last IETF meeting. | discussion on the list and last IETF meeting. | |||
Changed "local" profile type token to "local-network" per | Changed "local" profile type token to "local-network" per | |||
discussion on the list and last IETF meeting. | discussion on the list and last IETF meeting. | |||
Simplified "Vendor", "Model", "Version" event header parameters to | Simplified "Vendor", "Model", "Version" event header parameters to | |||
allow only quoted string values (previously allowed token as | allow only quoted string values (previously allowed token as | |||
well). | well). | |||
Clarified use of the term cache. | Clarified use of the term cache. | |||
Added references for ABNF constructs. | Added references for ABNF constructs. | |||
Numerous editorial changes. Thanks Dale! | Numerous editorial changes. Thanks Dale! | |||
12.3. Changes from draft-ietf-sipping-config-framework-05.txt | 12.4. Changes from draft-ietf-sipping-config-framework-05.txt | |||
Made HTTP and HTTPS profile transport schemes mandatory in the | Made HTTP and HTTPS profile transport schemes mandatory in the | |||
profile delivery server. The subscribing device must implement | profile delivery server. The subscribing device must implement | |||
HTTP or HTTPS as the profile transport scheme. | HTTP or HTTPS as the profile transport scheme. | |||
Rewrote the security considerations section. | Rewrote the security considerations section. | |||
Divided references into Normative and Informative. | Divided references into Normative and Informative. | |||
Minor edits throughout. | Minor edits throughout. | |||
12.4. Changes from draft-ietf-sipping-config-framework-04.txt | 12.5. Changes from draft-ietf-sipping-config-framework-04.txt | |||
Clarified usage of instance-id | Clarified usage of instance-id | |||
Specify which event header parameters are mandatory or optional | Specify which event header parameters are mandatory or optional | |||
and in which messages. | and in which messages. | |||
Included complete list of event header parameters in parameter | Included complete list of event header parameters in parameter | |||
overview and IANA sections. | overview and IANA sections. | |||
Removed TFTP reference as protocol for profile transport. | Removed TFTP reference as protocol for profile transport. | |||
Added examples for discovery. | Added examples for discovery. | |||
Added ABNF for all event header parameters. | Added ABNF for all event header parameters. | |||
Changed profile-name parameter back to profile-type. This was | Changed profile-name parameter back to profile-type. This was | |||
skipping to change at page 36, line 5 | skipping to change at page 38, line 31 | |||
either a token or a path. Now that the path is contained in the | either a token or a path. Now that the path is contained in the | |||
separate parameter: "document", profile-type make more sense as | separate parameter: "document", profile-type make more sense as | |||
the parameter name. | the parameter name. | |||
Fixed some statements that should have and should not have been | Fixed some statements that should have and should not have been | |||
normative. | normative. | |||
Added the ability for the user agent to request that the default | Added the ability for the user agent to request that the default | |||
user associated with the device be set/changed using the "network- | user associated with the device be set/changed using the "network- | |||
user" parameter. | user" parameter. | |||
A bunch of editorial nits and fixes. | A bunch of editorial nits and fixes. | |||
12.5. Changes from draft-ietf-sipping-config-framework-03.txt | 12.6. Changes from draft-ietf-sipping-config-framework-03.txt | |||
Incorporated changes to better support the requirements for the use | Incorporated changes to better support the requirements for the use | |||
of this event package with XCAP and SIMPLE so that we can have one | of this event package with XCAP and SIMPLE so that we can have one | |||
package (i.e. simple-xcap-diff now defines a content type not a | package (i.e. simple-xcap-diff now defines a content type not a | |||
package). Added an additional profile type: "application". Added | package). Added an additional profile type: "application". Added | |||
document and app-id Event header parameters in support of the | document and app-id Event header parameters in support of the | |||
application profile. Define a loose high level data model or | application profile. Define a loose high level data model or | |||
relationship between the four profile types. Tried to edit and fix | relationship between the four profile types. Tried to edit and fix | |||
the confusing and ambiguous sections related to URI formation and | the confusing and ambiguous sections related to URI formation and | |||
discovery for the different profile types. Better describe the | discovery for the different profile types. Better describe the | |||
importance of uniqueness for the instance id which is used in the | importance of uniqueness for the instance id which is used in the | |||
user part of the device URI. | user part of the device URI. | |||
12.6. Changes from draft-ietf-sipping-config-framework-02.txt | 12.7. Changes from draft-ietf-sipping-config-framework-02.txt | |||
Added the concept of the local network as a source of profile data. | Added the concept of the local network as a source of profile data. | |||
There are now three separate logical sources for profile data: user, | There are now three separate logical sources for profile data: user, | |||
device and local network. Each of these requires a separate | device and local network. Each of these requires a separate | |||
subscription to obtain. | subscription to obtain. | |||
12.7. Changes from draft-ietf-sipping-config-framework-01.txt | 12.8. Changes from draft-ietf-sipping-config-framework-01.txt | |||
Changed the name of the profile-type event parameter to profile-name. | Changed the name of the profile-type event parameter to profile-name. | |||
Also allow the profile-name parameter to be either a token or an | Also allow the profile-name parameter to be either a token or an | |||
explicit URI. | explicit URI. | |||
Allow content indirection to be optional. Clarified the use of the | Allow content indirection to be optional. Clarified the use of the | |||
Accept header to indicate how the profile is to be delivered. | Accept header to indicate how the profile is to be delivered. | |||
Added some content to the Iana section. | Added some content to the Iana section. | |||
12.8. Changes from draft-ietf-sipping-config-framework-00.txt | 12.9. Changes from draft-ietf-sipping-config-framework-00.txt | |||
This version of the document was entirely restructured and re-written | This version of the document was entirely restructured and re-written | |||
from the previous version as it had been micro edited too much. | from the previous version as it had been micro edited too much. | |||
All of the aspects of defining the event package are now organized in | All of the aspects of defining the event package are now organized in | |||
one section and is believed to be complete and up to date with | one section and is believed to be complete and up to date with | |||
[RFC3265]. | [RFC3265]. | |||
The URI used to subscribe to the event package is now either the user | The URI used to subscribe to the event package is now either the user | |||
or device address or record. | or device address or record. | |||
skipping to change at page 37, line 10 | skipping to change at page 39, line 38 | |||
The user agent information (vendor, model, MAC and serial number) are | The user agent information (vendor, model, MAC and serial number) are | |||
now provided as event header parameters. | now provided as event header parameters. | |||
Added a mechanism to force profile changes to be make effective by | Added a mechanism to force profile changes to be make effective by | |||
the user agent in a specified maximum period of time. | the user agent in a specified maximum period of time. | |||
Changed the name of the event package from sip-config to ua-profile | Changed the name of the event package from sip-config to ua-profile | |||
Three high level security approaches are now specified. | Three high level security approaches are now specified. | |||
12.9. Changes from draft-petrie-sipping-config-framework-00.txt | 12.10. Changes from draft-petrie-sipping-config-framework-00.txt | |||
Changed name to reflect SIPPING work group item | Changed name to reflect SIPPING work group item | |||
Synchronized with changes to SIP DHCP [RFC3361], SIP [RFC3261] and | Synchronized with changes to SIP DHCP [RFC3361], SIP [RFC3261] and | |||
[RFC3263], SIP Events [RFC3265] and content indirection [I-D.ietf- | [RFC3263], SIP Events [RFC3265] and content indirection [I-D.ietf- | |||
sip-content-indirect-mech] | sip-content-indirect-mech] | |||
Moved the device identity parameters from the From field parameters | Moved the device identity parameters from the From field parameters | |||
to User-Agent header parameters. | to User-Agent header parameters. | |||
Many thanks to Rich Schaaf of Pingtel, Cullen Jennings of Cisco and | Many thanks to Rich Schaaf of Pingtel, Cullen Jennings of Cisco and | |||
Adam Roach of Estacado Systems for the great comments and input. | Adam Roach of Estacado Systems for the great comments and input. | |||
12.10. Changes from draft-petrie-sip-config-framework-01.txt | 12.11. Changes from draft-petrie-sip-config-framework-01.txt | |||
Changed the name as this belongs in the SIPPING work group. | Changed the name as this belongs in the SIPPING work group. | |||
Minor edits | Minor edits | |||
12.11. Changes from draft-petrie-sip-config-framework-00.txt | 12.12. Changes from draft-petrie-sip-config-framework-00.txt | |||
Split the enrollment into a single SUBSCRIBE dialog for each profile. | Split the enrollment into a single SUBSCRIBE dialog for each profile. | |||
The 00 draft sent a single SUBSCRIBE listing all of the desired. | The 00 draft sent a single SUBSCRIBE listing all of the desired. | |||
These have been split so that each enrollment can be routed | These have been split so that each enrollment can be routed | |||
differently. As there is a concept of device specific and user | differently. As there is a concept of device specific and user | |||
specific profiles, these may also be managed on separate servers. | specific profiles, these may also be managed on separate servers. | |||
For instance in a roaming situation the device might get its profile | For instance in a nomadic situation the device might get its profile | |||
data from a local server which knows the LAN specific profile data. | data from a local server which knows the LAN specific profile data. | |||
At the same time the user specific profiles might come from the | At the same time the user specific profiles might come from the | |||
user's home environment profile delivery server. | user's home environment profile delivery server. | |||
Removed the Config-Expires header as it is largely superfluous with | Removed the Config-Expires header as it is largely superfluous with | |||
the SUBSCRIBE Expires header. | the SUBSCRIBE Expires header. | |||
Eliminated some of the complexity in the discovery mechanism. | Eliminated some of the complexity in the discovery mechanism. | |||
Suggest caching information discovered about a profile delivery | Suggest caching information discovered about a profile delivery | |||
skipping to change at page 39, line 21 | skipping to change at page 41, line 50 | |||
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally | |||
Unique IDentifier (UUID) URN Namespace", RFC 4122, | Unique IDentifier (UUID) URN Namespace", RFC 4122, | |||
July 2005. | July 2005. | |||
13.2. Informative References | 13.2. Informative References | |||
[I-D.ietf-simple-xcap] | [I-D.ietf-simple-xcap] | |||
Rosenberg, J., "The Extensible Markup Language (XML) | Rosenberg, J., "The Extensible Markup Language (XML) | |||
Configuration Access Protocol (XCAP)", | Configuration Access Protocol (XCAP)", | |||
draft-ietf-simple-xcap-08 (work in progress), | draft-ietf-simple-xcap-11 (work in progress), May 2006. | |||
October 2005. | ||||
[I-D.ietf-simple-xcap-diff] | [I-D.ietf-simple-xcap-diff] | |||
Rosenberg, J., "An Extensible Markup Language (XML) | Rosenberg, J., "An Extensible Markup Language (XML) | |||
Document Format for Indicating A Change in XML | Document Format for Indicating A Change in XML | |||
Configuration Access Protocol (XCAP) Resources", | Configuration Access Protocol (XCAP) Resources", | |||
draft-ietf-simple-xcap-diff-02 (work in progress), | draft-ietf-simple-xcap-diff-03 (work in progress), | |||
October 2005. | October 2006. | |||
[I-D.ietf-simple-xcap-list-usage] | ||||
Rosenberg, J., "Extensible Markup Language (XML) Formats | ||||
for Representing Resource Lists", | ||||
draft-ietf-simple-xcap-list-usage-05 (work in progress), | ||||
February 2005. | ||||
[I-D.ietf-sip-outbound] | [I-D.ietf-sip-outbound] | |||
Jennings, C. and R. Mahy, "Managing Client Initiated | Jennings, C. and R. Mahy, "Managing Client Initiated | |||
Connections in the Session Initiation Protocol (SIP)", | Connections in the Session Initiation Protocol (SIP)", | |||
draft-ietf-sip-outbound-01 (work in progress), | draft-ietf-sip-outbound-04 (work in progress), June 2006. | |||
October 2005. | ||||
[I-D.ietf-sipping-ua-prof-framewk-reqs] | [I-D.ietf-sipping-ua-prof-framewk-reqs] | |||
Petrie, D. and C. Jennings, "Requirements for SIP User | Petrie, D. and C. Jennings, "Requirements for SIP User | |||
Agent Profile Delivery Framework", | Agent Profile Delivery Framework", | |||
draft-ietf-sipping-ua-prof-framewk-reqs-00 (work in | draft-ietf-sipping-ua-prof-framewk-reqs-00 (work in | |||
progress), March 2003. | progress), March 2003. | |||
[I-D.petrie-sipping-profile-datasets] | [I-D.petrie-sipping-profile-datasets] | |||
Petrie, D., "A Schema and Guidelines for Defining Session | Petrie, D., "A Schema and Guidelines for Defining Session | |||
Initiation Protocol User Agent Profile Data Sets", | Initiation Protocol User Agent Profile Data Sets", | |||
skipping to change at page 40, line 31 | skipping to change at page 43, line 4 | |||
[RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifiers (URI): Generic Syntax", RFC 2396, | Resource Identifiers (URI): Generic Syntax", RFC 2396, | |||
August 1998. | August 1998. | |||
[RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access | [RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access | |||
Protocol (v3): Technical Specification", RFC 3377, | Protocol (v3): Technical Specification", RFC 3377, | |||
September 2002. | September 2002. | |||
[W3C.REC-xml-names11-20040204] | [W3C.REC-xml-names11-20040204] | |||
Tobin, R., Hollander, D., Layman, A., and T. Bray, | Hollander, D., Tobin, R., Bray, T., and A. Layman, | |||
"Namespaces in XML 1.1", W3C REC REC-xml-names11-20040204, | "Namespaces in XML 1.1", World Wide Web Consortium | |||
February 2004. | FirstEdition REC-xml-names11-20040204, February 2004, | |||
<http://www.w3.org/TR/2004/REC-xml-names11-20040204>. | ||||
Author's Address | Author's Address | |||
Daniel Petrie | Daniel Petrie | |||
SIPez LLC. | SIPez LLC. | |||
34 Robbins Rd | 34 Robbins Rd | |||
Arlington, MA 02476 | Arlington, MA 02476 | |||
US | US | |||
Phone: "+1 617 273 4000 | Phone: "+1 617 273 4000 | |||
End of changes. 135 change blocks. | ||||
440 lines changed or deleted | 560 lines changed or added | |||
This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |