RFC 

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  


How to create dynamic UPNs for invited ATTENDEEs.
draft-royer-calsch-dynamic-upn-02

Status of this Memo

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 Notice

Copyright (C) The Internet Society (2003). All Rights Reserved.

Abstract

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.


1Introduction

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.


2INVITATION Component

Component Name: INVITATION

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


3Using the UPN

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.


4OTPKEY Property

Property Name: OTPKEY

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.

Value Type: TEXT

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


5INVITE Parameter

Parameter Name: INVITE

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.

Value Type: BOOLEAN

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:

An example usage is:


ATTENDEE;INVITE=true;guest@remote.example.com


6EXAMPLES

This section contains various examples

6.1INVITING URL only

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.

6.2INVITING CAP

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.


Author's Address

 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
 

A.  Bibliography


[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.


Full Copyright Statement

Acknowledgement