Network Working Group | D.M. Royer |
INTERNET DRAFT | INET-Consulting |
<draft-royer-calsch-dynamic-upn-02> | 1 October 2003 |
Category: Informational | |
Expires: 1 April 2004 |
This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. 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 1 April 2004.
Copyright (C) The Internet Society (2003). All Rights Reserved.
This is an extension to the [iCAL] protocol and can be used within [iTIP] objects. A CU may wish to invite a UPN to an event where the UPN does not have a account on the CU's CS. This memo describes two methods to dynamically create UPNs in order for those UPNs to gain access to the "Organizers" CS.
This memo also includes a description of how to include an [OTP] challenge in an object directed to a CU. The CUA must compute the password in order to respond to the object. This challenge and its response can be sent in the clear as the values are computed using a secret that would not be known to anyone snooping the line.
This memo specifies a variation of the one time password (OTP) described in [OTP] and a method used to direct an "Attendee" to a web page to sign up in order to get a UPN and account to a CS.
The OTP method requires that the initial "INVITATION" component be sent over a secure transmission method. It can be an SSL/TLS connection such as [CAP] or encrypted [S/MIME] email or other method. The "Attendee" is sent a key that is an md5, md4, or sha1 hash as defined in [OTP]. This resulting key is the user's secret key that gives them access to the CS that is named in the "TARGET" property in the "INVITATION" component.
The "Attendee"s UPN is then the value of the "ATTENDEE" property for that attendee as supplied in the "INVITATION" component. The UPN can be a mailto URL, CAP URL, or any UPN string recognized by the CS. And their password is computed as described in [OTP].
In this memo the term 'CS' means calendar store and may or might not mean a [CAP] only CS.
The CS can then send them [iCAL] objects that contain an OTP challenge. The password the "Attendee" uses is computed using the user's secret key, the challenge, and the methods described in [OTP]. To gain access to the CS the attendee provides the UPN and computed password to the CS.
The CS can refresh the key as often as desired with the only restriction is that the "INVITATION" component be sent encrypted to the "Attendee".
The CS may if it wishes delete or modify the access rights of dynamic UPNs when the "Attendee" has no more invitations to reply to, when there are not any current or future objects for which the "Attendee" is attending, remove them according to site policy, or it may keep those UPNs indefinitely.
The web page method includes a URL for the "Attendee" to visit in order to get a UPN account on the system. The "INVITATION" "text/calendar" component MUST BE sent as part of a [MIME] multipart/alternate object that contains at least a text/plain and text/calendar MIME objects where text or optional HTML describe how to connect and get an account for those CUAs that do not conform to this specification.
A CUA requests that a supporting CS send the invitations by including the new "INVITE" parameter on the "ATTENDEE" property to "Attendees" not known to the CUA. If that "ATTENDEE" property value is already known to the CS it has no effect.
[CAP] Implementation that support this protocol extensions must supply the "INVITATION" value in the "COMPONENT" property value in their "GET-CAPABILITY" reply.
Purpose: To invite a new UPN to have access on a CS. The "INVITATION" component allows an "Organizer" to invite UPNs to use a CS. It can include an OTP key and a web page to be visited that will initialize the users CUA.
Formal Definition: A "INVITATION" component is defined by the following notation:
invitecomp = "BEGIN" ":" "INVITATION" CRLF inviteprops "END" ":" "INVITATION" CRLF ; TARGET used only if access to a CS is supplied. ; inviteprops target ; As defined in [CAP] ; As defined here, [iCAL], and [CAP] ; In addition the "ATTENDEE" and "ORGANIZER" values ; may be multivalued in order to allow for more than ; one kind of CAL-ADDRESS. At least one ; CAL-ADDRESS must be supplied. ; organizer attendee ; Each may be included once. ; *otpkey *url ; Optional and may occur more than once. ; *other-props ; As definded in [CAP]. *x-comp ; As defined in [CAP].
The following is an invitation by the "Organizer" to an "Attendee" requesting they sign-up so they can process [iCAL] objects on "TARGET". It includes both an "URL" and "OTPKEY" properties so the CUA may use the web, [iTIP], or CAP to initialize the account.
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//some prodid BEGIN:INVITATION TARGET:CAP:cal.example.com OTPKEY:md5-cdb5bf5ef5427e1512c29bfd8dff2dc0 URL:https://cal.example.com/otp?key=cdb5bf5ef5427e1512c29bfd8dff2dc0 ORGANIZER:doug@example.com ATTENDEE:cap:guest@remote.example.com ,mailto:username@site.example.com END:INVITATION END:VCALENDAR
There is no reply to a "INVITATION" other than to connect using the supplied "UPN" property value or use any supplied "OTPKEY" property value to calculate the password to sign onto the CS, or send an [iMIP] message signed as defined in [iMIP] using an "ATTENDEE" property value that matches the original "ATTENDEE" value sent to the "Attendee".
If a "INVITATION" component contained a "URL" property and the "Attendee" elected to use the URL to sign up, then the "Attendee" would after successful registration on the web page have been provided a UPN and password that would be valid to use.
If a "INVITATION" component contained an "OTPKEY" property and value and the "Attendee" elected to sign up using CAP, then the "Attendee" would connect to a CS matching the "TARGET" property value and login using the "ATTENDEE" property value supplied as the "Attendee"s UPN and the computed [OTP] password to access the CS. A successful [BEEP] authentication confirms the account for both the CUA and the CS.
Purpose: The "OTPKEY" property is used to supply the "Attendee" with an original or updated key to be used in computing the [OTP] response. This value MUST NOT be sent in the clear.
Property Parameters: Non-standard property parameters can be specified on this property.
Formal Definition: The property is defined by the following notation:
otpkey = "OTPKEY" other-params ":" otpvalue otpvalue ; As defined in [OTP].
Example: The following are examples of this property:
OTPKEY:md4-cf6864ea860e56ba5a3a015f23ebccbd OTPKEY:md5-45548dc24cb481be7ebb31653d18acc8 OTPKEY:sha1-f8cb62bfa2f962a06588c8129f81547fba434d13
Purpose: The "INVITE" boolean parameter is added by a supporting CUA to the "ATTENDEE" property and sent to a supporting CS to ask the CS to invite an "Attendee" unknown to the CUA or CS. The "INVITE" parameter is only sent to a CS from a CUA.
Conformance: This parameter can be specified in the "ATTENDEE" properties in a component that has the "METHOD" value set to "REQUEST" or when the storing an object in the "BOOKED" (as defined in [CAP]) state. This can only be done to CSs that have set the "INVITATION" value in their "COMPONENT" property value in their "GET-CAPABILITY" reply.
Description: A CUA may add the "INVITE" parameter to the "ATTENDEE" property. If the "INVITE" parameter is set to "TRUE", then the CUA is informing the CS that the CUA does not know if the UPN has an account on the CS. If the CS does not have any such UPN as a valid account the CS must send an "INVITATION" to the UPN.
Formal Definition: The property is defined by the following notation:
inviteparam = "INVITE" "=" boolean Example: The following is an example of this parameter:
ATTENDEE;INVITE=true;guest@remote.example.com
This section contains various examples
When inviting an "Attendee" using an URL, the URL must be sent over a secure connection such as S/MIME, 'https', or [CAP]. The following example is an "INVITATION" component that is inviting the "Attendee" to have a [CAP] account on 'cal.example.com' and the "Attendee" can only sign up by URL in this example:
Content-Type: multipart/alternative; boundary=boundary42 --boundary42 Content-Type: text/plain; charset=us-ascii ...plain text version of message goes here.... An organizer of an event: doug@example.com wishes to invite you to participate in a meeting that will be ... If you wish to participate please go to the following URL and sign up for site access: https://cal.example.com/otp?key=cdb5bf5ef5427e1512c29bfd8dff2dc0 and follow the instructions in order to be invited. --boundary42 Content-Type: text/html .... HTML version of same message goes here ... --boundary42 Content-Type: text/calendar BEGIN:INVITATION TARGET:CAP:cal.example.com URL:https://cal.example.com/otp?key=cdb5bf5ef5427e1512c29bfd8dff2dc0 ORGANIZER:cap:doug@example.com,mailto:doug@example.com ATTENDEE:cap:guest@remote.example.com END:INVITATION --boundary42--
Following a successful web registration then "Attendee" will have a UPN of "guest@remote.example.com" and will use the password as instructed on the web page.
The following example is an "INVITATION" component that is inviting the "Attendee" by CAP. No URL is provided so the first connection or [iTIP] object that uses the correct computed [OTP] password validates the account.
Content-Type: multipart/alternative; boundary=boundary42 --boundary42 Content-Type: text/plain; charset=us-ascii ...plain text version of message goes here.... An organizer of an event: doug@example.com wishes to invite you to participate in a meeting that will be ... --boundary42 Content-Type: text/html .... HTML version of same message goes here ... --boundary42 Content-Type: text/calendar BEGIN:INVITATION TARGET:CAP:cal.example.com ORGANIZER:cap:doug@example.com,mailto:doug@example.com ATTENDEE:cap:guest@remote.example.com OTPKEY:md5-cdb5bf5ef5427e1512c29bfd8dff2dc0 END:INVITATION --boundary42--
Following a successful first sign on then "Attendee" will have a UPN of "guest@remote.example.com" and will use the password computed from the "OTPKEY" value and the SASL challenge.
Doug Royer | |
INET-Consulting.com | |
1795 W. Broadway #266 | |
Idaho Falls, Idaho 83402 | |
US | |
Phone: | 208-520-4044 |
Fax: | 866-594-8574 |
EMail: | Doug@Royer.com |
URI: | http://Royer.com/People/Doug |
[BEEP] Rose, M., "The Block Extensible Exchange Protocol Core", RFC 3080, March 2001 ftp://ftp.isi.edu/in-notes/rfc3080.txt [BEEPTCP] Rose, M., "Mapping the BEEP Core onto TCP", RFC 3081, March 2001 ftp://ftp.isi.edu/in-notes/rfc3081.txt [iCAL] Dawson, F. and Stenerson, D., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 2445, November 1998 ftp://ftp.isi.edu/in-notes/rfc2445.txt [iTIP] Silverberg, S., Mansour, S., Dawson, F. and Hopson, R., "iCalendar Transport-Independent Interoperability Protocol (iTIP) Events, BusyTime, To-dos and Journal Entries", RFC 2446, November 1998 ftp://ftp.isi.edu/in-notes/rfc2446.txt [iMIP] Dawson, F., Mansour, S. and Silverberg, "iCalendar Message-Based Interoperability Protocol (iMIP)", RFC 2447, November 1998 ftp://ftp.isi.edu/in-notes/rfc2447.txt [CAP] Royer, D., Babics, G., Hill, P. Mansour, S. "Calendar Access Protocol (CAP)", work in progress, draft-ietf-calsch-cap-12.txt. [OTP] Haller, N. and C. Metz, "A One-Time Password System," RFC 1938, May 1996.
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Funding for the RFC editor function is currently provided by the Internet Society.