| < draft-ietf-sip-saml-00.txt | draft-ietf-sip-saml-01.txt > | |||
|---|---|---|---|---|
| SIP H. Tschofenig | SIP H. Tschofenig | |||
| Internet-Draft Siemens | Internet-Draft Siemens Networks GmbH & Co KG | |||
| Expires: December 18, 2006 J. Hodges | Intended status: Standards Track J. Hodges | |||
| J. Peterson | Expires: April 26, 2007 J. Peterson | |||
| NeuStar, Inc. | NeuStar, Inc. | |||
| J. Polk | J. Polk | |||
| Cisco | Cisco | |||
| D. Sicker | D. Sicker | |||
| CU Boulder | CU Boulder | |||
| June 16, 2006 | October 23, 2006 | |||
| SIP SAML Profile and Binding | SIP SAML Profile and Binding | |||
| draft-ietf-sip-saml-00.txt | draft-ietf-sip-saml-01.txt | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | 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. | 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 | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| 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 December 18, 2006. | This Internet-Draft will expire on April 26, 2007. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The Internet Society (2006). | Copyright (C) The Internet Society (2006). | |||
| 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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. SAML Introduction . . . . . . . . . . . . . . . . . . . . . . 6 | 3. SAML Introduction . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.1. SAML Assertions . . . . . . . . . . . . . . . . . . . . . 7 | 3.1. SAML Assertions . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.2. Abstract Request/Response Protocol . . . . . . . . . . . . 8 | 3.2. Abstract Request/Response Protocol . . . . . . . . . . . . 9 | |||
| 4. Specification Scope . . . . . . . . . . . . . . . . . . . . . 9 | 4. Specification Scope . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5. Employing SAML in SIP . . . . . . . . . . . . . . . . . . . . 11 | 5. Employing SAML in SIP . . . . . . . . . . . . . . . . . . . . 12 | |||
| 6. SIP SAML Profiles . . . . . . . . . . . . . . . . . . . . . . 13 | 6. SIP SAML Profiles . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 6.1. AS-driven SIP SAML URI-based Attribute Assertion | 6.1. AS-driven SIP SAML URI-based Attribute Assertion | |||
| Fetch Profile . . . . . . . . . . . . . . . . . . . . . . 13 | Fetch Profile . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 6.1.1. Required Information . . . . . . . . . . . . . . . . . 13 | 6.1.1. Required Information . . . . . . . . . . . . . . . . . 14 | |||
| 6.1.2. Profile Overview . . . . . . . . . . . . . . . . . . . 13 | 6.1.2. Profile Overview . . . . . . . . . . . . . . . . . . . 14 | |||
| 6.1.3. Profile Description . . . . . . . . . . . . . . . . . 17 | 6.1.3. Profile Description . . . . . . . . . . . . . . . . . 18 | |||
| 6.1.4. Assertion Profile Description . . . . . . . . . . . . 20 | 6.1.4. Assertion Profile Description . . . . . . . . . . . . 21 | |||
| 6.1.5. Assertion Verification . . . . . . . . . . . . . . . . 23 | 6.1.5. Assertion Verification . . . . . . . . . . . . . . . . 24 | |||
| 7. SAML SIP Binding . . . . . . . . . . . . . . . . . . . . . . . 25 | 7. SAML SIP Binding . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 7.1. SAML HTTP-URI-based SIP Binding . . . . . . . . . . . . . 25 | 7.1. SAML HTTP-URI-based SIP Binding . . . . . . . . . . . . . 26 | |||
| 8. Example SAML Assertions . . . . . . . . . . . . . . . . . . . 26 | 8. Error Codes . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 31 | 8.1. 425 (Bad SAML Assertion) Response Code . . . . . . . . . . 27 | |||
| 9.1. Man-in-the-middle Attacks and Stolen Assertions . . . . . 31 | 8.2. The SAML Reason Protocol . . . . . . . . . . . . . . . . . 27 | |||
| 9.2. Forged Assertion . . . . . . . . . . . . . . . . . . . . . 32 | 8.3. Failure Reasons to be Registered . . . . . . . . . . . . . 28 | |||
| 9.3. Replay Attack . . . . . . . . . . . . . . . . . . . . . . 32 | 8.3.1. SAML Assertion Content Not Supported . . . . . . . . . 28 | |||
| 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 8.3.2. Authentication Statements Desired Instead . . . . . . 28 | |||
| 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 34 | 8.3.3. Authorization Statements Desired Instead . . . . . . . 29 | |||
| 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | 8.3.4. Attribute Statements Desired Instead . . . . . . . . . 29 | |||
| 13. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 8.3.5. Unsupported Content . . . . . . . . . . . . . . . . . 29 | |||
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 37 | 8.3.6. Unable to Dereference . . . . . . . . . . . . . . . . 30 | |||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . . 37 | 8.3.7. Cannot Parse SAML Assertion . . . . . . . . . . . . . 30 | |||
| 14.2. Informative References . . . . . . . . . . . . . . . . . . 38 | 8.3.8. Conflicting SAML Assertions Supplied . . . . . . . . . 30 | |||
| Appendix A. Appendix: Use-case Scenarios . . . . . . . . . . . . 41 | 8.3.9. Insufficient SAML Statements . . . . . . . . . . . . . 31 | |||
| A.1. PSTN-to-SIP Phone Call . . . . . . . . . . . . . . . . . . 41 | 8.3.10. Dereference Timeout . . . . . . . . . . . . . . . . . 31 | |||
| A.2. SIP Conferencing . . . . . . . . . . . . . . . . . . . . . 42 | 9. Example SAML Assertions . . . . . . . . . . . . . . . . . . . 32 | |||
| A.3. Compensation using SIP and SAML . . . . . . . . . . . . . 44 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 37 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 46 | 10.1. Man-in-the-middle Attacks and Stolen Assertions . . . . . 37 | |||
| Intellectual Property and Copyright Statements . . . . . . . . . . 47 | 10.2. Forged Assertion . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 10.3. Replay Attack . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
| 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 39 | ||||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 40 | ||||
| 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 | ||||
| 13.1. IANA Registration for Response Code 4XX . . . . . . . . . 41 | ||||
| 13.2. IANA Registration of the SAML Reason Protocol . . . . . . 41 | ||||
| 14. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 42 | ||||
| 15. References . . . . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
| 15.1. Normative References . . . . . . . . . . . . . . . . . . . 43 | ||||
| 15.2. Informative References . . . . . . . . . . . . . . . . . . 44 | ||||
| Appendix A. Appendix: Use-case Scenarios . . . . . . . . . . . . 47 | ||||
| A.1. PSTN-to-SIP Phone Call . . . . . . . . . . . . . . . . . . 47 | ||||
| A.2. SIP Conferencing . . . . . . . . . . . . . . . . . . . . . 48 | ||||
| A.3. Compensation using SIP and SAML . . . . . . . . . . . . . 50 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 52 | ||||
| Intellectual Property and Copyright Statements . . . . . . . . . . 53 | ||||
| 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 [I-D.ietf-sipping-trait- | with use-case scenarios, are presented in | |||
| authz]. | [I-D.ietf-sipping-trait-authz]. | |||
| 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-tech- | [OASIS.sstc-saml-exec-overview-2.0-cd-01] and | |||
| overview-2.0-draft-08] provide non-normative overviews of SAMLv2. | [OASIS.sstc-saml-tech-overview-2.0-draft-08] provide non-normative | |||
| The SAMLv2 specification set is normatively defined by [OASIS.saml- | overviews of SAMLv2. The SAMLv2 specification set is normatively | |||
| 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 | |||
| skipping to change at page 6, line 7 ¶ | skipping to change at page 7, line 7 ¶ | |||
| one or more attributes of a "user profile". | one or more attributes of a "user profile". | |||
| user profile, subject profile: | user profile, subject profile: | |||
| the set of various attributes accompanying (i.e., mapped to) a | the set of various attributes accompanying (i.e., mapped to) a | |||
| user account in many environments. | user account in many environments. | |||
| 3. SAML Introduction | 3. SAML Introduction | |||
| SAML [OASIS.sstc-saml-exec-overview-2.0-cd-01] [OASIS.sstc-saml-tech- | SAML [OASIS.sstc-saml-exec-overview-2.0-cd-01] | |||
| overview-2.0-draft-08] defines an XML-based framework for exchanging | [OASIS.sstc-saml-tech-overview-2.0-draft-08] defines an XML-based | |||
| "security assertions" between entities. In the course of making, or | framework for exchanging "security assertions" between entities. In | |||
| relying upon such assertions, SAML system entities may use SAML | the course of making, or relying upon such assertions, SAML system | |||
| protocols, or other protocols, to communicate an assertion itself, or | entities may use SAML protocols, or other protocols, to communicate | |||
| 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 "Alice | |||
| has these profile attributes and her domain's certificate is | 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. | |||
| skipping to change at page 9, line 12 ¶ | skipping to change at page 10, line 12 ¶ | |||
| 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 -- aka a "SIP SAML profile" -- such | o Specify a SIP profile of SAML -- aka a "SIP SAML profile" -- such | |||
| that a subject's profile attributes, and their domain's | that a subject's profile attributes, and their domain's | |||
| certificate, can be conveyed to a relying party using SAML. In | certificate, can be conveyed to a relying party using SAML. In | |||
| doing so, satisfy the requirements outlined in [I-D.ietf-sipping- | doing so, satisfy the requirements outlined in | |||
| trait-authz], and compose with [I-D.ietf-sip-identity]. | [I-D.ietf-sipping-trait-authz], and compose with | |||
| [I-D.ietf-sip-identity]. | ||||
| 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 9, line 41 ¶ | skipping to change at page 10, line 42 ¶ | |||
| This specification defines a facility enabling "trait-based | This specification defines a facility enabling "trait-based | |||
| authorization" as discussed in [I-D.ietf-sipping-trait-authz]. | authorization" as discussed in [I-D.ietf-sipping-trait-authz]. | |||
| The attributes of interest in trait-based authorization will be | The attributes of interest in trait-based authorization will be | |||
| ones akin to, for example: roles, organizational membership, | ones akin to, for example: roles, organizational membership, | |||
| access rights, or authentication event context. Definition of | access rights, or authentication event context. Definition of | |||
| such attributes is application- and/or deployment-context- | such attributes is application- and/or deployment-context- | |||
| dependent and are not defined in this specification. However, The | dependent and are not defined in this specification. However, The | |||
| SAMLv2 specification defines several "SAML Attribute Profiles" for | SAMLv2 specification defines several "SAML Attribute Profiles" for | |||
| encoding attributes from various application domains, e.g., LDAP, | encoding attributes from various application domains, e.g., LDAP, | |||
| UUID/GUID, DCE PAC, and XACML, in SAML assertions [OASIS.saml- | UUID/GUID, DCE PAC, and XACML, in SAML assertions | |||
| profiles-2.0-os]. | [OASIS.saml-profiles-2.0-os]. | |||
| In order for any trait-based system to be practical, participating | In order for any trait-based system to be practical, participating | |||
| entities must agree on attributes and traits that will be conveyed | entities must agree on attributes and traits that will be conveyed | |||
| and subsequently relied upon. Without such agreements, a trait- | and subsequently relied upon. Without such agreements, a trait- | |||
| based system cannot be usefully deployed. This specification does | based system cannot be usefully deployed. This specification does | |||
| not discuss the manner in which participating entites might | not discuss the manner in which participating entites might | |||
| discover one another or agree on the syntax and semantics of | discover one another or agree on the syntax and semantics of | |||
| attributes and traits. | attributes and traits. | |||
| 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 the those already specified in the SAMLv2 | binding(s) because the 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). This is technically | |||
| straigh-forward as both SAML and SIP are explicitly extensible. | straightforward as both SAML and SIP are explicitly extensible. | |||
| The "Authenticated Identity Management in SIP" specification | The "Authenticated Identity Management in SIP" specification | |||
| [I-D.ietf-sip-identity] (aka "SIP Identity") facilitates the | [I-D.ietf-sip-identity] (aka "SIP Identity") facilitates the | |||
| composition of SAML and SIP in that it defines a "mediated | composition of SAML and SIP in that it defines a "mediated | |||
| authentication architecture" where verifying endpoints verify SIP | authentication architecture" where verifying endpoints verify SIP | |||
| identity assertions -- i.e., the "Identity" header value -- signed by | identity assertions -- i.e., the "Identity" header value -- signed by | |||
| an Authentication Service (AS). The semantic being that the AS is | an Authentication Service (AS). The semantic being that the AS is | |||
| vouching that it did indeed authenticate the calling party. | vouching that it did 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 | |||
| skipping to change at page 12, line 41 ¶ | skipping to change at page 13, line 41 ¶ | |||
| | |<==================== | | | |<==================== | | |||
| | | and domain cert | | | | and domain cert | | |||
| | | | | | | | | |||
| | | HTTP 200 OK + assn | | | | HTTP 200 OK + assn | | |||
| | |=====================>| | | |=====================>| | |||
| | | and domain cert | | | | and domain cert | | |||
| | 200 OK | | | | 200 OK | | | |||
| |<----------------------+----------------------| | |<----------------------+----------------------| | |||
| | | | | | | | | |||
| Figure 1: SIP-SAML-based Network Asserted Identity | Figure 1: SIP-SAML-based Network Asserted Identity | |||
| Since the AS already being trusted to create and add the Identity | Since the AS already being trusted to create and add the Identity | |||
| header containing the SIP Identity Assertion, and to supply a pointer | header containing the SIP Identity Assertion, and to supply a pointer | |||
| to its domain certificate, having it point instead to a SAML | to its domain certificate, having it point instead to a SAML | |||
| assertion conveying the domain certificate and possibly some user | assertion conveying the domain certificate and possibly some user | |||
| profile attributes, does not significantly alter the first-order | profile attributes, does not significantly alter the first-order | |||
| security considerations examined in [I-D.ietf-sip-identity]. This | security considerations examined in [I-D.ietf-sip-identity]. This | |||
| specification provides some additional security considerations | specification provides some additional security considerations | |||
| analysis below in Section 9. | analysis below in Section 10. | |||
| 6. SIP SAML Profiles | 6. SIP SAML Profiles | |||
| This section defines one SIP SAML profile: | This section defines one SIP SAML profile: | |||
| The "AS-driven SIP SAML URI-based Attribute Assertion Fetch | The "AS-driven SIP SAML URI-based Attribute Assertion Fetch | |||
| Profile" | Profile" | |||
| 6.1. AS-driven SIP SAML URI-based Attribute Assertion Fetch Profile | 6.1. AS-driven SIP SAML URI-based Attribute Assertion Fetch Profile | |||
| 6.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 [OASIS.saml- | See Section 2 "Specification of Additional Profiles" in | |||
| 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 | |||
| @@ NOTE: This URN must be agreed upon, and then registered with | @@ NOTE: This URN must be agreed upon, and then registered with | |||
| IANA per [RFC3553]. | IANA per [RFC3553]. | |||
| Contact Information: | Contact Information: | |||
| @@ someone's or something's contact info goes here | @@ someone's or something's contact info goes here | |||
| SAML Confirmation Method Identifiers: | SAML Confirmation Method Identifiers: | |||
| The SAML V2.0 "{bearer,hok,?}" confirmation method identifier is | The SAML V2.0 "{bearer,hok,?}" confirmation method identifier is | |||
| used in this profile. | used in this profile. | |||
| skipping to change at page 16, line 10 ¶ | skipping to change at page 17, line 10 ¶ | |||
| | | | | <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 2: 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 2. In this step, the caller, Alice, sends a | and 1c in Figure 2. In this step, the caller, Alice, sends | |||
| SIP request message, illustrated as an INVITE, indicating Bob | a SIP request message, illustrated as an INVITE, indicating | |||
| 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 [I-D.ietf-sip-identity] and | 1 was skipped, as specified in [I-D.ietf-sip-identity] and | |||
| [RFC3261]. Depending on the chosen SIP security mechanism | [RFC3261]. Depending on the chosen SIP security mechanism | |||
| either digest authentication, S/MIME or Transport Layer | for client authentication either digest authentication, | |||
| Security is used to provide the AS with a strong assurance | client side authentication of Transport Layer Security, or a | |||
| about the identity of Alice. | combination of both is used to provide the AS with a strong | |||
| assurance 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 [I-D.ietf-sip-identity] and [RFC3261]. If the | specified in [I-D.ietf-sip-identity] and [RFC3261]. If the | |||
| authorization is successful, the AS will form the "identity | authorization is successful, the AS will form the "identity | |||
| signature" for the message and add Identity and Identity-Info | signature" for the message and add Identity and Identity- | |||
| headers to the message. The AS also at this time constructs | Info header fields to the message. The AS also at this time | |||
| and caches a SAML assertion asserting Alice's profile | constructs and caches a SAML assertion asserting Alice's | |||
| attributes required by Bob's domain (example2.com), and also | profile attributes required by Bob's domain (example2.com), | |||
| containing a the domain's (example.com) public key | and also containing a the domain's (example.com) public key | |||
| certificate, or a reference to it. This certificate MUST | certificate, or a reference to it. This certificate MUST | |||
| contain the public key corresponding to the private key used | contain the public key corresponding to the private key used | |||
| to construct the signature whose value was placed in the | to construct the signature whose value was placed in the | |||
| Identity header. The AS constructs a HTTP-based SAML URI | Identity header. The AS constructs a HTTP-based SAML URI | |||
| Reference incorporating the assertion's Assertion ID (see | Reference incorporating the assertion's Assertion ID (see | |||
| section 2.3.3 of [OASIS.saml-core-2.0-os]). The AS uses this | section 2.3.3 of [OASIS.saml-core-2.0-os]). The AS uses | |||
| URI as the value for the Identity-Info header it adds to the | this URI as the value for the Identity-Info header it adds | |||
| INVITE message. | to the INVITE message. | |||
| The AS determines which profile attributes (if any) to assert | The AS determines which profile attributes (if any) to | |||
| in the <AttributeStatement> via local configuration and/or | assert in the <AttributeStatement> via local configuration | |||
| 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 begins | |||
| verifying it per the "Verifier Behavior" specified in | verifying it per the "Verifier Behavior" specified in | |||
| [I-D.ietf-sip-identity]. In order to accomplish this task, | [I-D.ietf-sip-identity]. In order to accomplish this task, | |||
| it needs to obtain Alice's domain certificate. It obtains | it needs to obtain Alice's domain certificate. It obtains | |||
| the HTTP-based SAML URI Reference from the message's | the HTTP-based SAML URI Reference from the message's | |||
| Identity-Info header and dereferences it per Section 7.1. | Identity-Info header and dereferences it per Section 7.1. | |||
| Note that this is not a SIP message, but an HTTP message | Note that this is not a SIP message, but an HTTP message | |||
| [RFC2616]. | [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 AS continues its | |||
| verification of the INVITE message. If successful, it | verification of the INVITE message. If successful, it | |||
| returns a 200 OK message directly to Alice. Otherwise it | returns a 200 OK message directly to Alice. Otherwise it | |||
| returns an appropriate SIP error response. | returns an appropriate SIP error response. | |||
| 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 by | If Bob determines, based upon Alice's identity as asserted | |||
| the AS, and as further substantiated by the information in | by the AS, and as further substantiated by the information | |||
| the SAML assertion, to accept the INVITE, he returns a SIP | in the SAML assertion, to accept the INVITE, he returns a | |||
| 200 OK message directly to Alice. | SIP 200 OK message directly to Alice. | |||
| 6.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 3, 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. | |||
| +------------------+ +------------------+ +------------------+ | +------------------+ +------------------+ +------------------+ | |||
| skipping to change at page 18, line 41 ¶ | skipping to change at page 19, line 41 ¶ | |||
| | |<=====================| (4) | | |<=====================| (4) | |||
| | | (via HTTP) | | | | (via HTTP) | | |||
| | | | | | | | | |||
| | | HTTP/1.1 200 OK | | | | HTTP/1.1 200 OK | | |||
| | |=====================>| (5) | | |=====================>| (5) | |||
| | | | | | | | | |||
| | | | | | | | | |||
| | | ? | (6) | | | ? | (6) | |||
| | | | | | | | | |||
| Figure 3: AS-driven SIP SAML Attribute Fetch Profile: Message Flow | Figure 3: AS-driven SIP SAML Attribute Fetch Profile: Message Flow | |||
| 6.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 [I-D.ietf-sip-identity]. If the SIP request | Service Behavior" of [I-D.ietf-sip-identity]. If the SIP request | |||
| sent by the caller in substep 1a is deemed insufficiently | sent by the caller in substep 1a is deemed insufficiently | |||
| authenticated by the AS per the rules stipulated by [I-D.ietf-sip- | authenticated by the AS per the rules stipulated by | |||
| identity] Steps 1 and 2, then the AS MUST authenticate the sender of | [I-D.ietf-sip-identity] Steps 1 and 2, then the AS MUST authenticate | |||
| the message. The particulars of how this is accomplished depend upon | the sender of the message. The particulars of how this is | |||
| implementation and/or deployment instantiation as discussed in | accomplished depend upon implementation and/or deployment | |||
| instantiation as discussed in [I-D.ietf-sip-identity]. Substeps 1b | ||||
| [I-D.ietf-sip-identity]. Substeps 1b and 1c as shown in Figure 3 are | and 1c as shown in Figure 3 are non-normative and illustrative only. | |||
| non-normative and illustrative only. | ||||
| 6.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 [I-D.ietf-sip-identity]. This request is presumed to be | Behavior" of [I-D.ietf-sip-identity]. This request is presumed to be | |||
| made in a context such that the AS will not challenge it -- i.e., the | made in a context such that the AS will not challenge it -- i.e., the | |||
| AS will consider the sender of the message to be authenticated. If | AS will consider the sender of the message to be authenticated. If | |||
| this is not true, then this procedure reverts back to Step 1, above. | this is not true, then this procedure reverts back to Step 1, above. | |||
| skipping to change at page 19, line 36 ¶ | skipping to change at page 20, line 35 ¶ | |||
| 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 6.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 SHOULD construct an HTTPS, and MAY construct an HTTP, URI | |||
| per Section "3.7.5.1 URI Syntax" of [OASIS.saml-bindings-2.0-os]. | per Section "3.7.5.1 URI Syntax" of [OASIS.saml-bindings-2.0-os]. | |||
| 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 Identity-Info header that is added to | substep as the value of the Identity-Info header that is added to | |||
| the SIP request message per Step 4 of Section 5 of [I-D.ietf-sip- | the SIP request message per Step 4 of Section 5 of | |||
| identity]. | [I-D.ietf-sip-identity]. | |||
| 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 [I-D.ietf-sip- | are specified in Section 6 "Verifier Behavior" of | |||
| identity]. The verifier MUST perform the steps enumerated in the | [I-D.ietf-sip-identity]. The verifier MUST perform the steps | |||
| aforementioned section, with the following modifications: | enumerated in the aforementioned section, with the following | |||
| modifications: | ||||
| Step 1 of [I-D.ietf-sip-identity] Section 6 maps to and is updated | Step 1 of [I-D.ietf-sip-identity] Section 6 maps to and is updated | |||
| by, the following two steps in this procedure. | by, the following two steps in this procedure. | |||
| Steps 2, 3, and 4 of [I-D.ietf-sip-identity] Section 6 may be | Steps 2, 3, and 4 of [I-D.ietf-sip-identity] Section 6 may be | |||
| mapped across this latter portion of this step, and/or the | mapped across this latter portion of this step, and/or the | |||
| following two steps, as appropriate. | following two steps, as appropriate. | |||
| 6.1.3.4. Verifier Dereferences HTTP-based SAML URI Reference | 6.1.3.4. Verifier Dereferences HTTP-based SAML URI Reference | |||
| skipping to change at page 20, line 48 ¶ | skipping to change at page 21, line 48 ¶ | |||
| SIP request it received. | SIP request it received. | |||
| 6.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 8. | given in Section 9. | |||
| Overall SAML assertion profile requirements: | Overall SAML assertion profile requirements: | |||
| The SAML assertion MUST be signed by the same key as used to sign | The SAML assertion MUST be signed by the same key as used to sign | |||
| the contents of the Identity header field. Signing of SAML | the contents of the Identity header field. Signing of SAML | |||
| assertions is defined in Section 5.4 of [OASIS.saml-core-2.0-os]. | 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 | |||
| skipping to change at page 22, line 45 ¶ | skipping to change at page 23, line 50 ¶ | |||
| 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. | |||
| 6.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 [OASIS.saml- | one of the "SAML Attribute Profiles" as specified in | |||
| profiles-2.0-os], or encoded in some implementation- and/or | [OASIS.saml-profiles-2.0-os], or encoded in some implementation- | |||
| 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. | |||
| 6.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 [I-D.ietf-sip-identity]. | specified in Section 6 of [I-D.ietf-sip-identity]. | |||
| skipping to change at page 26, 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. | |||
| 8. Example SAML Assertions | 8. Error Codes | |||
| 8.1. 425 (Bad SAML Assertion) Response Code | ||||
| If a UAS or SIP intermediary detects an error in a request message | ||||
| specific to the location information, a new 4XX level error is | ||||
| created here to indicate a problem with the request message. This | ||||
| document creates and IANA registers the new error code: | ||||
| 425 (Bad SAML Assertion) | ||||
| The 425 (Bad SAML Assertion) response code is a rejection of the | ||||
| content of a SAML assertion within the original SIP Request | ||||
| indicating the SAML assertion was malformed or not satisfactory for | ||||
| the recipient's purpose or could not be dereferenced. No further | ||||
| action by the UAC is required. | ||||
| The UAC can use means outside the scope of this document to ensure | ||||
| that subsequent requests are going to contain SAML assertions that | ||||
| are acceptable to the UAS. There is no cross-transaction awareness | ||||
| expected by either the UAS or SIP intermediary as a result of this | ||||
| error message. | ||||
| More resolution of the error for which the 425 was generated MAY be | ||||
| included in a Reason header [RFC3326]. For these more granular | ||||
| location specific errors, the 'protocol' in the Reason header is | ||||
| 'SAML', defined in Section 3.4. of RFC 3326 [RFC3326] states that the | ||||
| Reason Header normally is not found in a response. This document | ||||
| extends the use of Reason to include its use within a 425 response. | ||||
| This new error code is IANA registered in Section 9 of this document. | ||||
| An initial set of error codes can be found in Section 8. | ||||
| 8.2. The SAML Reason Protocol | ||||
| For use with the Reason header, discussed in Section 8.1, this | ||||
| document defines and IANA registers a new Reason Protocol per RFC | ||||
| 3326 [RFC3326]. | ||||
| Protocol Value Protocol Cause Reference | ||||
| SAML Status RFCyyyy (i.e., this document) | ||||
| 8.3. Failure Reasons to be Registered | ||||
| Here is the list and description of each IANA registered location | ||||
| error reason code. If the location generator were to receive one of | ||||
| these indications in a SIP response, it would be in a Reason header. | ||||
| The protocol field of this Reason header would be "SAML", as defined | ||||
| in Section 8.2. Examples of the Reason header are given for each | ||||
| indication below. | ||||
| 8.3.1. SAML Assertion Content Not Supported | ||||
| "SAML Assertion Content Not Supported" means the SAML content | ||||
| supplied in the request was not processed even though the recipient | ||||
| understood SAML. If the SAML content is understood, but not desired, | ||||
| a cause=2 or cause=3 response SHOULD be returned. | ||||
| Cause value: 1 | ||||
| Default text string: SAML Assertion Content Not Supported | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=1; SAML Assertion Content Not Supported | ||||
| 8.3.2. Authentication Statements Desired Instead | ||||
| "Authentication Statements Desired Instead" means the SAML assertion | ||||
| supplied in the request was understood and supported, but that the | ||||
| recipient, or an application on the recipient demands authentication | ||||
| statements. | ||||
| Cause value: 2 | ||||
| Default text string: Authentication Statements Desired Instead | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=2; Authentication Statements Desired Instead | ||||
| 8.3.3. Authorization Statements Desired Instead | ||||
| "Authorization Statements Desired Instead" means the SAML assertion | ||||
| supplied in the request was understood and supported, but that the | ||||
| recipient, or an application on the recipient demands authorization | ||||
| statements. | ||||
| Cause value: 3 | ||||
| Default text string: Authorization Statements Desired Instead | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=3; Authorization Statements Desired Instead | ||||
| 8.3.4. Attribute Statements Desired Instead | ||||
| "Attribute Statements Desired Instead" means the SAML assertion | ||||
| supplied in the request was understood and supported, but that the | ||||
| recipient, or an application on the recipient demands attribute | ||||
| statements. | ||||
| Cause value: 4 | ||||
| Default text string: Attribute Statements Desired Instead | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=4; Attribute Statements Desired Instead | ||||
| 8.3.5. Unsupported Content | ||||
| "Unsupported Content" means the recipient encounters a problem with | ||||
| the content of the SAML assertion. | ||||
| Cause value: 5 | ||||
| Default text string: Unsupported Content | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=5; Unsupported Content | ||||
| 8.3.6. Unable to Dereference | ||||
| "Unable to Dereference" means the recipient cannot resolve the | ||||
| reference to a SAML assertion. This may mean the URI is bad, or the | ||||
| indicated server had some other error or rejected the request. | ||||
| Cause value: 6 | ||||
| Default text string: Unable to Dereference | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=6; Unable to Dereference | ||||
| 8.3.7. Cannot Parse SAML Assertion | ||||
| "Cannot Parse SAML Assertion" means the SAML assertion is not well | ||||
| formed. | ||||
| Cause value: 7 | ||||
| Default text string: Cannot Parse SAML Assertion | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=7; Cannot Parse SAML Assertion | ||||
| 8.3.8. Conflicting SAML Assertions Supplied | ||||
| "Conflicting SAML Assertions Supplied" means a recipient received | ||||
| more than one SAML assertion and their content is conflicting | ||||
| Cause value: 8 | ||||
| Default text string: Conflicting SAML Assertion Supplied | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=8; Conflicting SAML Assertion Supplied | ||||
| 8.3.9. Insufficient SAML Statements | ||||
| "Insufficient SAML Statements" means there is not enough information | ||||
| in the SAML assertion to sufficiently authenticate or authorize the | ||||
| requesting party. | ||||
| Cause value: 9 | ||||
| Default text string: Insufficient SAML Statements | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=9; Insufficient SAML Statements | ||||
| 8.3.10. Dereference Timeout | ||||
| "Dereference Timeout" means that the dereferencing node has not | ||||
| received a response within a reasonable timeframe. | ||||
| Cause value: 10 | ||||
| Default text string: Dereference Timeout | ||||
| An example usage in a SIP Reason header: | ||||
| Reason: SAML; cause=10; Dereference Timeout | ||||
| 9. 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 5, the assertion is attesting with | In the first example, Figure 16, 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 9.1 and Section 9.2. | dicussions, see: Section 10.1 and Section 10.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 27, line 43 ¶ | skipping to change at page 33, 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 5: Unsigned SAML Assertion Illustrating Conveyance of | Figure 16: Unsigned SAML Assertion Illustrating Conveyance of | |||
| Subject Attribute | Subject Attribute | |||
| In the second example, Figure 6, the information described above is | In the second example, Figure 17, 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 30, line 35 ¶ | skipping to change at page 36, 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 6: Signed SAML Assertion Illustrating Conveyance of Subject | Figure 17: Signed SAML Assertion Illustrating Conveyance of Subject | |||
| Attribute | Attribute | |||
| 9. Security Considerations | 10. Security Considerations | |||
| This section discusses security considerations when using SAML with | This section discusses security considerations when using SAML with | |||
| SIP. | SIP. | |||
| 9.1. Man-in-the-middle Attacks and Stolen Assertions | 10.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 32, line 7 ¶ | skipping to change at page 38, line 7 ¶ | |||
| * 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. | |||
| * etc. | * etc. | |||
| 9.2. Forged Assertion | 10.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. Section 5.1 of [OASIS.saml- | signing the SAML assertion itself. Section 5.1 of | |||
| core-2.0-os] specifies the signing of SAML assertions. | [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. | |||
| 9.3. Replay Attack | 10.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: | |||
| There are various provisions within [I-D.ietf-sip-identity] that | There are various provisions within [I-D.ietf-sip-identity] that | |||
| prevent a replay attack. | prevent a replay attack. | |||
| 10. Contributors | 11. 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. | |||
| 11. Acknowledgments | 12. 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 and Vijay Gurbani for their comments to this | Schubert, Jason Fischl and Vijay Gurbani for their comments to this | |||
| draft. The "AS-driven SIP SAML URI-based Attribute Assertion Fetch | draft. The "AS-driven SIP SAML URI-based Attribute Assertion Fetch | |||
| Profile" is based on an idea by Jon Peterson. | Profile" is based on an idea by Jon Peterson. | |||
| 12. IANA Considerations | 13. IANA Considerations | |||
| [Editor's Note: A future version of this document will provide IANA | 13.1. IANA Registration for Response Code 4XX | |||
| considerations.] | ||||
| 13. Open Issues | Reference: RFC-XXXX (i.e. this document) | |||
| Response code: 425 | ||||
| Default reason phrase: Bad SAML Assertion | ||||
| This SIP Response code is defined in Section 8.1 of this document. | ||||
| 13.2. IANA Registration of the SAML Reason Protocol | ||||
| The Reason Protocol value "SAML" is created by this document, with | ||||
| the definition and values in Section 8.1. | ||||
| Cause-Code Optional-Default-Text Reference | ||||
| ---------- --------------------- --------- | ||||
| Cause=1 Location Format Not Supported [This doc] | ||||
| Cause=2 Geo-location Format Desired [This doc] | ||||
| Cause=3 Civic-location Format Desired [This doc] | ||||
| Cause=4 Unsupported Schema [This doc] | ||||
| Cause=5 Cannot Parse Location Supplied [This doc] | ||||
| Cause=6 Cannot Find Location [This doc] | ||||
| Cause=7 Cannot Dereference [This doc] | ||||
| Cause=8 Conflicting Locations Supplied [This doc] | ||||
| Cause=9 Incomplete Location Supplied [This doc] | ||||
| Cause=10 Dereference Timeout [This doc] | ||||
| Cause=11 Cannot Process Dereference [This doc] | ||||
| Cause=400 Bad Request [This doc] | ||||
| Cause=403 Forbidden [This doc] | ||||
| Cause=404 Not Found [This doc] | ||||
| Cause=414 Location Error [This doc] | ||||
| Cause=500 Server Internal Error [This doc] | ||||
| Cause=501 Service Not Implemented [This doc] | ||||
| Cause=504 Server Time-Out [This doc] | ||||
| Legend: | ||||
| ------ | ||||
| Cause-Code - Cause value for this indication | ||||
| Optional-Default-Text - optional text string of indication | ||||
| Reference - document which is the reference for this | ||||
| cause value | ||||
| 14. Open Issues | ||||
| A list of open issues can be found at: | A list of open issues can be found at: | |||
| http://www.tschofenig.com:8080/saml-sip/ | http://www.tschofenig.com:8080/saml-sip/ | |||
| 14. References | 15. References | |||
| 14.1. Normative References | 15.1. Normative References | |||
| [I-D.ietf-sip-identity] | [I-D.ietf-sip-identity] | |||
| Peterson, J. and C. Jennings, "Enhancements for | Peterson, J. and C. Jennings, "Enhancements for | |||
| Authenticated Identity Management in the Session | Authenticated Identity Management in the Session | |||
| Initiation Protocol (SIP)", draft-ietf-sip-identity-06 | Initiation Protocol (SIP)", draft-ietf-sip-identity-06 | |||
| (work in progress), October 2005. | (work in progress), October 2005. | |||
| [I-D.ietf-sipping-trait-authz] | [I-D.ietf-sipping-trait-authz] | |||
| Peterson, J., "Trait-based Authorization Requirements for | Peterson, J., "Trait-based Authorization Requirements for | |||
| the Session Initiation Protocol (SIP)", | the Session Initiation Protocol (SIP)", | |||
| skipping to change at page 38, line 16 ¶ | skipping to change at page 44, line 16 ¶ | |||
| [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. | |||
| [RFC3326] Schulzrinne, H., Oran, D., and G. Camarillo, "The Reason | ||||
| Header Field for the Session Initiation Protocol (SIP)", | ||||
| RFC 3326, December 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. | |||
| [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. | |||
| [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/>. | |||
| 14.2. Informative References | 15.2. Informative References | |||
| [I-D.ietf-sip-content-indirect-mech] | [I-D.ietf-sip-content-indirect-mech] | |||
| Burger, E., "A Mechanism for Content Indirection in | Burger, E., "A Mechanism for Content Indirection in | |||
| Session Initiation Protocol (SIP) Messages", | Session Initiation Protocol (SIP) Messages", | |||
| draft-ietf-sip-content-indirect-mech-05 (work in | draft-ietf-sip-content-indirect-mech-05 (work in | |||
| progress), October 2004. | progress), October 2004. | |||
| [I-D.ietf-sipping-certs] | [I-D.ietf-sipping-certs] | |||
| Jennings, C. and J. Peterson, "Certificate Management | Jennings, C. and J. Peterson, "Certificate Management | |||
| Service for The Session Initiation Protocol (SIP)", | Service for The Session Initiation Protocol (SIP)", | |||
| draft-ietf-sipping-certs-03 (work in progress), | draft-ietf-sipping-certs-03 (work in progress), | |||
| March 2006. | March 2006. | |||
| [I-D.jennings-sipping-pay] | [I-D.jennings-sipping-pay] | |||
| Jennings, C., "Payment for Services in Session Initiation | Jennings, C., "Payment for Services in Session Initiation | |||
| Protocol (SIP)", draft-jennings-sipping-pay-03 (work in | Protocol (SIP)", draft-jennings-sipping-pay-04 (work in | |||
| progress), October 2005. | progress), June 2006. | |||
| [I-D.peterson-message-identity] | [I-D.peterson-message-identity] | |||
| Peterson, J., "Security Considerations for Impersonation | Peterson, J., "Security Considerations for Impersonation | |||
| and Identity in Messaging Systems", | and Identity in Messaging Systems", | |||
| draft-peterson-message-identity-00 (work in progress), | draft-peterson-message-identity-00 (work in progress), | |||
| October 2004. | October 2004. | |||
| [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 | |||
| skipping to change at page 42, line 25 ¶ | skipping to change at page 48, line 25 ¶ | |||
| | | +--------+ | | | | +--------+ | | |||
| O | | Bob's | | | O | | Bob's | | | |||
| O /|\ <----+----| SIP | | | O /|\ <----+----| SIP | | | |||
| /|\ / \ SIP | | Proxy | | | /|\ / \ SIP | | Proxy | | | |||
| / \ Bob | | | | | / \ Bob | | | | | |||
| Alice | +--------+ | | Alice | +--------+ | | |||
| | SIP based | | | SIP based | | |||
| | Network | | | Network | | |||
| +---------------------+ | +---------------------+ | |||
| Figure 7: PSTN to SIP call | Figure 20: PSTN to SIP call | |||
| Note that the INVITE emitted by the PSTN/SIP gateway could | Note that the INVITE emitted by the PSTN/SIP gateway could | |||
| alternatively be simply forwarded by Bob's SIP Proxy to Bob's phone, | alternatively be simply forwarded by Bob's SIP Proxy to Bob's phone, | |||
| and Bob's phone could take on the SIP Identity "verifier" role, which | and Bob's phone could take on the SIP Identity "verifier" role, which | |||
| is being played by Bob's SIP proxy in the figure. | is being played by Bob's SIP proxy in the figure. | |||
| Whichever approach is employed is a decision local to Bob's | Whichever approach is employed is a decision local to Bob's | |||
| administrative domain and can be made independently. | administrative domain and can be made independently. | |||
| A.2. SIP Conferencing | A.2. SIP Conferencing | |||
| skipping to change at page 42, line 50 ¶ | skipping to change at page 48, line 50 ¶ | |||
| conferencing server may want or need various of her profile | conferencing server may want or need various of her profile | |||
| attributes included and may also need to be authenticated by the | attributes included and may also need to be authenticated by the | |||
| conference server. The following properties could be provided by | conference server. The following properties could be provided by | |||
| this procedure: | this procedure: | |||
| o The user identity can be replaced to allow the user to be | o The user identity can be replaced to allow the user to be | |||
| anonymous with regard to the Focus. This can be accomplished via | anonymous with regard to the Focus. This can be accomplished via | |||
| [RFC3323] in combination with [I-D.ietf-sip-identity], per the | [RFC3323] in combination with [I-D.ietf-sip-identity], per the | |||
| latter, or, | latter, or, | |||
| o The user identity could be asserted to the Focus, via [I-D.ietf- | o The user identity could be asserted to the Focus, via | |||
| sip-identity] mechanisms, and/or, | [I-D.ietf-sip-identity] mechanisms, and/or, | |||
| o the SAML assertion could provide additional user profile | o the SAML assertion could provide additional user profile | |||
| information such as group membership (belongs to the students, | information such as group membership (belongs to the students, | |||
| staff, faculty group of university X). This could, for non- | staff, faculty group of university X). This could, for non- | |||
| identity-based authorization systems, imply certain rights. | identity-based authorization systems, imply certain rights. | |||
| The corresponding SIP message flow (in high level detail) could have | The corresponding SIP message flow (in high level detail) could have | |||
| the following shape: | the following shape: | |||
| +-----+ +-----------+ +-----------+ | +-----+ +-----------+ +-----------+ | |||
| skipping to change at page 43, line 47 ¶ | skipping to change at page 49, line 47 ¶ | |||
| | OK |<------------------| | | OK |<------------------| | |||
| |<------------------| | | |<------------------| | | |||
| | | | | | | | | |||
| | ACK | | | | ACK | | | |||
| |------------------>| ACK | | |------------------>| ACK | | |||
| | |------------------>| | | |------------------>| | |||
| | | | | | | | | |||
| | | | | | | | | |||
| ... many more msgs... | ... many more msgs... | |||
| Figure 8: SIP Conferencing and SAML | Figure 21: SIP Conferencing and SAML | |||
| However, there are obvious scaling issues with the conference server | However, there are obvious scaling issues with the conference server | |||
| having to do the outbound requests in order to obtain SAML assertions | having to do the outbound requests in order to obtain SAML assertions | |||
| and certificates for conference participants. | and certificates for conference participants. | |||
| This could be addressed by creating another SIP SAML Profile where | This could be addressed by creating another SIP SAML Profile where | |||
| the caller obtains the necessary information, e.g., SAML assertions, | the caller obtains the necessary information, e.g., SAML assertions, | |||
| and places them into its SIP request message prior to sending it. | and places them into its SIP request message prior to sending it. | |||
| This would obviate the need for the callee relying party to make | This would obviate the need for the callee relying party to make | |||
| requests in order to obtain said information. This is a topic for | requests in order to obtain said information. This is a topic for | |||
| future work, and possibly future revisions of this specification. | future work, and possibly future revisions of this specification. | |||
| A.3. Compensation using SIP and SAML | A.3. Compensation using SIP and SAML | |||
| This section describes a scenario where SAML is used in SIP to | This section describes a scenario where SAML is used in SIP to | |||
| realize compensation functionality as described in [I-D.jennings- | realize compensation functionality as described in | |||
| sipping-pay]. | [I-D.jennings-sipping-pay]. | |||
| Note that this scenario is not directly addressed by the SIP SAML | Note that this scenario is not directly addressed by the SIP SAML | |||
| Profile and SAML SIP Binding presently defined in this specification. | Profile and SAML SIP Binding presently defined in this specification. | |||
| Rather, this use case calls for additional such profiles and bindings | Rather, this use case calls for additional such profiles and bindings | |||
| to be developed. | to be developed. | |||
| +--------+ +--------+ +--------+ | +--------+ +--------+ +--------+ | |||
| |Payment | | User | |Merchant| | |Payment | | User | |Merchant| | |||
| |Provider| | Alice | |Bob | | |Provider| | Alice | |Bob | | |||
| | | | | | | | | | | | | | | |||
| skipping to change at page 45, line 4 ¶ | skipping to change at page 51, line 4 ¶ | |||
| | | | | | | | | |||
| | 4) SAML Assertion | | | | 4) SAML Assertion | | | |||
| | (=Receipt) | | | | (=Receipt) | | | |||
| |---------------------->| | | |---------------------->| | | |||
| | | 5) Call + Receipt | | | | 5) Call + Receipt | | |||
| | |------------------------>| | | |------------------------>| | |||
| | | | | | | | | |||
| | | 6) 200 OK | | | | 6) 200 OK | | |||
| | |<------------------------| | | |<------------------------| | |||
| | | | | | | | | |||
| Figure 22: Message flow for SIP payment | ||||
| Figure 9: Message flow for SIP payment | ||||
| User Alice and the Merchant Bob interact with each other using SIP | User Alice and the Merchant Bob interact with each other using SIP | |||
| and the Alice uses HTTP to exchange messages with a Payment Provider. | and the Alice uses HTTP to exchange messages with a Payment Provider. | |||
| Initially, Alice makes a call to Bob (1). Bob determines that a | Initially, Alice makes a call to Bob (1). Bob determines that a | |||
| payment is required and includes information about the payment in an | payment is required and includes information about the payment in an | |||
| Offer body of a 402 (Payment Required) response to Alice (2). Alice | Offer body of a 402 (Payment Required) response to Alice (2). Alice | |||
| looks at this Offer and decides to make a payment. Alice therefore | looks at this Offer and decides to make a payment. Alice therefore | |||
| instructs her Payment Provider to make a transfer from Alice"s | instructs her Payment Provider to make a transfer from Alice"s | |||
| account to the Merchants"s account (3) using a request for a SAML | account to the Merchants"s account (3) using a request for a SAML | |||
| assertion with the extensions defined in this document. The Payment | assertion with the extensions defined in this document. The Payment | |||
| skipping to change at page 46, line 8 ¶ | skipping to change at page 52, line 8 ¶ | |||
| Provider made the transaction and protects the Receipt with a digital | Provider made the transaction and protects the Receipt with a digital | |||
| signature. Alice resubmits the call to the Merchant Bob with the | signature. Alice resubmits the call to the Merchant Bob with the | |||
| Receipt from the Payment Provier. Merchant Bob can check for replay | Receipt from the Payment Provier. Merchant Bob can check for replay | |||
| attacks using the timestamp and a replay protection indiciator | attacks using the timestamp and a replay protection indiciator | |||
| initially provided with the Offer. Bob can then check the signature | initially provided with the Offer. Bob can then check the signature | |||
| is valid using the Payment Provider"s public key. | is valid using the Payment Provider"s public key. | |||
| Authors' Addresses | Authors' Addresses | |||
| Hannes Tschofenig | Hannes Tschofenig | |||
| Siemens | Siemens Networks GmbH & Co KG | |||
| Otto-Hahn-Ring 6 | Otto-Hahn-Ring 6 | |||
| Munich, Bavaria 81739 | Munich, Bavaria 81739 | |||
| Germany | Germany | |||
| Email: Hannes.Tschofenig@siemens.com | Email: Hannes.Tschofenig@siemens.com | |||
| Jeff Hodges | Jeff Hodges | |||
| NeuStar, Inc. | NeuStar, Inc. | |||
| 2000 Broadway Street | 2000 Broadway Street | |||
| Redwood City, CA 94063 | Redwood City, CA 94063 | |||
| skipping to change at page 47, line 5 ¶ | skipping to change at page 53, line 5 ¶ | |||
| 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 | |||
| Intellectual Property Statement | Full Copyright Statement | |||
| Copyright (C) The Internet Society (2006). | ||||
| This document is subject to the rights, licenses and restrictions | ||||
| contained in BCP 78, and except as set forth therein, the authors | ||||
| retain all their rights. | ||||
| This document and the information contained herein are provided on an | ||||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | ||||
| ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
| INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
| INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
| Intellectual Property | ||||
| The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
| Intellectual Property Rights or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
| pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
| this document or the extent to which any license under such rights | 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 | might or might not be available; nor does it represent that it has | |||
| made any independent effort to identify any such rights. Information | made any independent effort to identify any such rights. Information | |||
| on the procedures with respect to rights in RFC documents can be | on the procedures with respect to rights in RFC documents can be | |||
| found in BCP 78 and BCP 79. | found in BCP 78 and BCP 79. | |||
| skipping to change at page 47, line 29 ¶ | skipping to change at page 53, line 45 ¶ | |||
| such proprietary rights by implementers or users of this | such proprietary rights by implementers or users of this | |||
| specification can be obtained from the IETF on-line IPR repository at | specification can be obtained from the IETF on-line IPR repository at | |||
| http://www.ietf.org/ipr. | http://www.ietf.org/ipr. | |||
| The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
| rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
| this standard. Please address the information to the IETF at | this standard. Please address the information to the IETF at | |||
| ietf-ipr@ietf.org. | ietf-ipr@ietf.org. | |||
| Disclaimer of Validity | ||||
| This document and the information contained herein are provided on an | ||||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | ||||
| ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
| INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
| INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
| Copyright Statement | ||||
| Copyright (C) The Internet Society (2006). 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. | ||||
| Acknowledgment | Acknowledgment | |||
| Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is provided by the IETF | |||
| Internet Society. | Administrative Support Activity (IASA). | |||
| End of changes. 67 change blocks. | ||||
| 192 lines changed or deleted | 443 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/ | ||||