Internet DRAFT - draft-desruisseaux-ischedule
draft-desruisseaux-ischedule
Network Working Group C. Daboo
Internet-Draft Apple
Updates: 4871 (if approved) B. Desruisseaux
Intended status: Standards Track Oracle
Expires: September 9, 2010 March 8, 2010
Internet Calendar Scheduling Protocol (iSchedule)
draft-desruisseaux-ischedule-01
Abstract
This document defines the Internet Calendar Scheduling Protocol
(iSchedule), which is a binding from the iCalendar Transport-
independent Interoperability Protocol (iTIP) to the Hypertext
Transfer Protocol (HTTP) to enable interoperability between
calendaring and scheduling systems over the Internet.
Status of This Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 9, 2010.
Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
Daboo & Desruisseaux Expires September 9, 2010 [Page 1]
Internet-Draft iSchedule March 2010
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Motivations . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Related Memos . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Notational Conventions . . . . . . . . . . . . . . . . . . 5
2. iSchedule Model . . . . . . . . . . . . . . . . . . . . . . . 6
3. iSchedule Intermediaries . . . . . . . . . . . . . . . . . . . 7
4. iSchedule Receiver Discovery . . . . . . . . . . . . . . . . . 7
4.1. iSchedule SRV Service Types . . . . . . . . . . . . . . . 7
4.2. iSchedule Receiver Request-URI . . . . . . . . . . . . . . 8
4.3. Resolving Calendar User Addresses . . . . . . . . . . . . 8
4.4. Using the SRV Record Result . . . . . . . . . . . . . . . 9
5. iSchedule Receiver Capabilities . . . . . . . . . . . . . . . 9
5.1. Example: Querying iSchedule Receiver Capabilities . . . . 9
6. Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.1. POST Method . . . . . . . . . . . . . . . . . . . . . . . 11
6.1.1. Schedule Response . . . . . . . . . . . . . . . . . . 12
6.1.2. Status Codes for use with the POST method . . . . . . 13
7. iSchedule Domain-Level Authentication . . . . . . . . . . . . 13
7.1. Signature Content . . . . . . . . . . . . . . . . . . . . 13
7.2. Canonicalization . . . . . . . . . . . . . . . . . . . . . 14
7.2.1. The "simple-http" Header Canonicalization Algorithm . 14
7.2.2. The "simple-http" Body Canonicalization Algorithm . . 14
7.3. Key Management . . . . . . . . . . . . . . . . . . . . . . 14
7.4. Delegation of Signing Authority . . . . . . . . . . . . . 15
7.4.1. Publication of Procuration Record . . . . . . . . . . 15
7.4.2. Procuration Lookup Procedure . . . . . . . . . . . . . 15
8. HTTP Headers . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.1. DKIM-Signature Request Header . . . . . . . . . . . . . . 16
8.2. iSchedule-Version General Header . . . . . . . . . . . . . 16
8.3. iSchedule-Via General Header . . . . . . . . . . . . . . . 16
8.4. Originator Request Header . . . . . . . . . . . . . . . . 17
8.5. Recipient Request Header . . . . . . . . . . . . . . . . . 17
9. XML Element Definitions . . . . . . . . . . . . . . . . . . . 17
9.1. schedule-response XML Element . . . . . . . . . . . . . . 17
9.1.1. response XML Element . . . . . . . . . . . . . . . . . 18
9.1.1.1. recipient XML Element . . . . . . . . . . . . . . 18
9.1.1.2. request-status XML Element . . . . . . . . . . . . 18
9.1.1.3. calendar-data XML Element . . . . . . . . . . . . 19
Daboo & Desruisseaux Expires September 9, 2010 [Page 2]
Internet-Draft iSchedule March 2010
9.1.1.4. error XML Element . . . . . . . . . . . . . . . . 19
9.1.1.5. responsedescription XML Element . . . . . . . . . 19
9.2. query-result XML Element . . . . . . . . . . . . . . . . . 20
9.2.1. capability-set XML Element . . . . . . . . . . . . . . 20
9.2.1.1. supported-version-set XML Element . . . . . . . . 21
9.2.1.2. supported-scheduling-message-set XML Element . . . 21
9.2.1.3. supported-calendar-data-type XML Element . . . . . 23
9.2.1.4. supported-attachment-values XML Element . . . . . 23
9.2.1.5. supported-recipient-uri-scheme-set XML Element . . 24
9.2.1.6. max-content-length XML Element . . . . . . . . . . 25
9.2.1.7. min-date-time XML Element . . . . . . . . . . . . 25
9.2.1.8. max-date-time XML Element . . . . . . . . . . . . 26
9.2.1.9. max-instances XML Element . . . . . . . . . . . . 26
9.2.1.10. max-recipients XML Element . . . . . . . . . . . . 27
9.2.1.11. administrator XML Element . . . . . . . . . . . . 27
10. Security Considerations . . . . . . . . . . . . . . . . . . . 27
10.1. Privacy . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.2. Authentication . . . . . . . . . . . . . . . . . . . . . . 28
10.3. DNS Considerations . . . . . . . . . . . . . . . . . . . . 28
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
11.1. Namespace Registration . . . . . . . . . . . . . . . . . . 28
11.1.1. iSchedule Namespace Registration . . . . . . . . . . . 28
11.2. HTTP Headers Registration . . . . . . . . . . . . . . . . 28
11.2.1. DKIM-Signature Request Header Registration . . . . . . 28
11.2.2. iSchedule-Version General Header Registration . . . . 29
11.2.3. iSchedule-Via General Header Registration . . . . . . 29
11.2.4. Originator Request Header Registration . . . . . . . . 29
11.2.5. Recipient Request Header Registration . . . . . . . . 30
11.3. Well-Known URI Registration . . . . . . . . . . . . . . . 30
11.3.1. iSchedule Well-Known URI Registration . . . . . . . . 30
11.4. DKIM Parameters Registration . . . . . . . . . . . . . . . 30
11.4.1. DKIM-Signature Canonicalization Algorithm
Registration . . . . . . . . . . . . . . . . . . . . . 30
11.4.2. DKIM Service Type Registration . . . . . . . . . . . . 31
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 31
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 31
13.1. Normative References . . . . . . . . . . . . . . . . . . . 31
13.2. Informative References . . . . . . . . . . . . . . . . . . 33
Appendix A. Example Scheduling Transactions . . . . . . . . . . . 34
A.1. Example: Simple Meeting Invitation . . . . . . . . . . . . 34
A.2. Example: Search for Busy Time Information . . . . . . . . 36
A.3. Example: Simple Task Assignment . . . . . . . . . . . . . 38
Appendix B. Open Issues . . . . . . . . . . . . . . . . . . . . . 40
Appendix C. Change Log (to be removed by RFC Editor prior to
publication) . . . . . . . . . . . . . . . . . . . . 40
C.1. Changes in -01 . . . . . . . . . . . . . . . . . . . . . . 41
Daboo & Desruisseaux Expires September 9, 2010 [Page 3]
Internet-Draft iSchedule March 2010
1. Introduction
This binding document provides the transport specific information
necessary to convey iCalendar Transport-independent Interoperability
Protocol (iTIP) [RFC5546] messages over the Hypertext Transfer
Protocol (HTTP) [RFC2616].
The Internet Calendar Scheduling Protocol (iSchedule) enables
interoperability between different calendaring and scheduling
systems. Calendaring and scheduling systems that provide support for
iSchedule allow their users to perform scheduling transactions such
as schedule, reschedule, respond to scheduling request or cancel
scheduled calendar components, as well as search for busy time
information with users of other calendaring and scheduling systems on
the Internet.
iSchedule leverages the DomainKeys Identified Mail (DKIM) service
[RFC4871] to provide end-to-end domain-level authentication based on
message content and transparent to end users.
Discussion of this Internet-Draft is taking place on the mailing list
<https://www.ietf.org/mailman/listinfo/ischedule>.
1.1. Motivations
The iCalendar Message-Based Interoperability Protocol (iMIP)
[I-D.ietf-calsify-rfc2447bis], has proven to be insufficient to allow
users to seamlessly perform the same scheduling operations with users
of other calendaring and scheduling systems on the Internet as with
users of their own system. This section clarifies the motivations
for a binding from the iCalendar Transport-independent
Interoperability Protocol (iTIP) [RFC5546] to a transport that allows
synchronous end-to-end connectivity.
A binding to an email-based transport is clearly inadequate to search
for busy time information since users need and expect to get an
immediate response. As such, some calendaring and scheduling systems
allow users to publish their free busy information in a resource
accessible to others on the Internet. In the absence of a
standardized mechanism to locate the resource that provides the free
busy information of a user, one thus needs to know the location of
this resource in addition to the calendar user address of the users
one wish to schedule with.
With an email-based transport, the transparent processing of incoming
scheduling messages on the server is only possible when the
calendaring and scheduling system is integrated with the email
system. Commonly, the processing of incoming scheduling messages
Daboo & Desruisseaux Expires September 9, 2010 [Page 4]
Internet-Draft iSchedule March 2010
occurs on the client instead and requires user intervention, which
yield the following consequences:
1. The processing of incoming scheduling messages and the
corresponding updates to the calendar only occurs when the client
is active. As such, free busy information may be inaccurate
(e.g., user still appears busy when the organizer actually
rescheduled or canceled the meeting).
2. Calendaring and scheduling systems generally restrain the number
of updates sent to users to reduce the number of messages that
will clutter their email inbox. As a result, attendees rarely
obtain up to date participation status of other attendees.
3. The client becomes responsible for verification of the
authenticity and integrity of the scheduling message.
1.2. Related Memos
Implementers will need to be familiar with other documents that,
along with this document, form a framework for Internet calendaring
and scheduling standards.
This document specifies a binding from iTIP to HTTP.
o iCalendar [RFC5545] specifies a core specification of objects,
data types, properties and property parameters;
o iTIP [RFC5546] specifies an interoperability protocol for
scheduling between different implementations.
Furthermore, implementers will need to be familiar with the
DomainKeys Identified Mail (DKIM) service defined in [RFC4871]. An
overview of DKIM can be found in [RFC5585].
This document does not attempt to repeat the specification of
concepts or definitions from these other documents. Where possible,
references are made to the document that provides the specification
of these concepts or definitions.
1.3. Notational Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
The Augmented BNF (ABNF) syntax used by this document to describe
protocol elements is defined in [RFC5234].
Daboo & Desruisseaux Expires September 9, 2010 [Page 5]
Internet-Draft iSchedule March 2010
Definitions of XML elements in this document use XML element type
declarations (as found in XML Document Type Declarations), described
in Section 3.2 of [W3C.REC-xml-20081126].
The namespace "urn:ietf:params:xml:ns:ischedule" is reserved for the
XML elements defined in this specification, or in other Standards
Track IETF RFCs written to extend iSchedule. It MUST NOT be used for
proprietary extensions.
Note that the XML declarations used in this document are incomplete,
in that they do not include namespace information. Thus, the reader
MUST NOT use these declarations as the only way to validate iSchedule
XML element types.
2. iSchedule Model
The iSchedule design can be pictured as:
+----------+ +----------+ +----------+ +----------+
| Calendar | | Calendar | iSchedule | Calendar | | Calendar |
| User |-->| Service |----------->| Service |-->| Store |
| Agent | | | | | | |
+----------+ +----------+ +----------+ +----------+
iSchedule iSchedule
Sender Receiver
When an iSchedule Sender has a scheduling message to transmit, it
determines the iSchedule Receivers to which to delivers the message
to and sends the appropriate iSchedule requests. The responsability
of an iSchedule Sender is to transfer scheduling messages to one or
more iSchedule Receivers, or report its failure to do so.
The means by which a Calendar User Agent instructs a Calendar
Service, acting as an iSchedule Sender, to transmit scheduling
messages is outside the scope of this document. A Calendar Service
could provide support for a standard calendar access protocol, such
as CalDAV [RFC4791], [I-D.desruisseaux-caldav-sched] or any other
protocol, to allow a Calendar User Agent to perform scheduling
operations with users of other Calendar Services.
Likewise, the actual processing of scheduling messages received by a
Calendar Service, acting as an iSchedule Receiver, is also outside
the scope of this document. Some Calendar Service implementations
may decide to process some or all received scheduling messages, while
other implementations may decide to leave that work to Calendar User
Agent implementations.
Daboo & Desruisseaux Expires September 9, 2010 [Page 6]
Internet-Draft iSchedule March 2010
3. iSchedule Intermediaries
From the end-to-end view, an iSchedule request is sent to an
iSchedule Receiver and a response is returned to the iSchedule
Sender. In practice, this may not always be the case. An iSchedule
request may travel through several iSchedule intermediaries.
iSchedule intermediaries can be used for different purposes, namely:
o Dispatch iSchedule request to the appropriate iSchedule Receivers
for each specified Recipient; Users of the same domain could
actually be hosted on different iSchedule Receivers.
o Dispatch iSchedule request to the appropriate iSchedule Receivers
according to the calendar component type specified in the
requests. Different iSchedule Receivers could be responsible of
handling, VEVENT, VTODO, VJOURNAL and VFREEBUSY requests.
o Scan iSchedule requests, particularly attachments, for virus.
iSchedule intermediaries are REQUIRED to identify their hostname and
the version number of the preceding server from which the request or
response arrived. iSchedule intermediaries append this information to
the "iSchedule-Via" general header, in sequential order, as the
request travels between Sender and Receiver.
For example, an iSchedule request might be submitted to an iSchedule
Receiver with the following "iSchedule-Via" header:
iSchedule-Via: 1.0 ischedule.example.com:443 (VendorX/2.0),
1.0 cal.internal.example.com:80 (VendorZ/4.3)
4. iSchedule Receiver Discovery
This section describes how an iSchedule Sender can discover the host
name, the port as well as the Request-URI to use to submit a request
to an iSchedule Receiver.
4.1. iSchedule SRV Service Types
This specification adds two SRV service labels for use with
iSchedule:
Daboo & Desruisseaux Expires September 9, 2010 [Page 7]
Internet-Draft iSchedule March 2010
Identifies an iSchedule Receiver that uses HTTP without transport
layer security ([RFC2818]).
ischedules: Identifies an iSchedule Receiver that uses HTTP with
transport layer security ([RFC2818]).
Example: service record for server without transport layer security
_ischedule._tcp.example.com. IN SRV 0 1 80 ischedule.example.com.
Example: service record for server with transport layer security
_ischedules._tcp.example.com. IN SRV 0 1 443 ischedule.example.com.
4.2. iSchedule Receiver Request-URI
This specification registers a well-known URI
[I-D.nottingham-site-meta] for the iSchedule service, namely,
"ischedule" (see Section 11.3.1). iSchedule Receivers MUST support
requests targeted at this well-known URI. iSchedule Senders MUST
handle HTTP redirects on this well-known URI.
4.3. Resolving Calendar User Addresses
To deliver a scheduling message via the iSchedule protocol, an
iSchedule Sender needs to determine what iSchedule Receiver it needs
to deliver a scheduling message to for a particular Recipient. Each
Recipient's calendar user address is specified in the Recipient
request header.
A calendar user address as defined by iCalendar is simply a URI.
This is typically a mailto URI, but could potentially be any URI
type.
To get the SRV record name to query for a given mailto URI, the
"domain" portion of the mailto URI MUST be extracted and appended to
the service label "_ischedule._tcp." or "_ischedules._tcp.".
Example:
Calendar User Address: mailto:cyrus@example.com
Query SRV Record Names: _ischedules._tcp.example.com
_ischedule._tcp.example.com
Daboo & Desruisseaux Expires September 9, 2010 [Page 8]
Internet-Draft iSchedule March 2010
In cases where the "domain" portion of the mailto URI contains one or
more levels of sub-domain, clients MAY choose to remove successive
levels of "sub-domain" if queries for that sub-domain fail to return
any SRV records. For example, a mailto URI with the full domain
"host.calendar.example.com" would first trigger a querying using the
domain "host.calendar.example.com", then if that failed, the domain
"calendar.example.com" would be tried, then if that failed the domain
"example.com" would be tried.
4.4. Using the SRV Record Result
As defined in [RFC2782] the result of an SRV record lookup will be a
target host name and a port. An iSchedule Sender uses these to
contact the iSchedule Receiver. iSchedule Senders MUST honor the full
behavior of SRV records as defined by [RFC2782], in particular the
TTL, Priority and Weight options in the record, as well as handling
multiple records being returned.
Since an iSchedule server is an HTTP server, an iSchedule client
needs to supply a Request-URI in the HTTP request it makes to the
server, in addition to the host name and port information. When SRV
records are being used there is no way to specify the Request-URI in
the SRV record. As a result clients MUST use "/" as the Request-URI
for the iSchedule server identified by an SRV record.
5. iSchedule Receiver Capabilities
iSchedule Receivers supporting the features described in this
document MUST allow iSchedule Sender to query their capabilities by
accepting GET requests targeted at the Request-URI "/.well-known/
ischedule?query=capabilities". The response body for a successful
GET request targeted at this URI MUST be an XML document with query-
result as its root element.
Informative rationale: The GET method was favored over the POST
method to allow iSchedule Senders to query capabilities with
"conditional GET" requests (see Section 9.3 of [RFC2616]).
5.1. Example: Querying iSchedule Receiver Capabilities
>> Request <<
GET /.well-known/ischedule?query=capabilities HTTP/1.1
Host: cal.example.com
Daboo & Desruisseaux Expires September 9, 2010 [Page 9]
Internet-Draft iSchedule March 2010
>> Response <<
HTTP/1.1 200 OK
Date: Mon, 15 Dec 2008 09:32:12 GMT
Content-Type: application/xml; charset=utf-8
Content-Length: xxxx
iSchedule-Version: 1.0
ETag: "afasdf-132afds"
<?xml version="1.0" encoding="utf-8" ?>
<query-result xmlns="urn:ietf:params:xml:ns:ischedule">
<capability-set>
<supported-version-set>
<version>1.0</version>
</supported-version-set>
<supported-scheduling-message-set>
<comp name="VEVENT">
<method name="REQUEST"/>
<method name="ADD"/>
<method name="REPLY"/>
<method name="CANCEL"/>
</comp>
<comp name="VTODO"/>
<comp name="VFREEBUSY"/>
</supported-scheduling-message-set>
<supported-calendar-data-type>
<calendar-data-type content-type="text/calendar" version="2.0"/>
</supported-calendar-data-type>
<supported-attachment-values>
<inline-attachment/>
<external-attachment/>
</supported-attachment-values>
<supported-recipient-uri-scheme-set>
<scheme>mailto</scheme>
</supported-recipient-uri-scheme-set>
<max-content-length>102400</max-content-length>
<min-date-time>19910101T000000Z</min-date-time>
<max-date-time>20381231T000000Z</max-date-time>
<max-instances>150</max-instances>
<max-recipients>250</max-recipients>
<administrator>mailto:ischedule-admin@example.com</administrator>
</capability-set>
</query-result>
Daboo & Desruisseaux Expires September 9, 2010 [Page 10]
Internet-Draft iSchedule March 2010
6. Scheduling
This section defines how an iSchedule Sender can use the HTTP POST
method to submit a scheduling message to an iSchedule Receiver.
6.1. POST Method
The POST method submits a scheduling message to one or more
recipients by targeting the request at the Request-URI of an
iSchedule Receiver. The request body of a POST method MUST contain a
scheduling message or free-busy message (e.g., an iCalendar object
that follows the iTIP semantic).
A submitted scheduling message will be delivered to the calendar user
addresses specified in the Recipient request header. A submitted
free-busy message will be immediately executed and a free-busy
response returned.
Every POST request MUST include the iSchedule-Version request header.
Every POST request MUST include a single Originator request header
that specifies the calendar user address of the originator of the
scheduling message. The value of the Originator request header MUST
match the value of the ORGANIZER property or one of the specified
ATTENDEE property depending on the specify METHOD property value as
summarized in the following table:
+----------------+----------------------------------+
| Method | Originator Requirement |
+----------------+----------------------------------+
| PUBLISH | None |
| REQUEST | MUST match ORGANIZER or ATTENDEE |
| REPLY | MUST match ATTENDEE |
| ADD | MUST match ORGANIZER |
| CANCEL | MUST match ORGANIZER |
| REFRESH | None |
| COUNTER | MUST match ATTENDEE |
| DECLINECOUNTER | MUST match ORGANIZER |
+----------------+----------------------------------+
Every POST request MUST include one or more Recipient request
headers. The value of this header is a list of one or more calendar
user addresses and corresponds to the set of calendar users who will
have the scheduling message delivered to them.
Daboo & Desruisseaux Expires September 9, 2010 [Page 11]
Internet-Draft iSchedule March 2010
6.1.1. Schedule Response
A POST request may deliver a scheduling message to one or more
calendar users specified in the Recipient request header. Since the
behavior of each recipient may vary, it is useful to get response
status information for each recipient in the overall POST response.
This specification defines a new XML response to convey multiple
recipient status.
A response to a POST method that indicates status for one or more
recipients MUST be a schedule-response XML element. This MUST
contain one or more response elements for each recipient, with each
of those containing elements that indicate which recipient they
correspond to, the scheduling status of the request for that
recipient, any error codes and an optional description.
In the case of a free-busy request, the response elements can also
contain calendar-data elements which contain free busy information
(e.g., an iCalendar VFREEBUSY component) indicating the busy state of
the corresponding recipient, assuming that the free-busy request for
that recipient succeeded.
TODO: Define the response body for a failed request.
(supported-calendar-data-type): The resource submitted in the POST
request MUST be a supported media type (i.e. text/calendar) for
scheduling or free-busy messages;
(valid-calendar-data): The resource submitted in the POST request
MUST be valid data for the media type being specified (i.e. valid
iCalendar object);
(valid-scheduling-message): The resource submitted in the POST
request MUST obey all restrictions specified for the POST request
(e.g., the scheduling message follows the restrictions of iTIP);
(originator-specified): The POST request MUST include a valid
Originator request header specifying the calendar user address of
the originator of the scheduling message.
(recipient-specified): The POST request MUST include one or more
valid Recipient request headers specifying the calendar user
address of users to whom the scheduling message will be delivered.
(originator-reply): The calendar user identified by the Originator
request header in the POST request MUST have previously received
the scheduling message that is being replied to when the
scheduling message is an incoming scheduling message;
Daboo & Desruisseaux Expires September 9, 2010 [Page 12]
Internet-Draft iSchedule March 2010
(max-content-length): The request body submitted in the POST
request MUST have an octet size less than or equal to the value of
the max-content-length capability of the iSchedule Receiver.
6.1.2. Status Codes for use with the POST method
The following are examples of response codes one would expect to be
used for this method. Note, however, that unless explicitly
prohibited any 2/3/4/5xx series response code may be used in a
response.
200 (OK) - The command succeeded.
400 (Bad Request) - The Sender has provided an invalid scheduling
message.
403 (Forbidden) - The Sender cannot submit a scheduling message to
the specified Request-URI.
404 (Not Found) - The URL in the Request-URI was not present.
507 (Insufficient Storage) - The server did not have sufficient
space to record the scheduling message.
7. iSchedule Domain-Level Authentication
iSchedule uses and extends the mechanism defined by DomainKeys
Identified Mail (DKIM) [RFC4871]. DKIM defines a domain-level
digital signature authentication framework for email, using public-
key cryptography, with the domain name service (DNS) as its key
server technology.
The following sections describes how the DomainKeys Identified Mail
(DKIM) service can fit into a scheduling service.
7.1. Signature Content
The following HTTP headers MUST be included in the signature of a
message:
o Content-Type
o Host
o Originator
o Recipient
Daboo & Desruisseaux Expires September 9, 2010 [Page 13]
Internet-Draft iSchedule March 2010
To allow iSchedule messages to transit via HTTP intermediaries, hop-
by-hop headers, such as the following HTTP/1.1 headers MUST NOT be
included in the signature of a message:
o Connection
o Keep-Alive
o Proxy-Authenticate
o Proxy-Authorization
o TE
o Trailers
o Transfer-Encoding
o Upgrade
7.2. Canonicalization
Transformations can be applied to the message body during transit in
order to safely transfer it between the iSchedule Sender and the
iSchedule Receiver. Notably, one or more transfer-codings may be
applied to an entity.
To avoid breaking the DKIM signature of a message, the signer/
verifier MUST compute the hash of a message body against the entity-
body, that is, with no transfer-encoding applied to the message body.
7.2.1. The "simple-http" Header Canonicalization Algorithm
TODO.
7.2.2. The "simple-http" Body Canonicalization Algorithm
TODO.
7.3. Key Management
DKIM allows an Administrative Management Domain (ADMD) to constrain
the use of a key to specific service types. By default, keys are not
constrained to specific service types. As such, the same key could
be used to sign email and calendar messages.
This specification defines a new service type "calendar" to constrain
the use of a key to calendaring and scheduling services:
Daboo & Desruisseaux Expires September 9, 2010 [Page 14]
Internet-Draft iSchedule March 2010
+-----------+-------------------------------------------------------+
| Service | Description |
| Type | |
+-----------+-------------------------------------------------------+
| calendar | calendaring and scheduling service (not necessarily |
| | limited to iSchedule) |
+-----------+-------------------------------------------------------+
7.4. Delegation of Signing Authority
An Administrative Management Domain (ADMD) MAY delegate signing
authority to other ADMD by publishing a Procuration record. The DNS
is proposed as the initial mechanism for Procuration records.
7.4.1. Publication of Procuration Record
Signing Procuration records are published using the DNS TXT resource
record type.
_procuration._domainkey.aaa.example TXT "v=1.0 d=bbb.example"
TODO: Detailed record syntax specification. Clarify how an ADMD can
delegate signing authority to multiple ADMD.
7.4.2. Procuration Lookup Procedure
If the Signing Domain IDentifier (SDID) contained in the "d=" tag of
DKIM-Signature request header specifies a different domain than the
value of the Originator request header, the iSchedule Receiver MUST
provide a way to verify whether the owner of the domain of the
Originator authorize the domain specified in the SDID to sign on its
behalf.
The iSchedule Receiver MAY query DNS for a TXT record corresponding
to the Originator's domain prefixed by "_procuration._domainkey."
(note the trailing dot).
If the result of this query is a NOERROR response (rcode=0 in
[RFC1035]) with an answer that is a single record that is a valid
Procuration record, use that record, and the algorithm terminates.
If the result of the query is NXDOMAIN or NOERROR with zero records,
there is no Procuration record. If the result of the query contains
more than one record, or a record that is not a valid Procuration
record, the Procuration result is undefined.
If a query results in a "SERVFAIL" error response (rcode=2 in
[RFC1035]), the algorithm terminates without returning a result;
Daboo & Desruisseaux Expires September 9, 2010 [Page 15]
Internet-Draft iSchedule March 2010
possible actions include queuing the message or returning an
iSchedule error indicating a temporary failure.
8. HTTP Headers
This section defines the syntax and semantics of additional HTTP/1.1
header fields.
The header's syntax uses the optional whitespace (OWS) rule defined
as follows:
OWS = *( [ CRLF ] WSP )
8.1. DKIM-Signature Request Header
The DKIM-Signature request header MUST be specified by the iSchedule
Sender on all scheduling requests to specify all of the signature and
key-fetching data.
DKIM-Signature = "DKIM-Signature" ":" OWS DKIM-Signature-v
DKIM-Signature-v = tag-list
; tag-list is defined in Section 3.2 of <xref target="RFC4871"/>
8.2. iSchedule-Version General Header
The iSchedule-Version general header field MUST be specified by the
iSchedule Sender on requests, and by the iSchedule Receiver on
responses.
iSchedule-Version = "iSchedule-Version" ":" OWS
iSchedule-Version-v
iSchedule-Version-v = iSchedule-Version-elem
*( OWS "," OWS iSchedule-Version-elem )
iSchedule-Version-elem = 1*DIGIT "." 1*DIGIT
8.3. iSchedule-Via General Header
The iSchedule-Via general header field MUST be used by iSchedule
intermediaries to indicate the intermediate protocols and recipients
between the iSchedule Sender and the iSchedule Receiver on requests.
Daboo & Desruisseaux Expires September 9, 2010 [Page 16]
Internet-Draft iSchedule March 2010
iSchedule-Via = "iSchedule-Via" ":" OWS iSchedule-Via-v
iSchedule-Via-v = iSchedule-Via-elem
*( OWS "," OWS iSchedule-Via-elem )
iSchedule-Via-elem = ( received-protocol received-by [ comment ] )
; received-protocol as defined in [RFC2616]
; received-by as defined in [RFC2616]
; comment as defined in [RFC2616]
8.4. Originator Request Header
The Originator request header value is a URI which specifies the
calendar user address of the originator of the scheduling message.
Note that the absoluteURI rule is defined in [RFC3986].
Originator = "Originator" ":" OWS Originator-v
Originator-v = absoluteURI
8.5. Recipient Request Header
The Recipient request header value is a URI which specifies the
calendar user address of the recipients to which the POST method
should deliver the submitted scheduling message. Note that the
absoluteURI rule is defined in [RFC3986].
Recipient = "Recipient" ":" OWS Recipient-v
Recipient-v = Recipient-elem *( OWS "," OWS Recipient-elem )
Recipient-elem = absoluteURI
9. XML Element Definitions
TODO: Re-write XML element definitions using the RELAX NG Compact
Syntax [RELAX-NG].
9.1. schedule-response XML Element
Name: schedule-response
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Contains the set of responses for a POST method request.
Description: See Section 6.1.1.
Daboo & Desruisseaux Expires September 9, 2010 [Page 17]
Internet-Draft iSchedule March 2010
Definition:
<!ELEMENT schedule-response (response*)>
9.1.1. response XML Element
Name: response
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Contains a single response for a POST method request.
Description: See Section 6.1.1.
Definition:
<!ELEMENT response (recipient,
request-status,
calendar-data?,
error?,
responsedescription?)>
9.1.1.1. recipient XML Element
Name: recipient
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: The calendar user address (recipient header value) that the
enclosing response for a POST method request is for.
Description: See Section 6.1.1.
Definition:
<!ELEMENT recipient (#PCDATA)>
9.1.1.2. request-status XML Element
Name: request-status
Namespace: urn:ietf:params:xml:ns:ischedule
Daboo & Desruisseaux Expires September 9, 2010 [Page 18]
Internet-Draft iSchedule March 2010
Purpose: The iTIP REQUEST-STATUS property value for this response.
Description: See Section 6.1.1.
Definition:
<!ELEMENT request-status (#PCDATA)>
9.1.1.3. calendar-data XML Element
Name: calendar-data
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: An iCalendar object in a response to a seach for busy time
information.
Description: See Section 6.1.1.
Definition:
<!ELEMENT calendar-data (#PCDATA)>
9.1.1.4. error XML Element
Name: error
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Error responses sometimes need more information to indicate
what went wrong.
Description: See Section 6.1.1.
Definition:
<!ELEMENT error ANY>
9.1.1.5. responsedescription XML Element
Name: responsedescription
Daboo & Desruisseaux Expires September 9, 2010 [Page 19]
Internet-Draft iSchedule March 2010
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Contains information about a status response
Description: See Section 6.1.1.
Definition:
<!ELEMENT responsedescription (#PCDATA)>
9.2. query-result XML Element
Name: query-result
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Contains result of a query request.
Description: A generic container for the result of a query request,
such as a query of the capabilities of an iSchedule Receiver.
Definition:
<!ELEMENT query-result (capability-set)>
9.2.1. capability-set XML Element
Name: capability-set
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Contains iSchedule Receiver capabilities.
Description: The capability-set element contains capabilities of the
iSchedule Receiver.
Definition:
Daboo & Desruisseaux Expires September 9, 2010 [Page 20]
Internet-Draft iSchedule March 2010
<!ELEMENT capability-set (supported-version-set,
supported-scheduling-message-set,
supported-calendar-data-type,
supported-attachment-values,
supported-recipient-uri-scheme-set,
max-content-length,
min-date-time,
max-date-time,
max-instances,
max-recipients,
administrator) >
9.2.1.1. supported-version-set XML Element
Name: supported-version-set
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Identifies the iSchedule versions supported by the
iSchedule Receiver.
Description: An iSchedule Receiver MAY advertise support for
multiple versions of the iSchedule protocol.
Definition:
<!ELEMENT supported-version-set (version)+>
9.2.1.1.1. version XML Element
Name: version
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies an iSchedule version.
Definition:
<!ELEMENT version (#PCDATA)>
<!-- PCDATA value: version number -->
9.2.1.2. supported-scheduling-message-set XML Element
Daboo & Desruisseaux Expires September 9, 2010 [Page 21]
Internet-Draft iSchedule March 2010
Name: supported-scheduling-message-set
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Identifies the type of supported scheduling messages.
Description: An iSchedule Receiver could advertise that it only
provides support for event and free-busy scheduling messages, and
not for to-do scheduling messages, with this capabilities.
Definition:
<!ELEMENT supported-scheduling-message-set (comp)+>
9.2.1.2.1. comp XML Element
Name: comp
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Identifies a calendar component type.
Description:
Definition:
<!ELEMENT comp (method)*>
<!ATTLIST comp name CDATA #REQUIRED>
<!-- name value: a calendar component name -->
9.2.1.2.1.1. method XML Element
Name: method
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies an iCalendar method type.
Description:
Definition:
<!ELEMENT method EMPTY>
Daboo & Desruisseaux Expires September 9, 2010 [Page 22]
Internet-Draft iSchedule March 2010
<!ATTLIST method name CDATA #REQUIRED>
<!-- name value: a method type -->
9.2.1.3. supported-calendar-data-type XML Element
Name: supported-calendar-data-type
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose:
Description:
Definition:
<!ELEMENT supported-calendar-data-type (calendar-data-type)+>
9.2.1.3.1. calendar-data-type XML Element
Name: calendar-data-type
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specified a supported media type for scheduling messages.
Description:
Definition:
<!ELEMENT calendar-data-type EMPTY>
<!ATTLIST calendar-data-type content-type CDATA "text/calendar"
version CDATA "2.0">
<!-- content-type value: a MIME media type -->
<!-- version value: a version string -->
9.2.1.4. supported-attachment-values XML Element
Name: supported-attachment-values
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Identifies the attachment values supported.
Daboo & Desruisseaux Expires September 9, 2010 [Page 23]
Internet-Draft iSchedule March 2010
Description:
Definition:
<!ELEMENT supported-attachment-values (inline-attachment?,
external-attachment?)>
9.2.1.4.1. inline-attachment XML Element
Name: inline-attachment
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies inline attachment as a supported attachment
value.
Description:
Definition:
<!ELEMENT inline-attachment EMPTY>
9.2.1.4.2. external-attachment XML Element
Name: external-attachment
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies external attachment as a supported attachment
value.
Description:
Definition:
<!ELEMENT external-attachment EMPTY>
9.2.1.5. supported-recipient-uri-scheme-set XML Element
Name: supported-recipient-uri-scheme-set
Namespace: urn:ietf:params:xml:ns:ischedule
Daboo & Desruisseaux Expires September 9, 2010 [Page 24]
Internet-Draft iSchedule March 2010
Purpose: Identifies the supported URI schemes supported in the
Recipient HTTP request header.
Description:
Definition:
<!ELEMENT supported-recipient-uri-scheme-set (scheme+)>
9.2.1.5.1. scheme XML Element
Name: scheme
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies a supported URI scheme.
Description:
Definition:
<!ELEMENT scheme (#PCDATA)>
<!-- PCDATA value: URI scheme (e.g., mailto) -->
9.2.1.6. max-content-length XML Element
Name: max-content-length
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies the maximum size allowed for a scheduling message
in octets.
Description:
Definition:
<!ELEMENT max-content-length (#PCDATA)>
<!-- PCDATA value: a numeric value (positive integer) -->
9.2.1.7. min-date-time XML Element
Daboo & Desruisseaux Expires September 9, 2010 [Page 25]
Internet-Draft iSchedule March 2010
Name: min-date-time
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies a DATE-TIME value indicating the earliest date
and time in UTC that the server is willing to accept for any DATE
or DATE-TIME value in a scheduling message.
Description:
Definition:
<!ELEMENT min-date-time (#PCDATA)>
<!-- PCDATA value: an iCalendar format DATE-TIME value in UTC -->
9.2.1.8. max-date-time XML Element
Name: max-date-time
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies a DATE-TIME value indicating the latest date and
time in UTC that the server is willing to accept for any DATE or
DATE-TIME value in a scheduling message.
Description:
Definition:
<!ELEMENT max-date-time (#PCDATA)>
<!-- PCDATA value: an iCalendar format DATE-TIME value in UTC -->
9.2.1.9. max-instances XML Element
Name: max-instances
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies the maximum number of recurrence instances
allowed in a scheduling message.
Description:
Daboo & Desruisseaux Expires September 9, 2010 [Page 26]
Internet-Draft iSchedule March 2010
Definition:
<!ELEMENT max-instances (#PCDATA)>
<!-- PCDATA value: a numeric value (positive integer) -->
9.2.1.10. max-recipients XML Element
Name: max-recipients
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Specifies the maximum number of recipients allowed for a
scheduling message.
Description:
Definition:
<!ELEMENT max-recipients (#PCDATA)>
<!-- PCDATA value: a numeric value (positive integer) -->
9.2.1.11. administrator XML Element
Name: administrator
Namespace: urn:ietf:params:xml:ns:ischedule
Purpose: Provides contact information for the administrator of the
iSchedule Receiver.
Description:
Definition:
<!ELEMENT administrator (#PCDATA)>
<!-- PCDATA value: URI to contact administrator -->
10. Security Considerations
The process of scheduling involves the sending and receiving of
scheduling messages. As a result, the security problems related to
messaging in general are relevant here. In particular the
authenticity of the scheduling messages needs to be verified.
Potential attacks described in the security considerations of DKIM
Daboo & Desruisseaux Expires September 9, 2010 [Page 27]
Internet-Draft iSchedule March 2010
[RFC4871] are also applicable to iSchedule.
10.1. Privacy
iSchedule Senders and iSchedule Receivers MUST use an HTTP connection
protected with TLS [RFC5246] as defined in [RFC2818] for all
transactions.
10.2. Authentication
iSchedule uses and extends the mechanism defined by DomainKeys
Identified Mail (DKIM) [RFC4871]. DKIM defines a domain-level
digital signature authentication framework for email, using public-
key cryptography, with the domain name service as its key server
technology.
10.3. DNS Considerations
DNS security issues are addressed by DNSSEC [RFC4033].
11. IANA Considerations
11.1. Namespace Registration
This specification registers a new URN to identify a new XML
namespace as per [RFC3688].
11.1.1. iSchedule Namespace Registration
Registration request for the iSchedule namespace:
URI: urn:ietf:params:xml:ns:ischedule
Registrant Contact: See the "Authors' Addresses" section of this
document.
XML: None. Namespace URIs do not represent an XML specification.
11.2. HTTP Headers Registration
This specification registers new headers for use with HTTP as per
[RFC3864].
11.2.1. DKIM-Signature Request Header Registration
Header field name: DKIM-Signature
Applicable protocol: http
Daboo & Desruisseaux Expires September 9, 2010 [Page 28]
Internet-Draft iSchedule March 2010
Status: standard
Author/Change controller: IETF
Specification document(s): this specification
Related information: none
11.2.2. iSchedule-Version General Header Registration
Header field name: iSchedule-Version
Applicable protocol: http
Status: standard
Author/Change controller: IETF
Specification document(s): this specification
Related information: none
11.2.3. iSchedule-Via General Header Registration
Header field name: iSchedule-Via
Applicable protocol: http
Status: standard
Author/Change controller: IETF
Specification document(s): this specification
Related information: none
11.2.4. Originator Request Header Registration
Header field name: Originator
Applicable protocol: http
Status: standard
Author/Change controller: IETF
Specification document(s): this specification
Daboo & Desruisseaux Expires September 9, 2010 [Page 29]
Internet-Draft iSchedule March 2010
Related information: none
11.2.5. Recipient Request Header Registration
Header field name: Recipient
Applicable protocol: http
Status: standard
Author/Change controller: IETF
Specification document(s): this specification
Related information: none
11.3. Well-Known URI Registration
This specification registers a new well-known URI as per
[I-D.nottingham-site-meta].
11.3.1. iSchedule Well-Known URI Registration
URI suffix: ischedule
Change controller: IETF.
Specification document(s): this specification
Related information: none
11.4. DKIM Parameters Registration
11.4.1. DKIM-Signature Canonicalization Algorithm Registration
This specification registers new canonicalization algorithms for the
header and body of HTTP requests as per [RFC4871].
The following value should be added to the DKIM-Signature
Canonicalization Header registery established in Section 7.3 of
[RFC4871]:
+-------------+-----------+
| Type | Reference |
+-------------+-----------+
| simple-http | RFC XXXX |
+-------------+-----------+
Daboo & Desruisseaux Expires September 9, 2010 [Page 30]
Internet-Draft iSchedule March 2010
The following value should be added to the DKIM-Signature
Canonicalization Body registery established in Section 7.3 of
[RFC4871]:
+-------------+-----------+
| Type | Reference |
+-------------+-----------+
| simple-http | RFC XXXX |
+-------------+-----------+
11.4.2. DKIM Service Type Registration
This specification registers a new DKIM service type to specify that
a given selector MUST only be used to verify messages of calendar
services (not necessarily limited to iSchedule). The following value
should be added to the DKIM Service Type Registry established in
Section 7.7 of [RFC4871]:
+----------+-----------+
| Type | Reference |
+----------+-----------+
| calendar | RFC XXXX |
+----------+-----------+
12. Acknowledgments
The authors would like to thank the following individuals for
contributing their ideas and support for writing this specification:
Mattias Amnefelt, Mike Douglass, Tomas Hnetila, Ciny Joy, Barry
Leiba, Simon Pilette, Arnaud Quillaud, Simon Vaillancourt, and
Wilfredo Sanchez Vega.
The authors would also like to thank the Calendaring and Scheduling
Consortium for advice with this specification, and for organizing
interoperability testing events to help refine it.
13. References
13.1. Normative References
[I-D.nottingham-site-meta] Nottingham, M. and E. Hammer-Lahav,
"Defining Well-Known URIs",
draft-nottingham-site-meta-05 (work
in progress), December 2009.
[RFC1035] Mockapetris, P., "Domain names -
implementation and specification",
STD 13, RFC 1035, November 1987.
Daboo & Desruisseaux Expires September 9, 2010 [Page 31]
Internet-Draft iSchedule March 2010
[RFC2119] Bradner, S., "Key words for use in
RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119,
March 1997.
[RFC2616] Fielding, R., Gettys, J., Mogul, J.,
Frystyk, H., Masinter, L., Leach,
P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1",
RFC 2616, June 1999.
[RFC2782] Gulbrandsen, A., Vixie, P., and L.
Esibov, "A DNS RR for specifying the
location of services (DNS SRV)",
RFC 2782, February 2000.
[RFC2818] Rescorla, E., "HTTP Over TLS",
RFC 2818, May 2000.
[RFC3688] Mealling, M., "The IETF XML
Registry", BCP 81, RFC 3688,
January 2004.
[RFC3986] Berners-Lee, T., Fielding, R., and
L. Masinter, "Uniform Resource
Identifier (URI): Generic Syntax",
STD 66, RFC 3986, January 2005.
[RFC4033] Arends, R., Austein, R., Larson, M.,
Massey, D., and S. Rose, "DNS
Security Introduction and
Requirements", RFC 4033, March 2005.
[RFC4871] Allman, E., Callas, J., Delany, M.,
Libbey, M., Fenton, J., and M.
Thomas, "DomainKeys Identified Mail
(DKIM) Signatures", RFC 4871,
May 2007.
[RFC5234] Crocker, D. and P. Overell,
"Augmented BNF for Syntax
Specifications: ABNF", STD 68,
RFC 5234, January 2008.
[RFC5246] Dierks, T. and E. Rescorla, "The
Transport Layer Security (TLS)
Protocol Version 1.2", RFC 5246,
August 2008.
Daboo & Desruisseaux Expires September 9, 2010 [Page 32]
Internet-Draft iSchedule March 2010
[RFC5545] Desruisseaux, B., "Internet
Calendaring and Scheduling Core
Object Specification (iCalendar)",
RFC 5545, September 2009.
[RFC5546] Daboo, C., "iCalendar Transport-
Independent Interoperability
Protocol (iTIP)", RFC 5546,
December 2009.
[W3C.REC-xml-20081126] Maler, E., Yergeau, F., Sperberg-
McQueen, C., Paoli, J., and T. Bray,
"Extensible Markup Language (XML)
1.0 (Fifth Edition)", World Wide Web
Consortium Recommendation REC-xml-
20081126, November 2008, <http://
www.w3.org/TR/2008/
REC-xml-20081126>.
13.2. Informative References
[I-D.desruisseaux-caldav-sched] Daboo, C. and B. Desruisseaux,
"CalDAV Scheduling Extensions to
WebDAV",
draft-desruisseaux-caldav-sched-08
(work in progress), August 2009.
[I-D.ietf-calsify-rfc2447bis] Melnikov, A., "iCalendar Message-
Based Interoperability Protocol
(iMIP)",
draft-ietf-calsify-rfc2447bis-08
(work in progress), January 2010.
[RELAX-NG] Clark, J., "RELAX NG Compact
Syntax", December 2001, <http://
www.oasis-open.org/committees/
relax-ng/compact-20021121.html>.
[RFC3864] Klyne, G., Nottingham, M., and J.
Mogul, "Registration Procedures for
Message Header Fields", BCP 90,
RFC 3864, September 2004.
[RFC4791] Daboo, C., Desruisseaux, B., and L.
Dusseault, "Calendaring Extensions
to WebDAV (CalDAV)", RFC 4791,
March 2007.
Daboo & Desruisseaux Expires September 9, 2010 [Page 33]
Internet-Draft iSchedule March 2010
[RFC5585] Hansen, T., Crocker, D., and P.
Hallam-Baker, "DomainKeys Identified
Mail (DKIM) Service Overview",
RFC 5585, July 2009.
Appendix A. Example Scheduling Transactions
This section describes some example scheduling transactions that give
a general idea of how scheduling is carried out between an iSchedule
Sender and an iSchedule Receiver.
A.1. Example: Simple Meeting Invitation
In the following example, the iSchedule Sender requests the iSchedule
Receiver to deliver a meeting invitation (scheduling REQUEST) to the
calendar user mailto:cyrus@example.org. The response indicates that
delivery of the scheduling message was successful.
Daboo & Desruisseaux Expires September 9, 2010 [Page 34]
Internet-Draft iSchedule March 2010
>> Request <<
POST /.well-known/ischedule HTTP/1.1
DKIM-Signature: a=rsa-sha256; d=example.com; s=jupiter;
c=simple-http; q=dns/txt; t=1268069852; x=1283918400;
h=Originator:Recipient:Host:Content-Type;
bh=XXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxx;
b=XXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxx
Host: cal.example.org
iSchedule-Version: 1.0
Originator: mailto:bernard@example.com
Recipient: mailto:cyrus@example.org
Content-Type: text/calendar; component=VEVENT; method=REQUEST
Content-Length: xxxx
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//EN
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20040901T200200Z
ORGANIZER:mailto:bernard@example.com
DTSTART:20040902T130000Z
DTEND:20040902T140000Z
SUMMARY:Design meeting
UID:34222-232@example.com
ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR;CUTYPE=IND
IVIDUAL;CN=Bernard Desruisseaux:mailto:bernard@
example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE
Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo:
mailto:cyrus@example.org
END:VEVENT
END:VCALENDAR
Daboo & Desruisseaux Expires September 9, 2010 [Page 35]
Internet-Draft iSchedule March 2010
>> Response <<
HTTP/1.1 200 OK
Date: Thu, 02 Sep 2004 16:53:32 GMT
Content-Type: application/xml; charset=utf-8
Content-Length: xxxx
iSchedule-Version: 1.0
<?xml version="1.0" encoding="utf-8" ?>
<schedule-response xmlns="urn:ietf:params:xml:ns:ischedule">
<response>
<recipient>mailto:cyrus@example.org</recipient>
<request-status>2.0;Success</request-status>
<responsedescription>Delivered to recipient</responsedescription>
</response>
</schedule-response>
A.2. Example: Search for Busy Time Information
In the following example, the iSchedule Sender requests the iSchedule
Receiver to determine the busy information of the calendar user
mailto:cyrus@example.org, over the time range specified by the
scheduling message sent in the request. The response includes
VFREEBUSY components with the busy time of the requested calendar
user.
Daboo & Desruisseaux Expires September 9, 2010 [Page 36]
Internet-Draft iSchedule March 2010
>> Request <<
POST /.well-known/ischedule HTTP/1.1
DKIM-Signature: a=rsa-sha256; d=example.com; s=jupiter;
c=simple-http; q=dns/txt; t=1268069852; x=1283918400;
h=Originator:Recipient:Host:Content-Type;
bh=XXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxx;
b=XXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxx
Host: cal.example.org
iSchedule-Version: 1.0
Originator: mailto:bernard@example.com
Recipient: mailto:cyrus@example.org
Content-Type: text/calendar; component=VFREEBUSY; method=REQUEST
Content-Length: xxxx
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//EN
METHOD:REQUEST
BEGIN:VFREEBUSY
DTSTAMP:20040901T200200Z
ORGANIZER:mailto:bernard@example.com
DTSTART:20040902T000000Z
DTEND:20040903T000000Z
UID:34222-232@example.com
ATTENDEE;CN=Cyrus Daboo:mailto:cyrus@example.org
END:VFREEBUSY
END:VCALENDAR
Daboo & Desruisseaux Expires September 9, 2010 [Page 37]
Internet-Draft iSchedule March 2010
>> Response <<
HTTP/1.1 200 OK
Date: Thu, 02 Sep 2004 16:53:32 GMT
Content-Type: application/xml; charset=utf-8
Content-Length: xxxx
iSchedule-Version: 1.0
<?xml version="1.0" encoding="utf-8" ?>
<schedule-response xmlns="urn:ietf:params:xml:ns:ischedule">
<response>
<recipient>mailto:cyrus@example.org</recipient>
<request-status>2.0;Success</request-status>
<calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//EN
METHOD:REPLY
BEGIN:VFREEBUSY
DTSTAMP:20040901T200200Z
ORGANIZER:mailto:bernard@example.com
DTSTART:20040902T000000Z
DTEND:20040903T000000Z
UID:34222-232@example.com
ATTENDEE;CN=Cyrus Daboo:mailto:cyrus@example.org
FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:20040902T000000Z/
20040902T090000Z,20040902T170000Z/20040903T000000Z
FREEBUSY;FBTYPE=BUSY:20040902T120000Z/20040902T130000Z
END:VFREEBUSY
END:VCALENDAR
</calendar-data>
</response>
</schedule-response>
A.3. Example: Simple Task Assignment
In the following example, the iSchedule Sender requests the iSchedule
Sender to deliver a task assignment (scheduling REQUEST) to the
calendar user mailto:cyrus@example.org. The response indicates that
delivery of the scheduling message was successful.
Daboo & Desruisseaux Expires September 9, 2010 [Page 38]
Internet-Draft iSchedule March 2010
>> Request <<
POST /.well-known/ischedule HTTP/1.1
DKIM-Signature: a=rsa-sha256; d=example.com; s=jupiter;
c=simple-http; q=dns/txt; t=1268069852; x=1283918400;
h=Originator:Recipient:Host:Content-Type;
bh=XXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxx;
b=XXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxxXXXxxx
Host: cal.example.org
iSchedule-Version: 1.0
Originator: mailto:bernard@example.com
Recipient: mailto:cyrus@example.org
Content-Type: text/calendar; component=VTODO; method=REQUEST
Content-Length: xxxx
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN
METHOD:REQUEST
BEGIN:VTODO
DTSTAMP:20040901T200200Z
ORGANIZER:mailto:bernard@example.com
DUE:20070505
SUMMARY:Review Internet-Draft
UID:34222-456@example.com
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=RE
Q-PARTICIPANT;CUTYPE=INDIVIDUAL;CN=Cyrus Daboo:
mailto:cyrus@example.org
END:VEVENT
END:VCALENDAR
Daboo & Desruisseaux Expires September 9, 2010 [Page 39]
Internet-Draft iSchedule March 2010
>> Response <<
HTTP/1.1 200 OK
Date: Thu, 02 Sep 2004 16:53:32 GMT
Content-Type: application/xml; charset=utf-8
Content-Length: xxxx
iSchedule-Version: 1.0
<?xml version="1.0" encoding="utf-8" ?>
<schedule-response xmlns="urn:ietf:params:xml:ns:ischedule">
<response>
<recipient>mailto:cyrus@example.org</recipient>
<request-status>2.0;Success</request-status>
<responsedescription>Delivered to recipient</responsedescription>
</response>
</schedule-response>
Appendix B. Open Issues
1. As specified in Section 3.6 of DKIM, parameters to the key lookup
algorithm are the type of the lookup (the "q=" tag), the domain
of the signer (the "d=" tag of the DKIM-Signature header field),
and the selector (the "s=" tag). Is the use of the "s=" and "d="
tags sufficient to allow "email" and "calendar" DKIM keys to be
managed separately, or should a new tag be introduced to override
the default DNS name to look for (e.g., "n=_calendardomainkey",
to override "_domainkey")?
2. Should we forbid the "DKIM-Signature" header to be listed in the
HTTP "Trailer" header? Else, should we require a "DKIM-
Signature-Header" header that would specify the algorithm (a=
tag) up front (along with s= and d= tags to match the proper
DKIM-Signature if multiple values are provided) when the "DKIM-
Signature" header is listed in the "Trailer" header? Knowning
the algorithm up front would avoid going through the data twice.
"Trailer: Content-MD5" doesn't have this issue since the
algorithm is implicit.
3. Should the "Host" and "Recipient" request header really be
REQUIRED to be signed? Should we required the actual Request-URI
to be signed as well?
Appendix C. Change Log (to be removed by RFC Editor prior to
publication)
Daboo & Desruisseaux Expires September 9, 2010 [Page 40]
Internet-Draft iSchedule March 2010
C.1. Changes in -01
a. Introduced use of DKIM for calendaring and scheduling services.
b. The XML elements "supported-calendar-data" and "calendar-data"
were renamed to "supported-calendar-data-type" and "calendar-
data-type" respectively to avoid confusion with the "calendar-
data" XML element being used in the "response" XML element.
c. The "recipient" XML element was redefined to accept (#PCDATA)
instead of an "href" XML element.
d. The grammar of new HTTP headers is now using the ABNF syntax
defined in [RFC5234].
e. Fixed various typos.
Authors' Addresses
Cyrus Daboo
Apple Inc.
1 Infinite Loop
Cupertino, CA 95014
USA
EMail: cyrus@daboo.name
URI: http://www.apple.com/
Bernard Desruisseaux
Oracle Corporation
600 Blvd. de Maisonneuve West
Suite 1900
Montreal, QC H3A 3J2
CANADA
EMail: bernard.desruisseaux@oracle.com
URI: http://www.oracle.com/
Daboo & Desruisseaux Expires September 9, 2010 [Page 41]