Call-Id: 777@a.example.org
CSeq: 1 INVITE
Contact: <sip:conf456@conf-srv2.example.org>;isfocus
Message *8: A -> conf
INVITE sip:conf456@conf-srv2.example.org SIP/2.0
To: <sip:bob@example.org>
From: <sip:alice@example.org>;tag=iii
Call-Id: 777@a.example.org
CSeq: 2 INVITE
Contact: <sip:alice@a.example.org>
Join: 7@c.example.org;to-tag=xyz;from-tag=pdq
Message *9: conf ->A
SIP/2.0 200 OK
To: <sip:bob@example.org>;tag=jjj
From: <sip:alice@example.org>;tag=iii
Call-Id: 777@a.example.org
CSeq: 2 INVITE
Contact: <sip:conf456@conf-srv2.example.org>;isfocus
Message *10: B -> C
REFER sip:carol@c.example.org SIP/2.0
To: <carol@example.org>;tag=xyz
From: <bob@example.org>;tag=pdq
Call-Id: 7@c.example.org
CSeq: 1 REFER
Contact: <sip:bob@b.example.org>
Refer-To: <sip:conf456@conf-srv2.example.org>
Referred-By: <sip:bob@b.example.org>
Message *11: C -> conf
INVITE sip:conf456@conf-srv2.example.org SIP/2.0
To: <sip:conf456@conf-srv2.example.org>
From: <carol@example.org>;tag=mmm
Call-Id: 34343@c.example.com
CSeq: 1 INVITE
Contact: <sip:carol@c.example.com>
Referred-By: <sip:bob@b.example.org>
Message *12: C -> conf
SIP/2.0 200 OK
To: <sip:conf456@conf-srv2.example.org>
From: <carol@example.org>;tag=mmm
Call-Id: 34343@c.example.com
CSeq: 1 INVITE
Contact: <sip:conf456@conf-srv2.example.org>;isfocus
Referred-By: <sip:bob@b.example.org>
8.2. Join rejected
A B C
| | callid: 7@c |
| | |
| |<============>|
| | |
|INVITE------>| *1 |
|Join: 7@c | |
| | |
|<----486-----| *2 |
|-----ACK---->| |
| | |
In this example B is Busy (does not want to be disturbed), and
therefore does not wish to add A. B could also decline the request
with a 603 response.
Message *1: A -> B
INVITE sip:bob@b.example.org SIP/2.0
To: <sip:bob@example.org>
From: <sip:alice@example.org>;tag=iii
Call-Id: 777@a.example.org
CSeq: 1 INVITE
Contact: <sip:alice@a.example.org>
Join: 7@c.example.org;to-tag=xyz;from-tag=pdq
Message *2: B -> A
SIP/2.0 486 Busy
To: <sip:bob@example.org>
From: <sip:alice@example.org>;tag=iii
Call-Id: 777@a.example.org
CSeq: 1 INVITE
9. Security Considerations
The extension specified in this document significantly changes the
relative security of SIP devices. Currently in SIP, even if an
eavesdropper learns the Call-ID, To, and From headers of a dialog,
they cannot easily modify or destroy that dialog if Digest
authentication or end-to-end message integrity are used.
This extension can be used to insert or monitor potentially sensitive
content in a multimedia conversation. As such, invitations with the
Join header MUST only be accepted if the peer requesting replacement
has been properly authenticated using a standard SIP mechanism
(Digest or S/MIME), and authorized to be joined with the target
dialog. (All SIP implementations are already required to support
Digest Authentication.) Generally authorization for joins are
configured as a matter of local policy as long-duration persistent
relationships.
For example, the UAs used by call center agents might be configured
with a list of identities who could join their calls (supervisors and
any call center monitoring User Agents). Alternatively the call
center agents might rely on transitive authorization assertions from
a (shorter) list of authorized hosts (e.g., a certificate authority).
For answering-machine-style message screening this is even easier.
Presumably the user screening their messages already has some
credentials with their messaging server.
Some mechanisms for obtaining the dialog information needed by the
Join header (Call-ID, to-tag, and from-tag) include URIs on a web
page, subscriptions to an appropriate event package, and
notifications after a REFER request. Use of end-to-end security
mechanisms to integrity protect and encrypt this information is also
RECOMMENDED.
This extension was designed to take advantage of future signature or
authorization schemes defined by standards track extensions. In
general, call control features would benefit considerably from such
work.
Section 4 describes specific mechanisms for authorization using
Digest Authentication and S/MIME (RFC 3261) and Referred-by [9], the
currently available capabilities in SIP.
10. IANA Considerations
10.1. Registration of "Join" SIP header
Name of Header: Join
Short form: none
Normative description: section 7.1 of this document
10.2. Registration of "join" SIP Option-tag
Name of option: join
Description: Support for the SIP Join header
SIP headers defined: Join
Normative description: This document
11. Acknowledgments
Thanks to Robert Sparks, Alan Johnston, and Ben Campbell and many
other members of the SIP WG for their continued support of the cause
of distributed call control in SIP.
12. References
12.1. Normative References
[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
Session Initiation Protocol", RFC 3261, June 2002.
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[3] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
[4] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication:
Basic and Digest Access Authentication", RFC 2617, June 1999.
[5] Ramsdell, B., "Secure/Multipurpose Internet Mail Extensions
(S/MIME) Version 3.1 Message Specification", RFC 3851, July
2004.
[6] Rosenberg, J., "Indicating User Agent Capabilities in the
Session Initiation Protocol (SIP)", RFC 3840, August 2004.
12.2. Informative References
[7] Sparks, R., "The Session Initiation Protocol (SIP) Refer
Method", RFC 3515, April 2003.
[8] Dean, R., Biggs, B., and R. Mahy, "The Session Initiation
Protocol (SIP) "Replaces" Header", RFC 3891, September 2004.
[9] Sparks, R., "The Session Initiation Protocol (SIP) Referred-By
Mechanism", RFC 3892, September 2004.
[10] Peterson, J., "Session Initiation Protocol (SIP) Authenticated
Identity Body (AIB) Format", RFC 3893, September 2004.
[11] Handley, M., Schulzrinne, H., Schooler, E., and J. Rosenberg,
"SIP: Session Initiation Protocol", RFC 2543, March 1999.
[12] Mahy, R., "A Call Control and Multi-party usage framework for
the Session Initiation Protocol (SIP)", Work in Progress,
March 2003.
[13] Rosenberg, J. and H. Schulzrinne, "An INVITE Initiated Dialog
Event Package for the Session Initiation Protocol (SIP)", Work
in Progress, March 2003.
[14] IAB and IESG, "IETF Policy on Wiretapping", RFC 2804, May 2000.
[15] Rosenberg, J., "A Framework for Conferencing with the Session
Initiation Protocol", Work in Progress, May 2003.
[16] Johnston, A. and O. Levin, "Session Initiation Protocol Call
Control - Conferencing for User Agents", Work in Progress,
April 2003.
[17] Rosenberg, J., Peterson, J., Schulzrinne, H., and G. Camarillo,
"Best Current Practices for Third Party Call Control (3pcc) in
the Session Initiation Protocol (SIP)", BCP 85, RFC 3725, April
2004.
[18] Johnston, A. and S. Donovan, "Session Initiation Protocol
Service Examples", Work in Progress, March 2003.
[19] Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C., and
D. Gurle, "Session Initiation Protocol (SIP) Extension for
Instant Messaging", RFC 3428, December 2002.
[20] Roach, A., "Session Initiation Protocol (SIP)-Specific Event
Notification", RFC 3265, June 2002.
[21] Donovan, S., "The SIP INFO Method", RFC 2976, October 2000.
[22] Rosenberg, J., "The Session Initiation Protocol (SIP) UPDATE
Method", RFC 3311, October 2002.
[23] Rosenberg, J. and H. Schulzrinne, "Reliability of Provisional
Responses in Session Initiation Protocol (SIP)", RFC 3262, June
2002.
[24] Campbell, B., "SIMPLE Presence Publication Mechanism", Work in
Progress, February 2003.
13. Authors’ Addresses
Rohan Mahy
Airespace
110 Nortech Parkway
San Jose, CA 95134
USA
EMail: rohan@airespace.com
Dan Petrie
Pingtel
400 West Cummings Park, Suite 2200
Woburn, MA 01801
USA
EMail: dpetrie@pingtel.com
14. Full Copyright Statement
Copyright (C) The Internet Society (2004).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the IETF’s procedures with respect to rights in IETF Documents can
be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at ietf-
ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.