| < draft-ietf-sip-saml-05.txt | draft-ietf-sip-saml-06.txt > | |||
|---|---|---|---|---|
| SIP H. Tschofenig | SIP H. Tschofenig | |||
| Internet-Draft Nokia Siemens Networks | Internet-Draft Nokia Siemens Networks | |||
| Intended status: Experimental J. Hodges | Intended status: Experimental J. Hodges | |||
| Expires: May 7, 2009 Unaffiliated | Expires: September 9, 2009 Unaffiliated | |||
| J. Peterson | J. Peterson | |||
| NeuStar, Inc. | NeuStar, Inc. | |||
| J. Polk | J. Polk | |||
| Cisco | Cisco | |||
| D. Sicker | D. Sicker | |||
| CU Boulder | CU Boulder | |||
| November 3, 2008 | March 8, 2009 | |||
| SIP SAML Profile and Binding | SIP SAML Profile and Binding | |||
| draft-ietf-sip-saml-05.txt | draft-ietf-sip-saml-06.txt | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | This Internet-Draft is submitted to IETF in full conformance with the | |||
| applicable patent or other IPR claims of which he or she is aware | provisions of BCP 78 and BCP 79. | |||
| have been or will be disclosed, and any of which he or she becomes | ||||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
| Drafts. | Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on May 7, 2009. | This Internet-Draft will expire on September 9, 2009. | |||
| Copyright Notice | ||||
| Copyright (c) 2009 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 in effect on the date of | ||||
| publication of this document (http://trustee.ietf.org/license-info). | ||||
| Please review these documents carefully, as they describe your rights | ||||
| and restrictions with respect to this document. | ||||
| Abstract | Abstract | |||
| This document specifies a Session Initiation Protocol (SIP) profile | This document specifies a Session Initiation Protocol (SIP) profile | |||
| of Security Assertion Markup Language (SAML) as well as a SAML SIP | of Security Assertion Markup Language (SAML) as well as a SAML SIP | |||
| binding. The defined SIP SAML Profile composes with the mechanisms | binding. The defined SIP SAML Profile composes with the mechanisms | |||
| defined in the SIP Identity specification and satisfy requirements | defined in the SIP Identity specification and satisfy requirements | |||
| presented in "Trait-based Authorization Requirements for the Session | presented in "Trait-based Authorization Requirements for the Session | |||
| Initiation Protocol (SIP)". | Initiation Protocol (SIP)". | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3. SAML Introduction . . . . . . . . . . . . . . . . . . . . . . 7 | 3. SAML Introduction . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.1. SAML Assertions . . . . . . . . . . . . . . . . . . . . . 8 | 3.1. SAML Assertions . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 3.2. Abstract Request/Response Protocol . . . . . . . . . . . . 9 | 3.2. Abstract Request/Response Protocol . . . . . . . . . . . . 10 | |||
| 4. Specification Scope . . . . . . . . . . . . . . . . . . . . . 10 | 4. Specification Scope . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 5. Employing SAML in SIP . . . . . . . . . . . . . . . . . . . . 12 | 5. Employing SAML in SIP . . . . . . . . . . . . . . . . . . . . 12 | |||
| 6. Header Syntax . . . . . . . . . . . . . . . . . . . . . . . . 14 | 6. SIP SAML Profiles . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 7. SIP SAML Profiles . . . . . . . . . . . . . . . . . . . . . . 16 | 6.1. AS-driven SIP SAML URI-based Attribute Assertion | |||
| 7.1. AS-driven SIP SAML URI-based Attribute Assertion | Fetch Profile . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| Fetch Profile . . . . . . . . . . . . . . . . . . . . . . 16 | 6.1.1. Required Information . . . . . . . . . . . . . . . . . 14 | |||
| 7.1.1. Required Information . . . . . . . . . . . . . . . . . 16 | 6.1.2. Profile Overview . . . . . . . . . . . . . . . . . . . 14 | |||
| 7.1.2. Profile Overview . . . . . . . . . . . . . . . . . . . 16 | 6.1.3. Profile Description . . . . . . . . . . . . . . . . . 18 | |||
| 7.1.3. Profile Description . . . . . . . . . . . . . . . . . 20 | 6.1.4. Assertion Profile Description . . . . . . . . . . . . 21 | |||
| 7.1.4. Assertion Profile Description . . . . . . . . . . . . 23 | 6.1.5. Assertion Verification . . . . . . . . . . . . . . . . 23 | |||
| 7.1.5. Assertion Verification . . . . . . . . . . . . . . . . 25 | 6.2. Caller-driven SIP SAML Conveyed Assertion Profile . . . . 24 | |||
| 7.2. Caller-driven SIP SAML Conveyed Assertion Profile . . . . 27 | 7. SAML SIP Binding . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 8. SAML SIP Binding . . . . . . . . . . . . . . . . . . . . . . . 28 | 7.1. SAML HTTP-URI-based SIP Binding . . . . . . . . . . . . . 26 | |||
| 8.1. SAML HTTP-URI-based SIP Binding . . . . . . . . . . . . . 28 | 8. Example SAML Assertions . . . . . . . . . . . . . . . . . . . 27 | |||
| 9. Example SAML Assertions . . . . . . . . . . . . . . . . . . . 29 | 9. Authentication Service Behavior . . . . . . . . . . . . . . . 32 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 34 | 10. Verifier Behavior . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 10.1. Man-in-the-Middle Attacks and Stolen Assertions . . . . . 34 | 11. SAML-Info Header Field . . . . . . . . . . . . . . . . . . . . 36 | |||
| 10.2. Forged Assertion . . . . . . . . . . . . . . . . . . . . . 34 | 12. Extended RFC 4474 SIP Identity Signature Mechanism . . . . . . 38 | |||
| 10.3. Replay Attack . . . . . . . . . . . . . . . . . . . . . . 35 | 13. Security Considerations . . . . . . . . . . . . . . . . . . . 41 | |||
| 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 13.1. Man-in-the-Middle Attacks and Stolen Assertions . . . . . 41 | |||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 37 | 13.2. Forged Assertion . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 | 13.3. Replay Attack . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 13.1. Header Field Names . . . . . . . . . . . . . . . . . . . . 38 | 14. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 13.2. 477 'Binding to SIP Message failed' Response Code . . . . 38 | 15. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 13.3. 478 'Unknown SAML Assertion Content' Response Code . . . . 38 | 16. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | |||
| 13.4. 479 'Invalid SAML Assertion' Response Code . . . . . . . . 38 | 16.1. Header Field Names . . . . . . . . . . . . . . . . . . . . 45 | |||
| 14. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | 16.2. 477 'Binding to SIP Message failed' Response Code . . . . 45 | |||
| 14.1. -04 to -05 . . . . . . . . . . . . . . . . . . . . . . . . 40 | 16.3. 478 'Unknown SAML Assertion Content' Response Code . . . . 45 | |||
| 14.2. -03 to -04 . . . . . . . . . . . . . . . . . . . . . . . . 40 | 16.4. 479 'Invalid SAML Assertion' Response Code . . . . . . . . 46 | |||
| 14.3. -02 to -03 . . . . . . . . . . . . . . . . . . . . . . . . 40 | 16.5. 480 'Use SAML Header' Response Code . . . . . . . . . . . 46 | |||
| 14.4. -00 to -02 . . . . . . . . . . . . . . . . . . . . . . . . 41 | 17. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| 15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 17.1. -05 to -06 . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| 15.1. Normative References . . . . . . . . . . . . . . . . . . . 42 | 17.2. -04 to -05 . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| 15.2. Informative References . . . . . . . . . . . . . . . . . . 43 | 17.3. -03 to -04 . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 45 | 17.4. -02 to -03 . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| Intellectual Property and Copyright Statements . . . . . . . . . . 46 | 17.5. -00 to -02 . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
| 18. References . . . . . . . . . . . . . . . . . . . . . . . . . . 49 | ||||
| 18.1. Normative References . . . . . . . . . . . . . . . . . . . 49 | ||||
| 18.2. Informative References . . . . . . . . . . . . . . . . . . 50 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 52 | ||||
| 1. Introduction | 1. Introduction | |||
| This document specifies composition of the Security Assertion Markup | This document specifies composition of the Security Assertion Markup | |||
| Language (SAML) V2.0 with SIP [RFC3261] in order to accommodate | Language (SAML) V2.0 with SIP [RFC3261] in order to accommodate | |||
| richer authorization mechanisms and enable "trait-based | richer authorization mechanisms and enable "trait-based | |||
| authorization." Trait-based authorization is where one is authorized | authorization." Trait-based authorization is where one is authorized | |||
| to make use of some resource based on roles or traits rather than | to make use of some resource based on roles or traits rather than | |||
| ones identifier(s). Motivations for trait-based authorization, along | ones identifier(s). Motivations for trait-based authorization, along | |||
| with use-case scenarios, are presented in [RFC4484]. | with use-case scenarios, are presented in [RFC4484]. | |||
| skipping to change at page 4, line 25 ¶ | skipping to change at page 5, line 25 ¶ | |||
| Security Assertion Markup Language (SAML) v2.0, "SAMLv2", is an XML- | Security Assertion Markup Language (SAML) v2.0, "SAMLv2", is an XML- | |||
| based framework for creating and exchanging security information. | based framework for creating and exchanging security information. | |||
| [OASIS.sstc-saml-exec-overview-2.0-cd-01] and | [OASIS.sstc-saml-exec-overview-2.0-cd-01] and | |||
| [OASIS.sstc-saml-tech-overview-2.0-draft-16] provide non-normative | [OASIS.sstc-saml-tech-overview-2.0-draft-16] provide non-normative | |||
| overviews of SAMLv2. The SAMLv2 specification set is normatively | overviews of SAMLv2. The SAMLv2 specification set is normatively | |||
| defined by [OASIS.saml-conformance-2.0-os]. | defined by [OASIS.saml-conformance-2.0-os]. | |||
| Various means of providing trait-based authorization exist: | Various means of providing trait-based authorization exist: | |||
| authorization certificates [RFC3281], SPKI [RFC2693], or extensions | authorization certificates [RFC3281], SPKI [RFC2693], or extensions | |||
| to the authenticated identity body [RFC3893]. The authors selected | to the authenticated identity body [RFC3893]. The authors selected | |||
| SAML due to its increasing use in environments such as the Liberty | SAML due to its increasing use in environments, such as the Liberty | |||
| Alliance, and the Internet2 project, areas where the applicability to | Alliance, and the Internet2 project, areas where the applicability to | |||
| SIP is widely desired. | SIP is widely desired. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| The SIP network element "Authentication Service" is introduced in | The SIP network element "Authentication Service" is introduced in | |||
| skipping to change at page 7, line 14 ¶ | skipping to change at page 8, line 14 ¶ | |||
| 3. SAML Introduction | 3. SAML Introduction | |||
| SAML [OASIS.sstc-saml-exec-overview-2.0-cd-01] | SAML [OASIS.sstc-saml-exec-overview-2.0-cd-01] | |||
| [OASIS.sstc-saml-tech-overview-2.0-draft-16] defines an XML-based | [OASIS.sstc-saml-tech-overview-2.0-draft-16] defines an XML-based | |||
| framework for exchanging "security assertions" between entities. In | framework for exchanging "security assertions" between entities. In | |||
| the course of making, or relying upon such assertions, SAML system | the course of making, or relying upon such assertions, SAML system | |||
| entities may use SAML protocols, or other protocols, to communicate | entities may use SAML protocols, or other protocols, to communicate | |||
| an assertion itself, or the subject of an assertion. | an assertion itself, or the subject of an assertion. | |||
| Thus one can employ SAML to make and encode statements such as "Alice | Thus, one can employ SAML to make and encode statements such as | |||
| has these profile attributes and her domain's certificate is | "Alice has these profile attributes and her domain's certificate is | |||
| available over there, and I'm making this statement, and here's who I | available over there, and I'm making this statement, and here's who I | |||
| am." Then one can cause such an assertion to be conveyed to some | am." Then one can cause such an assertion to be conveyed to some | |||
| party who can then rely on it in some fashion for some purpose, for | party who can then rely on it in some fashion for some purpose, for | |||
| example input it into some local policy evaluation for access to some | example input it into some local policy evaluation for access to some | |||
| resource. This is done in a particular "context of use". Such a | resource. This is done in a particular "context of use". Such a | |||
| context of use could be, for example, deciding whether to accept and | context of use could be, for example, deciding whether to accept and | |||
| act upon a SIP-based invitation to initiate a communication session. | act upon a SIP-based invitation to initiate a communication session. | |||
| The specification of how SAML is employed in a particular context of | The specification of how SAML is employed in a particular context of | |||
| use is known as a "SAML profile". The specification of how SAML | use is known as a "SAML profile". The specification of how SAML | |||
| skipping to change at page 10, line 10 ¶ | skipping to change at page 11, line 10 ¶ | |||
| based web single sign-on profile is one such example (see Section 4.1 | based web single sign-on profile is one such example (see Section 4.1 | |||
| Web Browser SSO Profile of [OASIS.saml-profiles-2.0-os]). Trait- | Web Browser SSO Profile of [OASIS.saml-profiles-2.0-os]). Trait- | |||
| based SIP communication session establishment, the topic of this | based SIP communication session establishment, the topic of this | |||
| specification, is another. | specification, is another. | |||
| 4. Specification Scope | 4. Specification Scope | |||
| The scope of this specification is: | The scope of this specification is: | |||
| o Specify a SIP profile of SAML -- also known as a "SIP SAML | o Specify a SIP profile of SAML -- also known as a "SIP SAML | |||
| profile" -- such that a subject's profile attributes, and their | profile" -- such that a subject's profile attributes. In doing | |||
| domain's certificate, can be conveyed to a relying party using | so, satisfy the requirements outlined in [RFC4484]. | |||
| SAML. In doing so, satisfy the requirements outlined in | ||||
| [RFC4484], and compose with [RFC4474]. | ||||
| The following are outside the scope of this specification: | The following are outside the scope of this specification: | |||
| o Defining a means for configuring the runtime behavior, or | o Defining a means for configuring the runtime behavior, or | |||
| deployment characteristics, of the Authentication Service. | deployment characteristics, of the Authentication Service. | |||
| Discussion: | Discussion: | |||
| For example, a SIP Authentication Service could be implemented | For example, a SIP Authentication Service could be implemented | |||
| such that its SAML-based features are employed, or not, on a | such that its SAML-based features are employed, or not, on a | |||
| skipping to change at page 12, line 12 ¶ | skipping to change at page 12, line 12 ¶ | |||
| Note that SAMLv2 specifies a "metadata" facility that may be | Note that SAMLv2 specifies a "metadata" facility that may be | |||
| useful in addressing this need. | useful in addressing this need. | |||
| 5. Employing SAML in SIP | 5. Employing SAML in SIP | |||
| Employing SAML in SIP necessitates devising a new SAML profile(s) and | Employing SAML in SIP necessitates devising a new SAML profile(s) and | |||
| binding(s) because those already specified in the SAMLv2 | binding(s) because those already specified in the SAMLv2 | |||
| specification set are specific to other use contexts, e.g., HTTP- | specification set are specific to other use contexts, e.g., HTTP- | |||
| based web browsing. Although SIP bears some similarity to HTTP, it | based web browsing. Although SIP bears some similarity to HTTP, it | |||
| is a seperately distinct protocol, thus requiring specification of | is a seperately distinct protocol, thus requiring specification of | |||
| SIP-specific SAML profile(s) and binding(s). This is technically | SIP-specific SAML profile(s) and binding(s). | |||
| straightforward as both SAML and SIP are explicitly extensible. | ||||
| The SIP SAML Profiles defined in this document make use of concepts | The SIP SAML Profiles defined in this document make use of concepts | |||
| defined by [RFC4474] "Enhancements for Authenticated Identity | defined by [RFC4474] "Enhancements for Authenticated Identity | |||
| Management in the Session Initiation Protocol (SIP)" -- also known as | Management in the Session Initiation Protocol (SIP)" -- also known as | |||
| "SIP Identity". In particular, they leverage the "mediated | "SIP Identity". In particular, they leverage the "mediated | |||
| authentication architecture" utilizing the Authentication Service | authentication architecture" utilizing the Authentication Service | |||
| (AS). The overall semantic being that the AS is vouching that it did | (AS). The overall semantic being that the AS is vouching that it did | |||
| indeed authenticate the calling party. | indeed authenticate the calling party. | |||
| Such an Authentication Service, which likely has access to various | Such an Authentication Service, which likely has access to various | |||
| pieces of information concerning the calling party, could also act as | pieces of information concerning the calling party, could also act as | |||
| a SAML Authority, and make such information available to the callee | a SAML Authority, and make such information available to the callee | |||
| via SAML. | via SAML. | |||
| The approach used by this document is similar to the one used for SIP | The approach used by this document is similar to the one used for SIP | |||
| Identity. I.e. the AS creates a SAML assertion and makes it | Identity, i.e. the AS creates a SAML assertion and makes it available | |||
| available to the verifier via a reference, in the particular case of | to the verifier via a reference, in the particular case of the AS- | |||
| the AS-driven SIP SAML URI-based Attribute Assertion Fetch Profile. | driven SIP SAML URI-based Attribute Assertion Fetch Profile. | |||
| Figure 1 illustrates this approach in a high-level summary fashion. | Figure 1 illustrates this approach in a high-level summary fashion. | |||
| Figure 4, further below, illustrates additional details. In case of | Figure 2, further below, illustrates additional details. In case of | |||
| the Assertion-by Value profile the SAML assertion is made available | the Assertion-by Value profile the SAML assertion is made available | |||
| to the verifying party directly without the additional step of | to the verifying party directly without the additional step of | |||
| utilizing a reference. This approach is described in Section 7.2. | utilizing a reference. This approach is described in Section 6.2. | |||
| +--------+ +--------------+ +--------+ | +--------+ +--------------+ +--------+ | |||
| |Alice@ | |Authentication| | Bob@ | | |Alice@ | |Authentication| | Bob@ | | |||
| |example | |Service | |example2| | |example | |Service | |example2| | |||
| |.com | |@example.com | |.com | | |.com | |@example.com | |.com | | |||
| | | | | | | | | | | | | | | |||
| +---+----+ +------+-------+ +---+----+ | +---+----+ +------+-------+ +---+----+ | |||
| | | | | | | | | |||
| | INVITE | | | | INVITE | | | |||
| |---------------------->| | | |---------------------->| | | |||
| skipping to change at page 13, line 26 ¶ | skipping to change at page 13, line 26 ¶ | |||
| | 407 Proxy auth. req. | | | | 407 Proxy auth. req. | | | |||
| |<----------------------| | | |<----------------------| | | |||
| | Challenge | | | | Challenge | | | |||
| | | | | | | | | |||
| | ACK | | | | ACK | | | |||
| |---------------------->| | | |---------------------->| | | |||
| | | | | | | | | |||
| | INVITE w/authn creds | | | | INVITE w/authn creds | | | |||
| |---------------------->| | | |---------------------->| | | |||
| | | INVITE | | | | INVITE | | |||
| | | w/SAML-Info header | | | | w/SAML-Info and | | |||
| | | w/SAML-Signature | | ||||
| | |--------------------->| | | |--------------------->| | |||
| | | | | | | | | |||
| | | | | | | | | |||
| | | HTTP GET SAML assn | | | | HTTP GET SAML assn | | |||
| | |<==================== | | | |<==================== | | |||
| | | | | | | | | |||
| | | | | | | | | |||
| | | HTTP 200 OK + assn | | | | HTTP 200 OK + assn | | |||
| | |=====================>| | | |=====================>| | |||
| | | | | | | | | |||
| | 200 OK | | | | 200 OK | | | |||
| |<----------------------+----------------------| | |<----------------------+----------------------| | |||
| | | | | | | | | |||
| Figure 1: SIP-SAML-based Network Asserted Identity | Figure 1: SIP-SAML-based Network Asserted Identity | |||
| Figure 1 shows an exchange based on the AS-driven SIP SAML URI-based | Figure 1 shows an exchange based on the AS-driven SIP SAML URI-based | |||
| Attribute Assertion Fetch Profile where the AS creates a SAML | Attribute Assertion Fetch Profile where the AS creates a SAML | |||
| assertion, creates a reference to it, and puts that reference into | assertion, creates a reference to it, and puts that reference into | |||
| the SAML-Info header before forwarding the SIP message. Bob in our | the SAML-Info header before forwarding the SIP message. To tie the | |||
| case acting as the verifier uses the reference to retrieve the SAML | SAML-Info field to the message a digial signature is computed and | |||
| assertion and verifies it. | placed in the SAML-Signature header. Bob in our case acting as the | |||
| verifier uses the reference to retrieve the SAML assertion, verifies | ||||
| 6. Header Syntax | it and the SAML-Signature. | |||
| This document specifies the new SIP header "SAML-Info". This header | ||||
| MAY appear in any SIP header and MAY also appear more than once. | ||||
| The grammar for this header is (following the ABNF [RFC4234] in | ||||
| section 25 of RFC 3261 [RFC3261]): | ||||
| SAML-Info = | ||||
| "SAML-Info" HCOLON ident-info *( SEMI ident-info-params ) | ||||
| ident-info = LAQUOT absoluteURI RAQUOT | ||||
| ident-info-params = generic-param | ||||
| Figure 2: SAML-Info ABNF grammar | ||||
| The "absoluteURI" portion of the SAML-Info header MUST contain a URI | ||||
| which dereferences to a resource containing a SAML assertion. All | ||||
| implementations of this specification MUST support the use of HTTP | ||||
| and HTTPS URIs in the SAML-Info header. Such HTTP and HTTPS URIs | ||||
| MUST follow the conventions of RFC 2585 [RFC2585], and for those URIs | ||||
| the indicated resource MUST be of the form 'application/ | ||||
| samlassertion+xml' described in that specification. | ||||
| No parameters are defined for the SAML-Info header in this document. | ||||
| Future Experimental RFCS may define additional SAML-Info header | ||||
| parameters. | ||||
| This document adds the following entries to Table 2 of RFC 3261 | ||||
| [RFC3261]: | ||||
| Header field where proxy ACK BYE CAN INV OPT REG | ||||
| ------------ ----- ----- --- --- --- --- --- --- | ||||
| SAML-Info R a o o - o o o | ||||
| SUB NOT REF INF UPD PRA | ||||
| --- --- --- --- --- --- | ||||
| o o o o o o | ||||
| Figure 3: New SAML-Info Row for RFC3261 Table 2 | ||||
| The SAML-Info header MUST NOT appear in CANCEL. | ||||
| 7. SIP SAML Profiles | 6. SIP SAML Profiles | |||
| This section defines two "SIP SAML profiles": | This section defines two "SIP SAML profiles": | |||
| o The "AS-driven SIP SAML URI-based Attribute Assertion Fetch | o The "AS-driven SIP SAML URI-based Attribute Assertion Fetch | |||
| Profile" | Profile" | |||
| o The "Assertion-by-value" Profile | o The "Assertion-by-value" Profile | |||
| 7.1. AS-driven SIP SAML URI-based Attribute Assertion Fetch Profile | 6.1. AS-driven SIP SAML URI-based Attribute Assertion Fetch Profile | |||
| 7.1.1. Required Information | 6.1.1. Required Information | |||
| The information given in this section is similar to the info provided | The information given in this section is similar to the info provided | |||
| when registering something, a MIME Media Type, say, with IANA. In | when registering something, a MIME Media Type, say, with IANA. In | |||
| this case, it is for registering this profile with the OASIS SSTC. | this case, it is for registering this profile with the OASIS SSTC. | |||
| See Section 2 "Specification of Additional Profiles" in | See Section 2 "Specification of Additional Profiles" in | |||
| [OASIS.saml-profiles-2.0-os]. | [OASIS.saml-profiles-2.0-os]. | |||
| Identification: | Identification: | |||
| urn:ietf:params:sip:sip-saml-profile:as:uri:attr:1.0 | urn:ietf:params:sip:sip-saml-profile:as:uri:attr:1.0 | |||
| skipping to change at page 16, line 45 ¶ | skipping to change at page 14, line 45 ¶ | |||
| profile. | profile. | |||
| Description: | Description: | |||
| Given below. | Given below. | |||
| Updates: | Updates: | |||
| None. | None. | |||
| 7.1.2. Profile Overview | 6.1.2. Profile Overview | |||
| Figure 4 illustrates this profile's overall protocol flow. The | Figure 2 illustrates this profile's overall protocol flow. The | |||
| following steps correspond to the labeled interactions in the figure. | following steps correspond to the labeled interactions in the figure. | |||
| Within an individual step, there may be one or more actual message | Within an individual step, there may be one or more actual message | |||
| exchanges depending upon the protocol binding employed for that | exchanges depending upon the protocol binding employed for that | |||
| particular step and other implementation-dependent behavior. | particular step and other implementation-dependent behavior. | |||
| Although this profile is overview is cast in terms of a SIP INVITE | Although this profile is overview is cast in terms of a SIP INVITE | |||
| transaction, the reader should note that the mechanism specified | transaction, the reader should note that the mechanism specified | |||
| herein, may be applied to any SIP request message. | herein, may be applied to any SIP request message. | |||
| Figure 4 begins on the next page. | Figure 2 begins on the next page. | |||
| +------------------+ +------------------+ +-----------------+ | +------------------+ +------------------+ +-----------------+ | |||
| | Caller | |Authn Service (AS)| | Callee | | | Caller | |Authn Service (AS)| | Callee | | |||
| |Alice@example.com | | @example.com | | Bob@example2.com| | |Alice@example.com | | @example.com | | Bob@example2.com| | |||
| +--------+---------+ +--------+---------+ +--------+--------+ | +--------+---------+ +--------+---------+ +--------+--------+ | |||
| - - | | | (steps) | - - | | | (steps) | |||
| ^ ^ | INVITE | | | ^ ^ | INVITE | | | |||
| | | |---------------------->| | (1a) | | | |---------------------->| | (1a) | |||
| | | From:alice@foo.com | | | | | From:alice@foo.com | | | |||
| | C | To:sip:bob@example.com| | | | C | To:sip:bob@example.com| | | |||
| skipping to change at page 18, line 37 ¶ | skipping to change at page 16, line 37 ¶ | |||
| | | To:sip:bob@example.com| | | | | To:sip:bob@example.com| | | |||
| A | Proxy-Authorization:..| | | A | Proxy-Authorization:..| | | |||
| C | | INVITE | | C | | INVITE | | |||
| L S | |--------------------->| (3) | L S | |--------------------->| (3) | |||
| e | | From:alice@foo.com | | e | | From:alice@foo.com | | |||
| O q | | To:sip:bob@example2.com | O q | | To:sip:bob@example2.com | |||
| | | | | | | | | |||
| G = | | SAML-Info: | | G = | | SAML-Info: | | |||
| | | https://example.com| | | | https://example.com| | |||
| | N | | /assns/?ID=abcde | | | N | | /assns/?ID=abcde | | |||
| | | | | SAML-Signature | | ||||
| | | | | | | | | | | |||
| | + | |URI resolution (eg. HTTP) | | + | |URI resolution (eg. HTTP) | |||
| | | |<=====================| (4) | | | |<=====================| (4) | |||
| | 1 | | GET /assns/?ID=abcde | | | 1 | | GET /assns/?ID=abcde | | |||
| | | | | | | | | | | |||
| | | | | HTTP/1.1 200 OK | | | | | | HTTP/1.1 200 OK | | |||
| | | | |=====================>| (5) | | | | |=====================>| (5) | |||
| | | | | <saml:Assertion> | | | | | | <saml:Assertion> | | |||
| | | | | <saml:Subject> | | | | | | <saml:Subject> | | |||
| | | | | <saml:NameID> | | | | | | <saml:NameID> | | |||
| skipping to change at page 19, line 9 ¶ | skipping to change at page 17, line 10 ¶ | |||
| | | | | <saml:SubjConf> | | | | | <saml:SubjConf> | |||
| | | | | <saml:SubjConfData> | | | | | <saml:SubjConfData> | |||
| | | | | <ds:KeyInfo>... | | | | | <ds:KeyInfo>... | |||
| | | | | <saml:AttrStatement> | | | | | <saml:AttrStatement> | |||
| | | | | foo=bar | | | | | | foo=bar | | |||
| | | | 200 OK | | | | | | 200 OK | | | |||
| | V |<----------------------+----------------------| (6) | | V |<----------------------+----------------------| (6) | |||
| . - | | | | . - | | | | |||
| V | V | |||
| Figure 4: AS-driven SIP SAML Attribute Fetch Profile: Example INVITE | Figure 2: AS-driven SIP SAML Attribute Fetch Profile: Example INVITE | |||
| Transaction | Transaction | |||
| Step 1. Initial SIP Transaction between Caller and AS | Step 1. Initial SIP Transaction between Caller and AS | |||
| This optional initial step is comprised of substeps 1a, 1b, | This optional initial step is comprised of substeps 1a, 1b, | |||
| and 1c in Figure 4. In this step, the caller, Alice, sends | and 1c in Figure 2. In this step, the caller, Alice, sends | |||
| a SIP request message, illustrated as an INVITE, indicating | a SIP request message, illustrated as an INVITE, indicating | |||
| Bob as the callee (1a), is subsequently challenged by the AS | Bob as the callee (1a), is subsequently challenged by the AS | |||
| (1b), and sends an ACK in response to the challenge (1c). | (1b), and sends an ACK in response to the challenge (1c). | |||
| The latter message signals the completion of this SIP | The latter message signals the completion of this SIP | |||
| transaction (which is an optional substep of this profile). | transaction (which is an optional substep of this profile). | |||
| Step 2. Caller sends SIP Request Message with Authorization | Step 2. Caller sends SIP Request Message with Authorization | |||
| Credentials to the AS | Credentials to the AS. | |||
| Alice then sends an INVITE message in response to the | Alice then sends an INVITE message in response to the | |||
| challenge, or uses cached credentials for the domain if step | challenge, or uses cached credentials for the domain if step | |||
| 1 was skipped, as specified in [RFC4474] and [RFC3261]. | 1 was skipped, as specified in [RFC4474] and [RFC3261]. | |||
| Depending on the chosen SIP security mechanism for client | Depending on the chosen SIP security mechanism for client | |||
| authentication either digest authentication, client side | authentication either digest authentication, client side | |||
| authentication of Transport Layer Security, or a combination | authentication of Transport Layer Security, or a combination | |||
| of both is used to provide the AS with a strong assurance | of both is used to provide the AS with a strong assurance | |||
| about the identity of Alice. | about the identity of Alice. | |||
| Step 3. AS Authorizes the SIP Request and Forwards it to Callee | Step 3. AS authorizes the SIP Request and Forwards it to Callee. | |||
| First, the AS authorizes the received INVITE message as | First, the AS authorizes the received INVITE message, as | |||
| specified in [RFC4474] and [RFC3261]. If the authorization | specified in [RFC4474] and [RFC3261]. If the authorization | |||
| is successful, the AS constructs and caches a SAML assertion | procedure is successful, the AS creates a SAML assertion | |||
| asserting Alice's profile attributes required by Bob's | asserting Alice's profile attributes required by Bob's | |||
| domain (example2.com), and also containing a the domain's | domain (example2.com)., and also containing a the domain's | |||
| (example.com) public key certificate, or a reference to it. | (example.com) public key certificate, or a reference to it. | |||
| The AS constructs a HTTP-based SAML URI Reference | The AS constructs a HTTP-based SAML URI Reference | |||
| incorporating the assertion's Assertion ID (see Section | incorporating the assertion's Assertion ID (see Section | |||
| 2.3.3 of [OASIS.saml-core-2.0-os]). The AS uses this URI as | 2.3.3 of [OASIS.saml-core-2.0-os]). The AS uses this URI as | |||
| the value for the SAML-Info header it adds to the INVITE | the value for the SAML-Info header it adds to the INVITE | |||
| message. | message. | |||
| The AS determines which profile attributes (if any) to | The AS determines which profile attributes (if any) to | |||
| assert in the <AttributeStatement> via local configuration | assert in the <AttributeStatement> via local configuration | |||
| and/or obtaining example2.com's metadata | and/or obtaining example2.com's metadata | |||
| skipping to change at page 20, line 4 ¶ | skipping to change at page 18, line 5 ¶ | |||
| (example.com) public key certificate, or a reference to it. | (example.com) public key certificate, or a reference to it. | |||
| The AS constructs a HTTP-based SAML URI Reference | The AS constructs a HTTP-based SAML URI Reference | |||
| incorporating the assertion's Assertion ID (see Section | incorporating the assertion's Assertion ID (see Section | |||
| 2.3.3 of [OASIS.saml-core-2.0-os]). The AS uses this URI as | 2.3.3 of [OASIS.saml-core-2.0-os]). The AS uses this URI as | |||
| the value for the SAML-Info header it adds to the INVITE | the value for the SAML-Info header it adds to the INVITE | |||
| message. | message. | |||
| The AS determines which profile attributes (if any) to | The AS determines which profile attributes (if any) to | |||
| assert in the <AttributeStatement> via local configuration | assert in the <AttributeStatement> via local configuration | |||
| and/or obtaining example2.com's metadata | and/or obtaining example2.com's metadata | |||
| [OASIS.saml-metadata-2.0-os]. The AS then sends the updated | [OASIS.saml-metadata-2.0-os]. The AS then sends the updated | |||
| INVITE message to Bob. | INVITE message to Bob. | |||
| Step 4. Callee Dereferences HTTP-based SAML URI Reference | Step 4. Callee Dereferences HTTP-based SAML URI Reference | |||
| Bob's UAC or SIP Proxy receives the message and begins | Bob's UAC or SIP Proxy receives the message and needs to | |||
| verifying it per the "Verifier Behavior" specified in | obtain Alice's domain certificate that is contained in the | |||
| [RFC4474]. In order to accomplish this task, it needs to | SAML assertion. It obtains the HTTP-based SAML URI | |||
| obtain Alice's domain certificate. It obtains the HTTP- | Reference from the message's SAML-Info header and | |||
| based SAML URI Reference from the message's SAML-Info header | dereferences it per Section 7.1. Note that this is not a | |||
| and dereferences it per Section 8.1. Note that this is not | SIP message, but an HTTP message [RFC2616]. | |||
| a SIP message, but an HTTP message [RFC2616]. | ||||
| Step 5. AS Returns SAML Assertion | Step 5. AS Returns SAML Assertion | |||
| Upon receipt of the above HTTP request, which contains an | Upon receipt of the above HTTP request, which contains an | |||
| embedded reference to Alice's SAML Assertion, Alice's AS | embedded reference to Alice's SAML Assertion, Alice's AS | |||
| returns her assertion in an HTTP response message. | returns her assertion in an HTTP response message. | |||
| Upon receipt of Alice's SAML Assertion, the AS continues its | Upon receipt of Alice's SAML Assertion, the binding between | |||
| verification of the INVITE message. If successful, it | the SAML assertion and the SIP message is verified. A | |||
| returns a 200 OK message directly to Alice. Otherwise it | detailed description can be found in Section 10. Various | |||
| returns an appropriate SIP error response. | elements contained in the SAML assertion are inspected and | |||
| the processing of the INVITE message is continued. | ||||
| Step 6. Callee Returns SIP 200 OK to Caller | Step 6. Callee Returns SIP 200 OK to Caller | |||
| If Bob determines, based upon Alice's identity as asserted | If Bob determines, based upon Alice's identity as asserted | |||
| by the AS, and as further substantiated by the information | by the AS, and as further substantiated by the information | |||
| in the SAML assertion, to accept the INVITE, he returns a | in the SAML assertion, to accept the INVITE, he returns a | |||
| SIP 200 OK message directly to Alice. | SIP 200 OK message directly to Alice. | |||
| 7.1.3. Profile Description | 6.1.3. Profile Description | |||
| The following sections provide detailed definitions of the individual | The following sections provide detailed definitions of the individual | |||
| profile steps. The relevant illustration is Figure 5, below. Note | profile steps. The relevant illustration is Figure 3, below. Note | |||
| that this profile is agnostic to the specific SIP request, and also | that this profile is agnostic to the specific SIP request, and also | |||
| that the Sender and Authentication Service (AS) may be seperate or | that the Sender and Authentication Service (AS) may be seperate or | |||
| co-located in actuality. | co-located in actuality. | |||
| +------------------+ +------------------+ +------------------+ | +------------------+ +------------------+ +------------------+ | |||
| | Sender | |Authn Service (AS)| | Verifier | | | Sender | |Authn Service (AS)| | Verifier | | |||
| | (UAC) | | (Sender's) | |(UAS or Proxy Svr)| | | (UAC) | | (Sender's) | |(UAS or Proxy Svr)| | |||
| +--------+---------+ +--------+---------+ +--------+---------+ | +--------+---------+ +--------+---------+ +--------+---------+ | |||
| | | | (steps) | | | | (steps) | |||
| | SIP Request | | | | SIP Request | | | |||
| skipping to change at page 21, line 27 ¶ | skipping to change at page 19, line 27 ¶ | |||
| | ACK | | | | ACK | | | |||
| |---------------------->| | (1c) | |---------------------->| | (1c) | |||
| | | | | | | | | |||
| | | | | | | | | |||
| |SIP Req + authorization| | | |SIP Req + authorization| | | |||
| | header w/ creds | | | | header w/ creds | | | |||
| |---------------------->| | (2) | |---------------------->| | (2) | |||
| | | | | | | | | |||
| | | | | | | | | |||
| | | SIP Req + SAML-Info | | | | SIP Req + SAML-Info | | |||
| | | | | | | + SIP-Signature | | |||
| | |--------------------->| (3) | | |--------------------->| (3) | |||
| | | | | | | | | |||
| | | URI resolution | | | | URI resolution | | |||
| | |<=====================| (4) | | |<=====================| (4) | |||
| | | (via HTTP) | | | | (via HTTP) | | |||
| | | | | | | | | |||
| | | HTTP/1.1 200 OK | | | | HTTP/1.1 200 OK | | |||
| | |=====================>| (5) | | |=====================>| (5) | |||
| | | | | | | | | |||
| | | | | | | | | |||
| | | ? | (6) | | | ? | (6) | |||
| | | | | | | | | |||
| Figure 5: AS-driven SIP SAML Attribute Fetch Profile: Message Flow | Figure 3: AS-driven SIP SAML Attribute Fetch Profile: Message Flow | |||
| 7.1.3.1. Initial SIP Transaction between Sender and AS | 6.1.3.1. Initial SIP Transaction between Sender and AS | |||
| This optional step maps to Steps 1 and 2 of Section 5 "Authentication | This optional step maps to Steps 1 and 2 of Section 5 "Authentication | |||
| Service Behavior" of [RFC4474]. If the SIP request sent by the | Service Behavior" of [RFC4474]. If the SIP request sent by the | |||
| caller in substep 1a is deemed insufficiently authenticated by the AS | caller in substep 1a is deemed insufficiently authenticated by the AS | |||
| per the rules stipulated by [RFC4474] Steps 1 and 2, then the AS MUST | per the rules stipulated by [RFC4474] Steps 1 and 2, then the AS MUST | |||
| authenticate the sender of the message. The particulars of how this | authenticate the sender of the message. The particulars of how this | |||
| is accomplished depend upon implementation and/or deployment | is accomplished depend upon implementation and/or deployment | |||
| instantiation as discussed in [RFC4474]. Substeps 1b and 1c as shown | instantiation as discussed in [RFC4474]. Substeps 1b and 1c as shown | |||
| in Figure 5 are non-normative and illustrative only. | in Figure 3 are non-normative and illustrative only. | |||
| 7.1.3.2. Sender sends SIP Request Message with Authorization | 6.1.3.2. Sender sends SIP Request Message with Authorization | |||
| Credentials to the AS | Credentials to the AS | |||
| This step maps to Steps 1 and 2 of Section 5 "Authentication Service | This step maps to Steps 1 and 2 of Section 5 "Authentication Service | |||
| Behavior" of [RFC4474]. This request is presumed to be made in a | Behavior" of [RFC4474]. This request is presumed to be made in a | |||
| context such that the AS will not challenge it -- i.e., the AS will | context such that the AS will not challenge it -- i.e., the AS will | |||
| consider the sender of the message to be authenticated. If this is | consider the sender of the message to be authenticated. If this is | |||
| not true, then this procedure reverts back to Step 1, above. | not true, then this procedure reverts back to Step 1, above. | |||
| Otherwise, the AS carries out all other processing of the message as | Otherwise, the AS carries out all other processing of the message as | |||
| stipulated in [RFC4474] Steps 1 and 2, and if successful, this | stipulated in [RFC4474] Steps 1 and 2, and if successful, this | |||
| procedure procedes to the next step below. | procedure procedes to the next step below. | |||
| 7.1.3.3. AS Authorizes the SIP Request and Forwards it to Verifier | 6.1.3.3. AS Authorizes the SIP Request and Forwards it to Verifier | |||
| This first portion of this step maps to Steps 3 and 4 of Section 5 | This first portion of this step maps to Steps 3 and 4 of Section 9, | |||
| "Authentication Service Behavior" of [RFC4474], which the AS MUST | which the AS MUST perform, although with the following additional | |||
| perform, although with the following additional substeps: | substeps: | |||
| The AS MUST construct a SAML assertion according to the "Assertion | The AS MUST construct a SAML assertion according to the "Assertion | |||
| Profile Description" specified in Section 7.1.4 of this | Profile Description" specified in Section 6.1.4 of this | |||
| specification. | specification. | |||
| The AS SHOULD construct an HTTPS, and MAY construct an HTTP, URI | The AS MUST construct an HTTP URI per Section "3.7.5.1 URI Syntax" | |||
| per Section "3.7.5.1 URI Syntax" of [OASIS.saml-bindings-2.0-os]. | of [OASIS.saml-bindings-2.0-os]. To enable proper caching, the | |||
| HTTP URI pointing to the SAML assertion MUST be unique, i.e., if | ||||
| the content of the SAML assertion changes then the HTTP URI | ||||
| reference MUST be different than any previously used HTTP URI | ||||
| references used before. | ||||
| The AS MUST use the URI constructed in the immediately preceding | The AS MUST use the URI constructed in the immediately preceding | |||
| substep as the value of the SAML-Info header that is added to the | substep as the value of the SAML-Info header that is added to the | |||
| SIP request message. | SIP request message. | |||
| Upon successful completion of all of the above, the AS forwards the | Upon successful completion of all of the above, the AS forwards the | |||
| request message. | request message. | |||
| At this point in this step, after perhaps traversing some number of | At this point in this step, after perhaps traversing some number of | |||
| intermediaries, the SIP request message arrives at a SIP network | intermediaries, the SIP request message arrives at a SIP network | |||
| entity performing the "verifier" role. This role and its behavior | entity performing the "verifier" role. This role and its behavior | |||
| are specified in Section 6 "Verifier Behavior" of [RFC4474]. The | are specified in Section 10. | |||
| verifier MUST perform the steps enumerated in the aforementioned | ||||
| section, with the following modifications: | ||||
| Step 1 of [RFC4474] Section 6 maps to and is updated by, the | ||||
| following two steps in this procedure. | ||||
| Steps 2, 3, and 4 of [RFC4474] Section 6 may be mapped across this | ||||
| latter portion of this step, and/or the following two steps, as | ||||
| appropriate. | ||||
| 7.1.3.4. Verifier Dereferences HTTP-based SAML URI Reference | 6.1.3.4. Verifier Dereferences HTTP-based SAML URI Reference | |||
| The verifier SHOULD ascertain whether it has a current cached copy of | The verifier SHOULD ascertain whether it has a current cached copy of | |||
| the SIP message sender's SAML assertion and domain certificate. If | the SIP message sender's SAML assertion and domain certificate. If | |||
| not, or if the verifier chooses to (e.g., due to local policy), it | not, or if the verifier chooses to (e.g., due to local policy), it | |||
| MUST dereference the the HTTP-based SAML URI Reference found in the | MUST dereference the the HTTP-based SAML URI Reference found in the | |||
| SIP message's SAML-Info header. To do so, the verifier MUST employ | SIP message's SAML-Info header. To do so, the verifier MUST employ | |||
| the "SAML HTTP-URI-based SIP Binding" specified in Section 8.1. | the "SAML HTTP-URI-based SIP Binding" specified in Section 7.1. | |||
| 7.1.3.5. AS Returns SAML Assertion | 6.1.3.5. AS Returns SAML Assertion | |||
| This step also employs Section 8.1 "SAML HTTP-URI-based SIP Binding". | This step also employs Section 7.1 "SAML HTTP-URI-based SIP Binding". | |||
| If the prior step returns an HTTP error (e.g., 4xx series), then this | If the prior step returns an HTTP error (e.g., 4xx series), then this | |||
| procedure terminates and the verifier returns (upstream) a SIP 436 | procedure terminates and the verifier returns (upstream) a SIP 436 | |||
| 'Bad SAML-Info' Response code. | 'Bad SAML-Info' Response code. | |||
| Otherwise, the HTTP response message will contain a SAML assertion | Otherwise, the HTTP response message will contain a SAML assertion | |||
| and be denoted as such via the MIME media type of "application/ | and be denoted as such via the MIME media type of "application/ | |||
| samlassertion+xml" [IANA.application.samlassertion-xml]. The | samlassertion+xml" [IANA.application.samlassertion-xml]. The | |||
| verifier MUST perform the verification steps specified in | verifier MUST perform the verification steps specified in | |||
| Section 7.1.5 "Assertion Verification", below. If successful, then | Section 6.1.5 "Assertion Verification", below. If successful, then | |||
| this procedure continues with the next step. | this procedure continues with the next step. | |||
| 7.1.3.6. Verifier performs Next Step | 6.1.3.6. Verifier performs Next Step | |||
| The SIP request was successfully processed. The verifier now | The SIP request was successfully processed. The verifier now | |||
| performs its next step, which depends at least in part on the type of | performs its next step, which depends at least in part on the type of | |||
| SIP request it received. | SIP request it received. | |||
| 7.1.4. Assertion Profile Description | 6.1.4. Assertion Profile Description | |||
| This section defines the particulars of how the sender, i.e., the | This section defines the particulars of how the sender, i.e., the | |||
| SAML Authority, MUST construct certain portions of the SAML | SAML Authority, MUST construct certain portions of the SAML | |||
| assertions it issues. The schema for SAML assertions themselves is | assertions it issues. The schema for SAML assertions themselves is | |||
| defined in Section 2.3 of [OASIS.saml-core-2.0-os]. | defined in Section 2.3 of [OASIS.saml-core-2.0-os]. | |||
| An example SAML assertion, formulated according to this profile is | An example SAML assertion, formulated according to this profile is | |||
| given in Section 9. | given in Section 8. | |||
| Overall SAML assertion profile requirements: | ||||
| When using an HTTPS URI then the SAML assertion does not | ||||
| necessarily needs to be signed. If it is signed then it MUST be | ||||
| signed by the same key that is used in the Transport Layer | ||||
| Security mechanism utilized with HTTPS. Signing of SAML | ||||
| assertions is defined in Section 5.4 of [OASIS.saml-core-2.0-os]. | ||||
| In the following subsections, the SAML assertion profile is specified | In the following subsections, the SAML assertion profile is specified | |||
| element-by-element, in a top-down, depth-first manner, beginning with | element-by-element, in a top-down, depth-first manner, beginning with | |||
| the outermost element, "<Assertion>". Where applicable, the | the outermost element, "<Assertion>". Where applicable, the | |||
| requirements for an element's XML attributes are also stated, as a | requirements for an element's XML attributes are also stated, as a | |||
| part of the element's description. Requirements for any given | part of the element's description. Requirements for any given | |||
| element or XML attribute are only stated when, in the context of use | element or XML attribute are only stated when, in the context of use | |||
| of this profile, they are not already sufficiently defined by | of this profile, they are not already sufficiently defined by | |||
| [OASIS.saml-core-2.0-os]. | [OASIS.saml-core-2.0-os]. | |||
| 7.1.4.1. Element: <Assertion> | 6.1.4.1. Element: <Assertion> | |||
| Attribute: ID | Attribute: ID | |||
| The value for the ID XML attribute SHOULD be allocated randomly | The value for the ID XML attribute SHOULD be allocated randomly | |||
| such that the value meets the randomness requirments specified in | such that the value meets the randomness requirments specified in | |||
| Section 1.3.4 of [OASIS.saml-core-2.0-os]. | Section 1.3.4 of [OASIS.saml-core-2.0-os]. | |||
| Attribute: IssueInstant | Attribute: IssueInstant | |||
| The value for the IssueInstant XML attribute SHOULD be set at the | The value for the IssueInstant XML attribute SHOULD be set at the | |||
| time the SAML assertion is created (and cached for subsequent | time the SAML assertion is created (and cached for subsequent | |||
| retrieval). This time instant value MAY be temporally the same as | retrieval). This time instant value MAY be temporally the same as | |||
| that encoded in the SIP message's Date header, and MUST be at | that encoded in the SIP message's Date header, and MUST be at | |||
| least temporally later, although it is RECOMMENDED that it not be | least temporally later, although it is RECOMMENDED that it not be | |||
| 10 minutes or more later. | 10 minutes or more later. | |||
| 7.1.4.1.1. Element: <Issuer> | 6.1.4.1.1. Element: <Issuer> | |||
| The value for the Issuer XML element MUST be a value that matches | The value for the Issuer XML element MUST be a value that matches | |||
| either the Issuer or the Issuer Alternative Name fields [RFC3280] in | either the Issuer or the Issuer Alternative Name fields [RFC3280] in | |||
| the certificate conveyed by the SAML assertion in the ds: | the certificate conveyed by the SAML assertion in the ds: | |||
| X509Certificate element located on this path within the SAML | X509Certificate element located on this path within the SAML | |||
| assertion: | assertion: | |||
| <Assertion | <Assertion | |||
| <ds:Signature | <ds:Signature | |||
| <ds:KeyInfo | <ds:KeyInfo | |||
| <ds:X509Data | <ds:X509Data | |||
| <ds:X509Certificate | <ds:X509Certificate | |||
| 7.1.4.1.2. Element: <Subject> | This field contains the domain certificate of the AS. | |||
| 6.1.4.1.2. Element: <Subject> | ||||
| The <Subject> element SHOULD contain both a <NameID> element and a | The <Subject> element SHOULD contain both a <NameID> element and a | |||
| <SubjectConfirmation> element. | <SubjectConfirmation> element. | |||
| The value of the <NameID> element MUST be the Address of Record | The value of the <NameID> element MUST be the Address of Record | |||
| (AoR). | (AoR). | |||
| The <SubjectConfirmation> element attribute Method SHOULD be set to | The <SubjectConfirmation> element attribute Method SHOULD be set to | |||
| the value: | the value: | |||
| urn:oasis:names:tc:SAML:2.0:cm:sender-vouches | urn:oasis:names:tc:SAML:2.0:cm:sender-vouches | |||
| Although it MAY be set to some other implementation- and/or | Although it MAY be set to some other implementation- and/or | |||
| deployment-specific value. The <SubjectConfirmation> element itself | deployment-specific value. The <SubjectConfirmation> element itself | |||
| SHOULD be empty. | SHOULD be empty. | |||
| 7.1.4.1.3. Element: <Conditions> | 6.1.4.1.3. Element: <Conditions> | |||
| The <Conditions> element SHOULD contain an <AudienceRestriction> | The <Conditions> element SHOULD contain an <AudienceRestriction> | |||
| element, which itself SHOULD contain an <Audience> element. When | element, which itself SHOULD contain an <Audience> element. When | |||
| included the value of the <Audience> element MUST be the same as the | included the value of the <Audience> element MUST be the same as the | |||
| addr-spec of the SIP request's To header field. | addr-spec of the SIP request's To header field. | |||
| The following XML attributes of the <Conditions> element MUST be set | The following XML attributes of the <Conditions> element MUST be set | |||
| as follows: | as follows: | |||
| Attribute: NotBefore | Attribute: NotBefore | |||
| The value of the NotBefore XML attribute MUST be set to a time | The value of the NotBefore XML attribute MUST be set to a time | |||
| instant the same as the value for the IssueInstant XML attribute | instant the same as the value for the IssueInstant XML attribute | |||
| discussed above, or to a later time. | discussed above, or to a later time. | |||
| Attribute: NotOnOrAfter | Attribute: NotOnOrAfter | |||
| The value of the NotOnOrAfter XML attribute MUST be set to a time | The value of the NotOnOrAfter XML attribute MUST be set to a time | |||
| instant later than the value for NotBefore. | instant later than the value for NotBefore. | |||
| 7.1.4.1.4. Element: <AttributeStatement> | 6.1.4.1.4. Element: <AttributeStatement> | |||
| The SAML assertion MAY contain an <AttributeStatement> element. If | The SAML assertion MAY contain an <AttributeStatement> element. If | |||
| so, the <AttributeStatement> element will contain attribute-value | so, the <AttributeStatement> element will contain attribute-value | |||
| pairs, e.g., of a user profile nature, encoded according to either | pairs, e.g., of a user profile nature, encoded according to either | |||
| one of the "SAML Attribute Profiles" as specified in | one of the "SAML Attribute Profiles" as specified in | |||
| [OASIS.saml-profiles-2.0-os], or encoded in some implementation- | [OASIS.saml-profiles-2.0-os], or encoded in some implementation- | |||
| and/or deployment-specific attribute profile. | and/or deployment-specific attribute profile. | |||
| The attribute-value pairs SHOULD in fact pertain to the entity | The attribute-value pairs SHOULD in fact pertain to the entity | |||
| identified in the SIP From header field, since a SAML assertion | identified in the SIP From header field, since a SAML assertion | |||
| formulated per this overall section is stating that they do. | formulated per this overall section is stating that they do. | |||
| 7.1.5. Assertion Verification | 6.1.5. Assertion Verification | |||
| This section specifies the steps that a verifier participating in | This section specifies the steps that a verifier participating in | |||
| this profile MUST perform in addition to the "Verifier Behavior" | this profile MUST perform in addition to the "Verifier Behavior" | |||
| specified in Section 6 of [RFC4474]. | specified in Section 6 of [RFC4474]. | |||
| The steps are: | The steps are: | |||
| 1. Before Step 1 in Section 6 of [RFC4474], the verifier MUST | 1. Before Step 1 in Section 6 of [RFC4474], the verifier MUST | |||
| extract the AS's domain certificate from the <ds: | extract the AS's domain certificate from the <ds:X509Certificate> | |||
| X509Certificate> XML element at the end of the element path | XML element at the end of the element path given in | |||
| given in Section 7.1.4.1.1. | Section 6.1.4.1.1. | |||
| 2. Perform Step 1 in Section 6 of [RFC4474]. | 2. Perform Step 1 in Section 6 of [RFC4474]. | |||
| 3. After Step 1 in Section 6 of [RFC4474], but before Step 2 of | 3. After Step 1 in Section 6 of [RFC4474], but before Step 2 of that | |||
| that section, the verifier MUST verify the SAML assertion's | section, the verifier MUST verify the SAML assertion's signature | |||
| signature via the procedures specified in Section 5.4 of | via the procedures specified in Section 5.4 of | |||
| [OASIS.saml-core-2.0-os] as well as [W3C.xmldsig-core]. | [OASIS.saml-core-2.0-os] as well as [W3C.xmldsig-core]. | |||
| The 479 'Invalid SAML Assertion' response code is used when the | The 479 'Invalid SAML Assertion' response code is used when the | |||
| verifier is unable to process the SAML assertion. | verifier is unable to process the SAML assertion. | |||
| 4. Perform Step 2 in Section 6 of [RFC4474]. | 4. Perform Step 2 in Section 6 of [RFC4474]. | |||
| 5. Verify that the signer of the SIP message's Identity header | 5. Verify that the signer of the SIP message's Identity header field | |||
| field is the same as the signer of the SAML assertion. | is the same as the signer of the SAML assertion. | |||
| 6. Verify that the content of the SAML assertion matches with the | 6. Verify that the content of the SAML assertion, if present, | |||
| information carried in the SIP message. This may include the | matches with the information carried in the SIP message. This | |||
| following checks: | may include the following checks: | |||
| 7. Verify that the SAML assertion's <Issuer> element value matches | 7. | |||
| the Issuer or the Issuer Alternative Name fields [RFC3280] in | ||||
| the AS's domain certificate. | ||||
| 8. Verify that the SAML assertion's <NameID> element value is the | * Verify that the SAML assertion's <Issuer> element value | |||
| same as the Address of Record (AoR) value. | matches the Issuer or the Issuer Alternative Name fields | |||
| [RFC3280] in the AS's domain certificate. | ||||
| 9. Verify that the SAML assertion's <SubjectConfirmation> element | * Verify that the SAML assertion's <NameID> element value is the | |||
| value is set to whichever value was configured at | same as the Address of Record (AoR) value. | |||
| implementation- or deployment-time. The default value is: | ||||
| urn:oasis:names:tc:SAML:2.0:cm:sender-vouches | * Verify that the SAML assertion's <SubjectConfirmation> element | |||
| value is set to whichever value was configured at | ||||
| implementation- or deployment-time. The default value is: | ||||
| 10. Verify that the SAML assertion contains an <Audience> element, | urn:oasis:names:tc:SAML:2.0:cm:sender-vouches | |||
| and that its value matches the value of the addr-spec of the SIP | ||||
| To header field. | ||||
| 11. Verify that the validity period denoted by the NotBefore and | * Verify that the SAML assertion contains an <Audience> element, | |||
| NotOnOrAfter attributes of the <Conditions> element meets the | and that its value matches the value of the addr-spec of the | |||
| requirements given in Section 7.1.4.1.3. | SIP To header field. | |||
| 7.2. Caller-driven SIP SAML Conveyed Assertion Profile | * Verify that the validity period denoted by the NotBefore and | |||
| NotOnOrAfter attributes of the <Conditions> element meets the | ||||
| requirements given in Section 6.1.4.1.3. | ||||
| 6.2. Caller-driven SIP SAML Conveyed Assertion Profile | ||||
| For the "Assertion-by-value" profile we assume that a SAML assertion | For the "Assertion-by-value" profile we assume that a SAML assertion | |||
| is obtained out-of-band and attached to the body of the SIP message. | is obtained out-of-band and attached to the body of the SIP message. | |||
| Note that any SIP message may be used to convey the SAML assertion | Note that any SIP message may be used to convey the SAML assertion | |||
| even though SIP INVITE may be the most appropriate candiate. The | even though SIP INVITE may be the most appropriate candiate. The | |||
| verification step described in Section 7.1.5 is applicable to this | verification step described in Section 6.1.5 is applicable to this | |||
| profile as well as the description on the content of the assertion | profile as well as the description on the content of the assertion | |||
| illustrated in Section 7.1.4. | illustrated in Section 6.1.4. | |||
| 8. SAML SIP Binding | 7. SAML SIP Binding | |||
| This section specifies one SAML SIP Binding at this time. Additional | This section specifies one SAML SIP Binding at this time. Additional | |||
| bindings may be specified in future revisions of this specification. | bindings may be specified in future revisions of this specification. | |||
| The description in Section 7.1.4 is applicable to this profile. | The description in Section 6.1.4 is applicable to this profile. | |||
| 8.1. SAML HTTP-URI-based SIP Binding | 7.1. SAML HTTP-URI-based SIP Binding | |||
| This section specifies the "SAML HTTP-URI-based SIP Binding", | This section specifies the "SAML HTTP-URI-based SIP Binding", | |||
| (SHUSB). | (SHUSB). | |||
| The SHUSB is a profile of the "SAML URI Binding" specified in Section | The SHUSB is a profile of the "SAML URI Binding" specified in Section | |||
| 3.7 of [OASIS.saml-bindings-2.0-os]. The SAML URI Binding specifies | 3.7 of [OASIS.saml-bindings-2.0-os]. The SAML URI Binding specifies | |||
| a means by which SAML assertions can be referenced by URIs and thus | a means by which SAML assertions can be referenced by URIs and thus | |||
| be obtained through resolution of such URIs. | be obtained through resolution of such URIs. | |||
| This profile of the SAML URI Binding is congruent with the SAML URI | This profile of the SAML URI Binding is congruent with the SAML URI | |||
| skipping to change at page 29, line 5 ¶ | skipping to change at page 27, line 5 ¶ | |||
| to [OASIS.saml-bindings-2.0-os]): | to [OASIS.saml-bindings-2.0-os]): | |||
| Section 3.7.5.3 Security Considerations: | Section 3.7.5.3 Security Considerations: | |||
| Support for TLS 1.0 or SSL 3.0 is mandatory to implement. | Support for TLS 1.0 or SSL 3.0 is mandatory to implement. | |||
| Section 3.7.5.4 Error Reporting: | Section 3.7.5.4 Error Reporting: | |||
| All SHOULDs in this section are to be interpreted as MUSTs. | All SHOULDs in this section are to be interpreted as MUSTs. | |||
| 9. Example SAML Assertions | 8. Example SAML Assertions | |||
| This section presents two examples of a SAML assertion, one unsigned | This section presents two examples of a SAML assertion, one unsigned | |||
| (for clarity), the other signed (for accuracy). | (for clarity), the other signed (for accuracy). | |||
| In the first example, Figure 6, the assertion is attesting with | In the first example, Figure 4, the assertion is attesting with | |||
| respect to the subject (lines 7-15) "Alice@example.com" (line 11). | respect to the subject (lines 7-15) "Alice@example.com" (line 11). | |||
| The validity conditions are expressed in lines 16-23, via both a | The validity conditions are expressed in lines 16-23, via both a | |||
| validity period expressed as temporal endpoints, and an "audience | validity period expressed as temporal endpoints, and an "audience | |||
| restriction" stating that this assertion's semantics are valid for | restriction" stating that this assertion's semantics are valid for | |||
| only the relying party named "example2.com". Also, the assertion's | only the relying party named "example2.com". Also, the assertion's | |||
| issuer is noted in lines 4-5. | issuer is noted in lines 4-5. | |||
| The above items correspond to some aspects of this specification's | The above items correspond to some aspects of this specification's | |||
| SAML assertion profile, as noted below in Security Considerations | SAML assertion profile, as noted below in Security Considerations | |||
| dicussions, see: Section 10.1 and Section 10.2. | dicussions, see: Section 13.1 and Section 13.2. | |||
| In lines 24-36, Alice's telephone number is conveyed, in a "typed" | In lines 24-36, Alice's telephone number is conveyed, in a "typed" | |||
| fashion, using LDAP/X.500 schema as the typing means. | fashion, using LDAP/X.500 schema as the typing means. | |||
| 1 <Assertion ID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc" | 1 <Assertion ID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc" | |||
| 2 IssueInstant="2003-04-17T00:46:02Z" Version="2.0" | 2 IssueInstant="2003-04-17T00:46:02Z" Version="2.0" | |||
| 3 xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> | 3 xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> | |||
| 4 <Issuer> | 4 <Issuer> | |||
| 5 example.com | 5 example.com | |||
| 6 </Issuer> | 6 </Issuer> | |||
| skipping to change at page 30, line 43 ¶ | skipping to change at page 28, line 43 ¶ | |||
| 29 "urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | 29 "urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | |||
| 30 Name="urn:oid:2.5.4.20" | 30 Name="urn:oid:2.5.4.20" | |||
| 31 FriendlyName="telephoneNumber"> | 31 FriendlyName="telephoneNumber"> | |||
| 32 <saml:AttributeValue xsi:type="xs:string"> | 32 <saml:AttributeValue xsi:type="xs:string"> | |||
| 33 +1-888-555-1212 | 33 +1-888-555-1212 | |||
| 34 </saml:AttributeValue> | 34 </saml:AttributeValue> | |||
| 35 </saml:Attribute> | 35 </saml:Attribute> | |||
| 36 </AttributeStatement> | 36 </AttributeStatement> | |||
| 37 </Assertion> | 37 </Assertion> | |||
| Figure 6: Unsigned SAML Assertion Illustrating Conveyance of | Figure 4: Unsigned SAML Assertion Illustrating Conveyance of | |||
| Subject Attribute | Subject Attribute | |||
| In the second example, Figure 7, the information described above is | In the second example, Figure 5, the information described above is | |||
| the same, the addition is that this version of the assertion is | the same, the addition is that this version of the assertion is | |||
| signed. All the signature information is conveyed in the <ds: | signed. All the signature information is conveyed in the <ds: | |||
| signature> element, lines 7-47. Thus this assertion's origin and its | signature> element, lines 7-47. Thus this assertion's origin and its | |||
| integrity are assured. Since this assertion is the same as the one | integrity are assured. Since this assertion is the same as the one | |||
| in the first example above, other than having a signature added, the | in the first example above, other than having a signature added, the | |||
| second example below addresses the same Security Considerations | second example below addresses the same Security Considerations | |||
| aspects, plus those requiring a Signature. | aspects, plus those requiring a Signature. | |||
| 1 <Assertion ID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc" | 1 <Assertion ID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc" | |||
| 2 IssueInstant="2003-04-17T00:46:02Z" Version="2.0" | 2 IssueInstant="2003-04-17T00:46:02Z" Version="2.0" | |||
| skipping to change at page 33, line 35 ¶ | skipping to change at page 31, line 35 ¶ | |||
| 70 "urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | 70 "urn:oasis:names:tc:SAML:2.0:attrname-format:uri" | |||
| 71 Name="urn:oid:2.5.4.20" | 71 Name="urn:oid:2.5.4.20" | |||
| 72 FriendlyName="telephoneNumber"> | 72 FriendlyName="telephoneNumber"> | |||
| 73 <saml:AttributeValue xsi:type="xs:string"> | 73 <saml:AttributeValue xsi:type="xs:string"> | |||
| 74 +1-888-555-1212 | 74 +1-888-555-1212 | |||
| 75 </saml:AttributeValue> | 75 </saml:AttributeValue> | |||
| 76 </saml:Attribute> | 76 </saml:Attribute> | |||
| 77 </AttributeStatement> | 77 </AttributeStatement> | |||
| 78 </Assertion> | 78 </Assertion> | |||
| Figure 7: Signed SAML Assertion Illustrating Conveyance of Subject | Figure 5: Signed SAML Assertion Illustrating Conveyance of Subject | |||
| Attribute | Attribute | |||
| 10. Security Considerations | 9. Authentication Service Behavior | |||
| [RFC4474] defined a new role for SIP entities called an | ||||
| authentication service. This document re-uses the concept and hence | ||||
| the same constraints and properties apply to this document. The | ||||
| subsequent text is copied from [RFC4474] and modified to fit to the | ||||
| usage of SAML. | ||||
| Any entity that instantiates the authentication service role MUST | ||||
| possess the private key of a domain certificate. Intermediaries that | ||||
| instantiate this role MUST be capable of authenticating one or more | ||||
| SIP users that can register in that domain. Commonly, this role will | ||||
| be instantiated by a proxy server, since these entities are more | ||||
| likely to have a static hostname, hold a corresponding certificate, | ||||
| and have access to SIP registrar capabilities that allow them to | ||||
| authenticate users in their domain. It is also possible that the | ||||
| authentication service role might be instantiated by an entity that | ||||
| acts as a redirect server, but that is left as a topic for future | ||||
| work. | ||||
| SIP entities that act as an authentication service MUST add a Date | ||||
| header field to SIP requests if one is not already present. | ||||
| Similarly, authentication services MUST add a Content- Length header | ||||
| field to SIP requests if one is not already present; this can help | ||||
| verifiers to double-check that they are hashing exactly as many bytes | ||||
| of message-body as the authentication service when they verify the | ||||
| message. | ||||
| Entities instantiating the authentication service role perform the | ||||
| following steps, in order, to generate an Identity header for a SIP | ||||
| request: | ||||
| Step 1: | ||||
| The authentication service MUST extract the identity of the sender | ||||
| from the request. The authentication service takes this value | ||||
| from the From header field; this AoR will be referred to here as | ||||
| the 'identity field'. If the identity field contains a SIP or SIP | ||||
| Secure (SIPS) URI, the authentication service MUST extract the | ||||
| hostname portion of the identity field and compare it to the | ||||
| domain(s) for which it is responsible (following the procedures in | ||||
| RFC 3261, Section 16.4, used by a proxy server to determine the | ||||
| domain(s) for which it is responsible). If the identity field | ||||
| uses the TEL URI scheme, the policy of the authentication service | ||||
| determines whether or not it is responsible for this identity. If | ||||
| the authentication service is not responsible for the identity in | ||||
| question, it SHOULD process and forward the request normally, but | ||||
| it MUST NOT add a SAML-Info and a SAML-Signature header. | ||||
| Step 2: | ||||
| The authentication service MUST determine whether or not the | ||||
| sender of the request is authorized to claim the identity given in | ||||
| the identity field. In order to do so, the authentication service | ||||
| MUST authenticate the sender of the message. | ||||
| Step 3: | ||||
| The authentication service SHOULD ensure that any preexisting Date | ||||
| header in the request is accurate. Local policy can dictate | ||||
| precisely how accurate the Date must be; a RECOMMENDED maximum | ||||
| discrepancy of ten minutes will ensure that the request is | ||||
| unlikely to upset any verifiers. If the Date header contains a | ||||
| time different by more than ten minutes from the current time | ||||
| noted by the authentication service, the authentication service | ||||
| SHOULD reject the request. This behavior is not mandatory because | ||||
| a user agent client (UAC) could only exploit the Date header in | ||||
| order to cause a request to fail verification; the SAML-Signature | ||||
| header is not intended to provide a source of non-repudiation or a | ||||
| perfect record of when messages are processed. Finally, the | ||||
| authentication service MUST verify that the Date header falls | ||||
| within the validity period of its certificate. | ||||
| Step 4: | ||||
| The authentication service MUST form the signature and add the | ||||
| SAML-Signature header to the request containing this signature. | ||||
| After the SAML-Signature header has been added to the request, the | ||||
| authentication service MUST also add an SAML-Info header. The | ||||
| SAML-Info header contains a URI from which the SAML assertion and | ||||
| a domain certificate can be acquired. | ||||
| Finally, the authentication service MUST forward the message | ||||
| normally. | ||||
| 10. Verifier Behavior | ||||
| When a verifier receives a SIP message containing an SAML-Signature | ||||
| and SAML-Info header, it may inspect these two header fields. | ||||
| Typically, the results of a verification are provided as input to an | ||||
| authorization process that is outside the scope of this document. If | ||||
| an SAML-Info and SAML-Signature header is not present in a request, | ||||
| and one is required by local policy (for example, based on a per- | ||||
| sending-domain policy, or a per-sending-user policy), then a 428 'Use | ||||
| SAML Header' response MUST be sent. | ||||
| In order to verify the identity of the sender of a message, an entity | ||||
| acting as a verifier MUST perform the following steps, in the order | ||||
| here specified. | ||||
| Step 1: | ||||
| The verifier has to acquire the certificate for the signing | ||||
| domain. Implementations supporting this specification SHOULD have | ||||
| some means of retaining domain certificates (in accordance with | ||||
| normal practices for certificate lifetimes and revocation) in | ||||
| order to prevent themselves from needlessly downloading the same | ||||
| certificate every time a request from the same domain is received. | ||||
| Certificates cached in this manner should be indexed by the URI | ||||
| given in the SAML-Info header field value. | ||||
| Provided that the domain certificate used to sign this message is | ||||
| not previously known to the verifier, SIP entities SHOULD discover | ||||
| this certificate by dereferencing the SAML-Info header, unless | ||||
| they have some more efficient implementation-specific way of | ||||
| acquiring certificates for that domain. The domain certificate | ||||
| can be found in the SAML assertion, either by reference or by | ||||
| value. The verifier processes this certificate in the usual ways, | ||||
| including checking that it has not expired, that the chain is | ||||
| valid back to a trusted certification authority (CA), and that it | ||||
| does not appear on revocation lists. Once the certificate is | ||||
| acquired, it MUST be validated following the procedures in RFC | ||||
| 3280 [RFC3280]. If the certificate cannot be validated (it is | ||||
| self-signed and untrusted, or signed by an untrusted or unknown | ||||
| certificate authority, expired, or revoked), the verifier MUST | ||||
| send a 437 'Unsupported Certificate' response. | ||||
| Step 2: | ||||
| The verifier MUST follow the process described in Section 13.4 of | ||||
| [RFC4474] to determine if the signer is authoritative for the URI | ||||
| in the From header field. | ||||
| Step 3: | ||||
| The verifier MUST verify the signature in the SAML-Signature | ||||
| header field, following the procedures for generating the hashed | ||||
| digest-string described in Section 12. If a verifier determines | ||||
| that the signature on the message does not correspond to the | ||||
| reconstructed digest- string, then a 479 'Invalid SAML Assertion' | ||||
| response MUST be returned. | ||||
| Step 4: | ||||
| The verifier MUST validate the Date, Contact, and Call-ID headers. | ||||
| It must furthermore ensure that the value of the Date header falls | ||||
| within the validity period of the certificate whose corresponding | ||||
| private key was used to sign the Identity header. | ||||
| 11. SAML-Info Header Field | ||||
| This document introduces the SIP header field "SAML-Info" to carry a | ||||
| reference to a SAML assertion. This header MAY appear in any SIP | ||||
| header and MAY also appear more than once. | ||||
| The grammar for this header is (following the ABNF [RFC4234] in | ||||
| Section 25 of RFC 3261 [RFC3261]): | ||||
| SAML-Info = | ||||
| "SAML-Info" HCOLON ident-info *( SEMI ident-info-params ) | ||||
| ident-info = LAQUOT absoluteURI RAQUOT | ||||
| ident-info-params = generic-param | ||||
| Figure 6: SAML-Info ABNF grammar | ||||
| The "absoluteURI" portion of the SAML-Info header MUST contain a URI | ||||
| which dereferences to a resource containing a SAML assertion. All | ||||
| implementations of this specification MUST support the use of HTTP | ||||
| and HTTPS URIs in the SAML-Info header. Such HTTP and HTTPS URIs | ||||
| MUST follow the conventions of RFC 2585 [RFC2585], and for those URIs | ||||
| the indicated resource MUST be of the form 'application/ | ||||
| samlassertion+xml' described in that specification. | ||||
| No parameters are defined for the SAML-Info header in this document. | ||||
| Future experimental RFCS may define additional SAML-Info header | ||||
| parameters. | ||||
| This document adds the following entries to Table 2 of RFC 3261 | ||||
| [RFC3261]: | ||||
| Header field where proxy ACK BYE CAN INV OPT REG | ||||
| ------------ ----- ----- --- --- --- --- --- --- | ||||
| SAML-Info R a o o - o o o | ||||
| SUB NOT REF INF UPD PRA | ||||
| --- --- --- --- --- --- | ||||
| o o o o o o | ||||
| Figure 7: New SAML-Info Row for RFC3261 Table 2 | ||||
| The SAML-Info header MUST NOT appear in CANCEL. | ||||
| 12. Extended RFC 4474 SIP Identity Signature Mechanism | ||||
| To allow the SIP Identity mechanism [RFC4474] to protect also the | ||||
| reference to the SAML assertion additional SIP header fields need to | ||||
| be protected by the signature calculation mechanisms. The extended | ||||
| signature computation is included in the SAML-Signature header field. | ||||
| The grammar for this new header is (following the ABNF [RFC4234] in | ||||
| RFC 3261 [RFC3261]): | ||||
| SAML-Signature = "SAML-Signature" HCOLON ( signed-identity-digest | ||||
| sig-info-fields sig-info-alg ) / sig-info-extension | ||||
| signed-identity-digest = LDQUOT 32LHEX RDQUOT | ||||
| sig-info-alg = "alg" EQUAL token | ||||
| sig-info-fields = "fields" EQUAL token | ||||
| sig-info-extension = generic-param | ||||
| The signed-identity-digest is a signed hash of a canonical string | ||||
| generated from certain components of a SIP request. To create the | ||||
| contents of the signed-identity-digest, the following elements of a | ||||
| SIP message MUST be placed in a bit-exact string in the order | ||||
| specified here, separated by a vertical line, "|" or %x7C, character: | ||||
| o The AoR of the UA sending the message, or addr-spec of the From | ||||
| header field (referred to occasionally here as the 'identity | ||||
| field'). | ||||
| o The addr-spec component of the To header field, which is the AoR | ||||
| to which the request is being sent. | ||||
| o The callid from Call-Id header field. | ||||
| o The digit (1*DIGIT) and method (method) portions from CSeq header | ||||
| field, separated by a single space (ABNF SP, or %x20). Note that | ||||
| th CSeq header field allows linear whitespace (LWS) rather than SP | ||||
| to separate the digit and method portions, and thus the CSeq | ||||
| header field may need to be transformed in order to be | ||||
| canonicalized. The authentication service MUST strip leading | ||||
| zeros from the 'digit' portion of the Cseq before generating the | ||||
| digest-string. | ||||
| o The Date header field, with exactly one space each for each SP and | ||||
| the weekday and month items case set as shown in BNF in RFC 3261. | ||||
| RFC 3261 specifies that the BNF for weekday and month is a choice | ||||
| amongst a set of tokens. The RFC 2234 rules for the BNF specify | ||||
| that tokens are case sensitive. However, when used to construct | ||||
| the canonical string defined here, the first letter of each week | ||||
| and month MUST be capitalized, and the remaining two letters must | ||||
| be lowercase. This matches the capitalization provided in the | ||||
| definition of each token. All requests that use the Identity | ||||
| mechanism MUST contain a Date header. | ||||
| o The addr-spec component of the Contact header field value. If the | ||||
| request does not contain a Contact header, this field MUST be | ||||
| empty (i.e., there will be no whitespace between the fourth and | ||||
| fifth "|" characters in the canonical string). | ||||
| o The sig-info-params parameter contains a list of SIP header fields | ||||
| whose values have to be included into the signature calculation. | ||||
| The individual field names in small letters are encoded in the | ||||
| token parameter of the sig-info-fields, each name separated by a | ||||
| "|" character. | ||||
| o The body content of the message with the bits exactly as they are | ||||
| in the Message (in the ABNF for SIP, the message-body). This | ||||
| includes all components of multipart message bodies. Note that | ||||
| the message-body does NOT include the CRLF separating the SIP | ||||
| headers from the message-body, but does include everything that | ||||
| follows that CRLF. If the message has no body, then message-body | ||||
| will be empty, and the final "|" will not be followed by any | ||||
| additional characters. | ||||
| The precise formulation of this digest-string is, therefore | ||||
| (following the ABNF [RFC4234] in RFC 3261 [RFC3261]): | ||||
| digest-string = addr-spec "|" addr-spec "|" callid "|" | ||||
| 1*DIGIT SP Method "|" SIP-date "|" [ addr-spec ] "|" | ||||
| sigfields "|" message-body | ||||
| The signfields parameter represent the concatination of the values of | ||||
| the SIP header fields that are included in the signature calculation. | ||||
| Note again that the first addr-spec MUST be taken from the From | ||||
| header field value, the second addr-spec MUST be taken from the To | ||||
| header field value, and the third addr-spec MUST be taken from the | ||||
| Contact header field value, provided the Contact header is present in | ||||
| the request. | ||||
| After the digest-string is formed, it MUST be hashed and signed with | ||||
| the certificate for the domain. The hashing and signing algorithm is | ||||
| specified by the 'alg' parameter. This document defines only one | ||||
| value for the 'alg' parameter: 'rsa-sha1'. All implementations of | ||||
| this specification MUST support 'rsa-sha1'. When the 'rsa-sha1' | ||||
| algorithm is specified in the 'alg' parameter of Identity-Info, the | ||||
| hash and signature MUST be generated as follows: compute the results | ||||
| of signing this string with sha1WithRSAEncryption as described in RFC | ||||
| 3370 [RFC3370] and base64 encode the results as specified in RFC 3548 | ||||
| [RFC3548]. A 1024-bit or longer RSA key MUST be used. The result is | ||||
| placed in the SAML-Signature header field. | ||||
| This document adds the following entries to Table 2 of RFC 3261 | ||||
| [RFC3261]: | ||||
| Header field where proxy ACK BYE CAN INV OPT REG | ||||
| ------------ ----- ----- --- --- --- --- --- --- | ||||
| SAML-Signature R a o o - o o o | ||||
| SUB NOT REF INF UPD PRA | ||||
| --- --- --- --- --- --- | ||||
| o o o o o o | ||||
| Note, in the table above, that this mechanism does not protect the | ||||
| CANCEL method. The CANCEL method cannot be challenged, because it is | ||||
| hop-by-hop, and accordingly authentication service behavior for | ||||
| CANCEL would be significantly limited. Note as well that the | ||||
| REGISTER method uses Contact header fields in very unusual ways that | ||||
| complicate its applicability to this mechanism, and the use of | ||||
| Identity with REGISTER is consequently a subject for future study, | ||||
| although it is left as optional here for forward-compatibility | ||||
| reasons. The SAML-Signature header MUST NOT appear in CANCEL. | ||||
| 13. Security Considerations | ||||
| This section discusses security considerations when using SAML with | This section discusses security considerations when using SAML with | |||
| SIP. | SIP. | |||
| 10.1. Man-in-the-Middle Attacks and Stolen Assertions | 13.1. Man-in-the-Middle Attacks and Stolen Assertions | |||
| Threat: | Threat: | |||
| By making SAML assertions available via HTTP-based requests by a | By making SAML assertions available via HTTP-based requests by a | |||
| potentially unbounded set of requesters, it is conceivably | potentially unbounded set of requesters, it is conceivably | |||
| possible that anyone would be able to simply request one and | possible that anyone would be able to simply request one and | |||
| obtain it. By SIP intermediaries on the signaling path for | obtain it. By SIP intermediaries on the signaling path for | |||
| example. Or, an HTTP intermediary/proxy could intercept the | example. Or, an HTTP intermediary/proxy could intercept the | |||
| assertion as it is being returned to a requester. | assertion as it is being returned to a requester. | |||
| skipping to change at page 34, line 46 ¶ | skipping to change at page 41, line 46 ¶ | |||
| * should be signed, thus causing any alterations to break its | * should be signed, thus causing any alterations to break its | |||
| integrity and make such alterations detectable. | integrity and make such alterations detectable. | |||
| * relying party is represented in the SAML assertion's Audience | * relying party is represented in the SAML assertion's Audience | |||
| Restriction. | Restriction. | |||
| * Issuer is represented in the SAML assertion. | * Issuer is represented in the SAML assertion. | |||
| * validity period for assertion is restricted. | * validity period for assertion is restricted. | |||
| 10.2. Forged Assertion | 13.2. Forged Assertion | |||
| Threat: | Threat: | |||
| A malicious user could forge or alter a SAML assertion in order to | A malicious user could forge or alter a SAML assertion in order to | |||
| communicate with the SIP entities. | communicate with the SIP entities. | |||
| Countermeasures: | Countermeasures: | |||
| To avoid this kind of attack, the entities must assure that proper | To avoid this kind of attack, the entities must assure that proper | |||
| mechanisms for protecting the SAML assertion are employed, e.g., | mechanisms for protecting the SAML assertion are employed, e.g., | |||
| signing the SAML assertion itself or protecting the transport of | signing the SAML assertion itself. Section 5.1 of | |||
| the SAML assertion from the AS to the verifying party using TLS. | [OASIS.saml-core-2.0-os] specifies the signing of SAML assertions. | |||
| Section 5.1 of [OASIS.saml-core-2.0-os] specifies the signing of | ||||
| SAML assertions. | ||||
| Additionally, the assertion content dictated by the SAML assertion | Additionally, the assertion content dictated by the SAML assertion | |||
| profile herein ensures ample evidence for a relying party to | profile herein ensures ample evidence for a relying party to | |||
| verify the assertion and its relationship with the received SIP | verify the assertion and its relationship with the received SIP | |||
| request. | request. | |||
| 10.3. Replay Attack | 13.3. Replay Attack | |||
| Threat: | Threat: | |||
| Theft of SIP message protected by the mechanisms described herein | Theft of SIP message protected by the mechanisms described herein | |||
| and replay of it at a later time. | and replay of it at a later time. | |||
| Countermeasures: | Countermeasures: | |||
| The SAML assertion may contain several elements to prevent replay | The SAML assertion may contain several elements to prevent replay | |||
| attacks. There is, however, a clear tradeoff between the | attacks. There is, however, a clear tradeoff between the | |||
| replaying an assertion and re-using it over multiple SIP | replaying an assertion and re-using it over multiple SIP | |||
| exchanges/sessions. | exchanges/sessions. | |||
| 11. Contributors | 14. Contributors | |||
| The authors would like to thank Marcus Tegnander and Henning | The authors would like to thank Marcus Tegnander and Henning | |||
| Schulzrinne for his contributions to earlier versions of this | Schulzrinne for his contributions to earlier versions of this | |||
| document. | document. | |||
| 12. Acknowledgments | 15. Acknowledgments | |||
| We would like to thank RL 'Bob' Morgan, Stefan Goeman, Shida | We would like to thank RL 'Bob' Morgan, Stefan Goeman, Shida | |||
| Schubert, Jason Fischl, Sebastian Felis, Nie Pin, Marcos Dytz, Erkki | Schubert, Jason Fischl, Sebastian Felis, Nie Pin, Marcos Dytz, Erkki | |||
| Koivusalo, Richard Barnes, Marc Willekens, Marc Willekens, Steffen | Koivusalo, Richard Barnes, Marc Willekens, Marc Willekens, Steffen | |||
| Fries and Vijay Gurbani for their comments to this draft. The "AS- | Fries and Vijay Gurbani for their comments to this draft. The "AS- | |||
| driven SIP SAML URI-based Attribute Assertion Fetch Profile" is based | driven SIP SAML URI-based Attribute Assertion Fetch Profile" is based | |||
| on an idea by Jon Peterson. | on an idea by Jon Peterson. | |||
| 13. IANA Considerations | We would also like to thank Eric Rescorla for his expert review. | |||
| 13.1. Header Field Names | 16. IANA Considerations | |||
| This document specifies the new SIP header 'SAML-Info'. Their syntax | 16.1. Header Field Names | |||
| is given in Section 9. This header is defined by the following | ||||
| information, which has been added to the header sub-registry under | This document specifies two new SIP header fields: 'SAML-Info' (see | |||
| Section 11 and 'SAML-Signature' (see Section 12). IANA is requested | ||||
| to add these two headers to the header sub-registry under | ||||
| http://www.iana.org/assignments/sip-parameters. | http://www.iana.org/assignments/sip-parameters. | |||
| Header Name: SAML-Info | Header Name: SAML-Info | |||
| Compact Form: y | Compact Form: y | |||
| 13.2. 477 'Binding to SIP Message failed' Response Code | Header Name: SAML-Signature | |||
| Compact Form: y | ||||
| 16.2. 477 'Binding to SIP Message failed' Response Code | ||||
| This document registers a new SIP response code. It is sent when a | This document registers a new SIP response code. It is sent when a | |||
| verifier receives a SAML assertion but the Subject and Condition | verifier receives a SAML assertion but the Subject and Condition | |||
| elements cannot be matched to the content in the SIP message, i.e., | elements cannot be matched to the content in the SIP message, i.e., | |||
| the binding between the SIP message and the SAML assertion cannot be | the binding between the SIP message and the SAML assertion cannot be | |||
| accomplished. This response code is defined by the following | accomplished. This response code is defined by the following | |||
| information, which has been added to the method and response-code | information, which has been added to the method and response-code | |||
| sub-registry under http://www.iana.org/assignments/sip-parameters. | sub-registry under http://www.iana.org/assignments/sip-parameters. | |||
| Response Code Number: 477 | Response Code Number: 477 | |||
| Default Reason Phrase: Binding to SIP Message failed | Default Reason Phrase: Binding to SIP Message failed | |||
| 13.3. 478 'Unknown SAML Assertion Content' Response Code | 16.3. 478 'Unknown SAML Assertion Content' Response Code | |||
| This document registers a new SIP response code. It is used when the | This document registers a new SIP response code. It is used when the | |||
| verifier is unable to parse the content of the SAML assertion, | verifier is unable to parse the content of the SAML assertion, | |||
| because, for example, the assertion contains only unknown elements in | because, for example, the assertion contains only unknown elements in | |||
| in the SAML assertion, or the SAML assertion XML document is garbled. | in the SAML assertion, or the SAML assertion XML document is garbled. | |||
| This response code is defined by the following information, which has | This response code is defined by the following information, which has | |||
| been added to the method and response-code sub-registry under | been added to the method and response-code sub-registry under | |||
| http://www.iana.org/assignments/sip-parameters. | http://www.iana.org/assignments/sip-parameters. | |||
| Response Code Number: 478 | Response Code Number: 478 | |||
| Default Reason Phrase: Unknown SAML Assertion Content | Default Reason Phrase: Unknown SAML Assertion Content | |||
| 13.4. 479 'Invalid SAML Assertion' Response Code | 16.4. 479 'Invalid SAML Assertion' Response Code | |||
| This document registers a new SIP response code. It is used when the | This document registers a new SIP response code. It is used when the | |||
| verifier is unable to process the SAML assertion. A verifier may be | verifier is unable to process the SAML assertion. A verifier may be | |||
| unable to process the SAML assertion in case the assertion is self- | unable to process the SAML assertion in case the assertion is self- | |||
| signed, or signed by a root certificate authority for whom the | signed, or signed by a root certificate authority for whom the | |||
| verifier does not possess a root certificate. This response code is | verifier does not possess a root certificate. This response code is | |||
| defined by the following information, which has been added to the | defined by the following information, which has been added to the | |||
| method and response-code sub-registry under | method and response-code sub-registry under | |||
| http://www.iana.org/assignments/sip-parameters. | http://www.iana.org/assignments/sip-parameters. | |||
| Response Code Number: 479 | Response Code Number: 479 | |||
| Default Reason Phrase: Invalid SAML Assertion | Default Reason Phrase: Invalid SAML Assertion | |||
| 14. Change Log | 16.5. 480 'Use SAML Header' Response Code | |||
| This document registers a new SIP response code. It is used when a | ||||
| SAML-Info and SAML-Signature header is not present in a request, and | ||||
| one is required by local policy (for example, based on a per-sending- | ||||
| domain policy, or a per-sending-user policy). This response code is | ||||
| defined by the following information, which has been added to the | ||||
| method and response-code sub-registry under | ||||
| http://www.iana.org/assignments/sip-parameters. | ||||
| Response Code Number: 480 | ||||
| Default Reason Phrase: Use SAML Header | ||||
| 17. Change Log | ||||
| RFC Editor - Please remove this section before publication. | RFC Editor - Please remove this section before publication. | |||
| 14.1. -04 to -05 | 17.1. -05 to -06 | |||
| In response to the review comments by Eric Rescorla a new signature | ||||
| SIP header field was added. | ||||
| 17.2. -04 to -05 | ||||
| Changed the document type to experimental | Changed the document type to experimental | |||
| Removed option tag | Removed option tag | |||
| Added the Caller-driven SIP SAML Conveyed Assertion Profile | Added the Caller-driven SIP SAML Conveyed Assertion Profile | |||
| Defined a new header (SAML-Info) | Defined a new header (SAML-Info) | |||
| Changed the description for usage with this new header | Changed the description for usage with this new header | |||
| Updated security considerations | Updated security considerations | |||
| Minor editorial cleanups | Minor editorial cleanups | |||
| 14.2. -03 to -04 | 17.3. -03 to -04 | |||
| Updated IANA consideration section. | Updated IANA consideration section. | |||
| Added option tag | Added option tag | |||
| Updated acknowledgments section | Updated acknowledgments section | |||
| Minor editorial changes to the security considerations section | Minor editorial changes to the security considerations section | |||
| 14.3. -02 to -03 | 17.4. -02 to -03 | |||
| Denoted that this I-D is intended to update RFC4474 per SIP working | Denoted that this I-D is intended to update RFC4474 per SIP working | |||
| group consensus at IETF-69. This is the tact adopted in order to | group consensus at IETF-69. This is the tact adopted in order to | |||
| address the impedance mismatch between the nature of the URIs | address the impedance mismatch between the nature of the URIs | |||
| specified as to be placed in the Identity-Info header field, and what | specified as to be placed in the Identity-Info header field, and what | |||
| is specified in RFC4474 as the allowable value of that header field. | is specified in RFC4474 as the allowable value of that header field. | |||
| Added placeholder "TBD" section for a to-be-determined "call-by- | Added placeholder "TBD" section for a to-be-determined "call-by- | |||
| value" profile, per SIP working group consensus at IETF-69. | value" profile, per SIP working group consensus at IETF-69. | |||
| Removed use-case appendicies (per recollection of JHodges during | Removed use-case appendicies (per recollection of JHodges during | |||
| IETF-69 discussion as being WG consensus, but such is not noted in | IETF-69 discussion as being WG consensus, but such is not noted in | |||
| the minutes). | the minutes). | |||
| 14.4. -00 to -02 | 17.5. -00 to -02 | |||
| Will detail in -04 rev. | Will detail in -04 rev. | |||
| 15. References | 18. References | |||
| 15.1. Normative References | 18.1. Normative References | |||
| [OASIS.saml-bindings-2.0-os] | [OASIS.saml-bindings-2.0-os] | |||
| Cantor, S., Hirsch, F., Kemp, J., Philpott, R., and E. | Cantor, S., Hirsch, F., Kemp, J., Philpott, R., and E. | |||
| Maler, "Bindings for the OASIS Security Assertion Markup | Maler, "Bindings for the OASIS Security Assertion Markup | |||
| Language (SAML) V2.0", OASIS | Language (SAML) V2.0", OASIS | |||
| Standard saml-bindings-2.0-os, March 2005. | Standard saml-bindings-2.0-os, March 2005. | |||
| [OASIS.saml-core-2.0-os] | [OASIS.saml-core-2.0-os] | |||
| Cantor, S., Kemp, J., Philpott, R., and E. Maler, | Cantor, S., Kemp, J., Philpott, R., and E. Maler, | |||
| "Assertions and Protocol for the OASIS Security Assertion | "Assertions and Protocol for the OASIS Security Assertion | |||
| skipping to change at page 43, line 8 ¶ | skipping to change at page 50, line 8 ¶ | |||
| [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
| A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
| Schooler, "SIP: Session Initiation Protocol", RFC 3261, | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
| June 2002. | June 2002. | |||
| [RFC3280] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet | [RFC3280] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet | |||
| X.509 Public Key Infrastructure Certificate and | X.509 Public Key Infrastructure Certificate and | |||
| Certificate Revocation List (CRL) Profile", RFC 3280, | Certificate Revocation List (CRL) Profile", RFC 3280, | |||
| April 2002. | April 2002. | |||
| [RFC3370] Housley, R., "Cryptographic Message Syntax (CMS) | ||||
| Algorithms", RFC 3370, August 2002. | ||||
| [RFC3515] Sparks, R., "The Session Initiation Protocol (SIP) Refer | [RFC3515] Sparks, R., "The Session Initiation Protocol (SIP) Refer | |||
| Method", RFC 3515, April 2003. | Method", RFC 3515, April 2003. | |||
| [RFC3548] Josefsson, S., "The Base16, Base32, and Base64 Data | ||||
| Encodings", RFC 3548, July 2003. | ||||
| [RFC3553] Mealling, M., Masinter, L., Hardie, T., and G. Klyne, "An | [RFC3553] Mealling, M., Masinter, L., Hardie, T., and G. Klyne, "An | |||
| IETF URN Sub-namespace for Registered Protocol | IETF URN Sub-namespace for Registered Protocol | |||
| Parameters", BCP 73, RFC 3553, June 2003. | Parameters", BCP 73, RFC 3553, June 2003. | |||
| [RFC3893] Peterson, J., "Session Initiation Protocol (SIP) | [RFC3893] Peterson, J., "Session Initiation Protocol (SIP) | |||
| Authenticated Identity Body (AIB) Format", RFC 3893, | Authenticated Identity Body (AIB) Format", RFC 3893, | |||
| September 2004. | September 2004. | |||
| [RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", RFC 4234, October 2005. | Specifications: ABNF", RFC 4234, October 2005. | |||
| [RFC4474] Peterson, J. and C. Jennings, "Enhancements for | ||||
| Authenticated Identity Management in the Session | ||||
| Initiation Protocol (SIP)", RFC 4474, August 2006. | ||||
| [RFC4484] Peterson, J., Polk, J., Sicker, D., and H. Tschofenig, | [RFC4484] Peterson, J., Polk, J., Sicker, D., and H. Tschofenig, | |||
| "Trait-Based Authorization Requirements for the Session | "Trait-Based Authorization Requirements for the Session | |||
| Initiation Protocol (SIP)", RFC 4484, August 2006. | Initiation Protocol (SIP)", RFC 4484, August 2006. | |||
| [W3C.xmldsig-core] | [W3C.xmldsig-core] | |||
| Eastlake, D., Reagle , J., and D. Solo, "XML-Signature | Eastlake, D., Reagle , J., and D. Solo, "XML-Signature | |||
| Syntax and Processing", W3C Recommendation xmldsig-core, | Syntax and Processing", W3C Recommendation xmldsig-core, | |||
| October 2000, <http://www.w3.org/TR/xmldsig-core/>. | October 2000, <http://www.w3.org/TR/xmldsig-core/>. | |||
| 15.2. Informative References | 18.2. Informative References | |||
| [IANA.application.samlassertion-xml] | [IANA.application.samlassertion-xml] | |||
| OASIS Security Services Technical Committee (SSTC), | OASIS Security Services Technical Committee (SSTC), | |||
| "application/samlassertion+xml MIME Media Type | "application/samlassertion+xml MIME Media Type | |||
| Registration", IANA MIME Media Types Registry application/ | Registration", IANA MIME Media Types Registry application/ | |||
| samlassertion+xml, December 2004. | samlassertion+xml, December 2004. | |||
| [OASIS.saml-conformance-2.0-os] | [OASIS.saml-conformance-2.0-os] | |||
| Mishra, P., Philpott, R., and E. Maler, "Conformance | Mishra, P., Philpott, R., and E. Maler, "Conformance | |||
| Requirements for the Security Assertion Markup Language | Requirements for the Security Assertion Markup Language | |||
| skipping to change at page 45, line 5 ¶ | skipping to change at page 51, line 45 ¶ | |||
| B., and T. Ylonen, "SPKI Certificate Theory", RFC 2693, | B., and T. Ylonen, "SPKI Certificate Theory", RFC 2693, | |||
| September 1999. | September 1999. | |||
| [RFC3281] Farrell, S. and R. Housley, "An Internet Attribute | [RFC3281] Farrell, S. and R. Housley, "An Internet Attribute | |||
| Certificate Profile for Authorization", RFC 3281, | Certificate Profile for Authorization", RFC 3281, | |||
| April 2002. | April 2002. | |||
| [RFC3323] Peterson, J., "A Privacy Mechanism for the Session | [RFC3323] Peterson, J., "A Privacy Mechanism for the Session | |||
| Initiation Protocol (SIP)", RFC 3323, November 2002. | Initiation Protocol (SIP)", RFC 3323, November 2002. | |||
| [RFC4474] Peterson, J. and C. Jennings, "Enhancements for | ||||
| Authenticated Identity Management in the Session | ||||
| Initiation Protocol (SIP)", RFC 4474, August 2006. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Hannes Tschofenig | Hannes Tschofenig | |||
| Nokia Siemens Networks | Nokia Siemens Networks | |||
| Linnoitustie 6 | Linnoitustie 6 | |||
| Espoo 02600 | Espoo 02600 | |||
| Finland | Finland | |||
| Phone: +358 (50) 4871445 | Phone: +358 (50) 4871445 | |||
| Email: Hannes.Tschofenig@gmx.net | Email: Hannes.Tschofenig@gmx.net | |||
| skipping to change at page 46, line 4 ¶ | skipping to change at line 1799 ¶ | |||
| Email: jmpolk@cisco.com | Email: jmpolk@cisco.com | |||
| Douglas C. Sicker | Douglas C. Sicker | |||
| University of Colorado at Boulder | University of Colorado at Boulder | |||
| ECOT 430 | ECOT 430 | |||
| Boulder, CO 80309 | Boulder, CO 80309 | |||
| US | US | |||
| Email: douglas.sicker@colorado.edu | Email: douglas.sicker@colorado.edu | |||
| Full Copyright Statement | ||||
| Copyright (C) The IETF Trust (2008). | ||||
| 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, THE IETF TRUST 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 procedures with respect to rights in RFC 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. | ||||
| End of changes. 110 change blocks. | ||||
| 255 lines changed or deleted | 559 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||