draft-ietf-oauth-saml2-bearer-00.txt | draft-ietf-oauth-saml2-bearer-01.txt | |||
---|---|---|---|---|
B. Campbell, Ed. | B. Campbell, Ed. | |||
Internet-Draft Ping Identity Corp. | Internet-Draft Ping Identity Corp. | |||
Intended status: Standards Track C. Mortimore | Intended status: Standards Track C. Mortimore | |||
Expires: June 19, 2011 Salesforce.com | Expires: August 1, 2011 Salesforce.com | |||
December 16, 2010 | January 28, 2011 | |||
SAML 2.0 Bearer Assertion Grant Type Profile for OAuth 2.0 | SAML 2.0 Bearer Assertion Grant Type Profile for OAuth 2.0 | |||
draft-ietf-oauth-saml2-bearer-00 | draft-ietf-oauth-saml2-bearer-01 | |||
Abstract | Abstract | |||
This specification defines the use of a SAML 2.0 bearer Assertion as | This specification defines the use of a SAML 2.0 bearer Assertion as | |||
means for requesting an OAuth 2.0 access token. | means for requesting an OAuth 2.0 access token. | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
skipping to change at page 1, line 32 | skipping to change at page 1, line 32 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
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." | |||
This Internet-Draft will expire on June 19, 2011. | This Internet-Draft will expire on August 1, 2011. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2010 IETF Trust and the persons identified as the | Copyright (c) 2011 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Notational Conventions . . . . . . . . . . . . . . . . . . 3 | 1.1. Notational Conventions . . . . . . . . . . . . . . . . . . 3 | |||
2. SAML Assertion Access Token Request . . . . . . . . . . . . . 3 | 2. SAML Assertion Access Token Request . . . . . . . . . . . . . 4 | |||
2.1. Client Requests Access Token . . . . . . . . . . . . . . . 4 | 2.1. Client Requests Access Token . . . . . . . . . . . . . . . 4 | |||
2.2. Assertion Format and Processing Requirements . . . . . . . 5 | 2.2. Assertion Format and Processing Requirements . . . . . . . 5 | |||
2.3. Error Response . . . . . . . . . . . . . . . . . . . . . . 6 | 2.3. Error Response . . . . . . . . . . . . . . . . . . . . . . 7 | |||
2.4. Example (non-normative) . . . . . . . . . . . . . . . . . 7 | 2.4. Example (non-normative) . . . . . . . . . . . . . . . . . 7 | |||
3. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.1. Parameter Registration Request . . . . . . . . . . . . . . 9 | 4.1. Parameter Registration Request . . . . . . . . . . . . . . 9 | |||
Appendix A. Contributors . . . . . . . . . . . . . . . . . . . . 9 | Appendix A. Contributors . . . . . . . . . . . . . . . . . . . . 9 | |||
Appendix B. Document History . . . . . . . . . . . . . . . . . . 10 | Appendix B. Document History . . . . . . . . . . . . . . . . . . 10 | |||
5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.1. Normative References . . . . . . . . . . . . . . . . . . . 11 | 5.1. Normative References . . . . . . . . . . . . . . . . . . . 11 | |||
5.2. Informative References . . . . . . . . . . . . . . . . . . 11 | 5.2. Informative References . . . . . . . . . . . . . . . . . . 12 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
1. Introduction | 1. Introduction | |||
The Security Assertion Markup Language (SAML) 2.0 | The Security Assertion Markup Language (SAML) 2.0 | |||
[OASIS.saml-core-2.0-os], is an XML-based framework that allows for | [OASIS.saml-core-2.0-os] is an XML-based framework that allows for | |||
identity and security information to be shared across security | identity and security information to be shared across security | |||
domains. The SAML specification, while primarily targeted at | domains. The SAML specification, while primarily targeted at | |||
providing cross domain web browser single sign-on, was also designed | providing cross domain web browser single sign-on, was also designed | |||
to be modular and extensible to facilitate use in other contexts. | to be modular and extensible to facilitate use in other contexts. | |||
The Assertion, an XML security token, is a fundamental construct of | The Assertion, an XML security token, is a fundamental construct of | |||
SAML that is often adopted for use in other protocols and | SAML that is often adopted for use in other protocols and | |||
specifications. An Assertion is generally issued by an identity | specifications. An Assertion is generally issued by an identity | |||
provider and consumed by a service provider who relies on its content | provider and consumed by a service provider who relies on its content | |||
to identify the Assertion's subject for security related purposes. | to identify the Assertion's subject for security related purposes. | |||
The OAuth 2.0 Protocol Framework [I-D.ietf.oauth-v2] provides a | The OAuth 2.0 Authorization Protocol [I-D.ietf.oauth-v2] provides a | |||
method for making authenticated HTTP requests to a resource using an | method for making authenticated HTTP requests to a resource using an | |||
access token. Access tokens are issued to third-party clients by an | access token. Access tokens are issued to third-party clients by an | |||
authorization server (AS) with the (sometimes implicit) approval of | authorization server (AS) with the (sometimes implicit) approval of | |||
the resource owner. OAuth defines multiple profiles for obtaining | the resource owner. In OAuth, an authorization grant is an abstract | |||
access tokens to support a wide range of client types and user | term used to describe intermediate credentials that represent the | |||
experiences. One such method is one in which the client trades an | resource owner authorization. An authorization grant is used by the | |||
'assertion' (not specifically a SAML Assertion) for an access token | client to obtain an access token. Several authorization grant types | |||
using the so-called 'assertion grant_type'. However OAuth 2.0 leaves | are defined to support a wide range of client types and user | |||
the specific format and validation of the assertion out of scope. | experiences. OAuth also allows for the definition of new extension | |||
grant types in companion specifications (such as this one) to support | ||||
additional clients or to provide a bridge between OAuth and other | ||||
trust frameworks. | ||||
This specification profiles the use of a SAML 2.0 bearer Assertion in | This specification defines an extension grant type that profiles the | |||
requesting an access token using the assertion grant_type from OAuth | use of a SAML 2.0 bearer Assertion in requesting an OAuth 2.0 access | |||
2.0. The format and processing rules for the SAML Assertion defined | token. The format and processing rules for the SAML Assertion | |||
in this specification are intentionally similar, though not | defined in this specification are intentionally similar, though not | |||
identical, to those in the Web Browser SSO Profile defined in | identical, to those in the Web Browser SSO Profile defined in | |||
[OASIS.saml-profiles-2.0-os] reusing, to the extent reasonable, | [OASIS.saml-profiles-2.0-os] reusing, to the extent reasonable, | |||
concepts and patterns from that well-established profile. | concepts and patterns from that well-established profile. | |||
1.1. Notational Conventions | 1.1. Notational Conventions | |||
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 RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
skipping to change at page 4, line 24 | skipping to change at page 4, line 30 | |||
| |<--(B)---- Access Token ---------<| | | | |<--(B)---- Access Token ---------<| | | |||
| | | | | | | | | | |||
+--------+ +---------------+ | +--------+ +---------------+ | |||
Figure 1: Assertion Access Token Request | Figure 1: Assertion Access Token Request | |||
The request/response flow illustrated in Figure 1 includes the | The request/response flow illustrated in Figure 1 includes the | |||
following steps: | following steps: | |||
(A) The client sends an access token request to the authorization | (A) The client sends an access token request to the authorization | |||
server with an appropriate OAuth grant_type and includes a SAML | server with the appropriate OAuth grant_type and includes a SAML | |||
2.0 Assertion. | 2.0 Assertion. | |||
(B) The authorization server validates the Assertion per the | (B) The authorization server validates the Assertion per the | |||
processing rules defined in this specification and issues an | processing rules defined in this specification and issues an | |||
access token. | access token. | |||
2.1. Client Requests Access Token | 2.1. Client Requests Access Token | |||
The client includes the Assertion in the access token request, the | The client includes the Assertion in the access token request, the | |||
core details of which are defined in OAuth [I-D.ietf.oauth-v2], by | core details of which are defined in OAuth [I-D.ietf.oauth-v2], by | |||
skipping to change at page 6, line 4 | skipping to change at page 6, line 10 | |||
was delivered. | was delivered. | |||
* The <SubjectConfirmationData> element MUST have a NotOnOrAfter | * The <SubjectConfirmationData> element MUST have a NotOnOrAfter | |||
attribute that limits the window during which the Assertion can | attribute that limits the window during which the Assertion can | |||
be confirmed. The authorization server MUST verify that the | be confirmed. The authorization server MUST verify that the | |||
NotOnOrAfter instant has not passed, subject to allowable clock | NotOnOrAfter instant has not passed, subject to allowable clock | |||
skew between systems. The authorization server MAY ensure that | skew between systems. The authorization server MAY ensure that | |||
bearer Assertions are not replayed, by maintaining the set of | bearer Assertions are not replayed, by maintaining the set of | |||
used ID values for the length of time for which the Assertion | used ID values for the length of time for which the Assertion | |||
would be considered valid based on the NotOnOrAfter attribute | would be considered valid based on the NotOnOrAfter attribute | |||
in the <SubjectConfirmationData>. | in the <SubjectConfirmationData>. The authorization server MAY | |||
reject assertions with a NotOnOrAfter instant that is | ||||
unreasonably far in the future. | ||||
* The <SubjectConfirmationData> element MAY also contain an | * The <SubjectConfirmationData> element MAY also contain an | |||
Address attribute limiting the client address from which the | Address attribute limiting the client address from which the | |||
Assertion can be delivered. Verification of the Address is at | Assertion can be delivered. Verification of the Address is at | |||
the discretion of the authorization server. | the discretion of the authorization server. | |||
o If the Assertion issuer authenticated the subject, the Assertion | o If the Assertion issuer authenticated the subject, the Assertion | |||
SHOULD contain a single <AuthnStatement> representing that | SHOULD contain a single <AuthnStatement> representing that | |||
authentication event. | authentication event. | |||
skipping to change at page 9, line 31 | skipping to change at page 9, line 31 | |||
No additional considerations beyond those described within the OAuth | No additional considerations beyond those described within the OAuth | |||
2.0 Protocol Framework [I-D.ietf.oauth-v2] and in the Security and | 2.0 Protocol Framework [I-D.ietf.oauth-v2] and in the Security and | |||
Privacy Considerations for the OASIS Security Assertion Markup | Privacy Considerations for the OASIS Security Assertion Markup | |||
Language (SAML) V2.0 [OASIS.saml-sec-consider-2.0-os]. | Language (SAML) V2.0 [OASIS.saml-sec-consider-2.0-os]. | |||
4. IANA Considerations | 4. IANA Considerations | |||
4.1. Parameter Registration Request | 4.1. Parameter Registration Request | |||
The following is the parameter registration request, as defined in | The following is the parameter registration request, as defined in | |||
The OAuth Parameters Registry of The OAuth 2.0 Protocol Framework | The OAuth Parameters Registry of The OAuth 2.0 Authorization Protocol | |||
[I-D.ietf.oauth-v2], for the "assertion" parameter: | [I-D.ietf.oauth-v2], for the "assertion" parameter: | |||
Parameter name: assertion | o Parameter name: assertion | |||
Parameter usage location: The token endpoint request. | ||||
Change controller: IETF | o Parameter usage location: token request | |||
Specification document(s): draft-ietf-oauth-saml2-bearer | o Change controller: IETF | |||
Related information: None | o Specification document(s): draft-ietf-oauth-saml2-bearer | |||
Appendix A. Contributors | Appendix A. Contributors | |||
The following people contributed wording and concepts to this | The following people contributed wording and concepts to this | |||
document: Paul Madsen, Patrick Harding, Peter Motyka, Eran Hammer- | document: Paul Madsen, Patrick Harding, Peter Motyka, Eran Hammer- | |||
Lahav, Peter Saint-Andre, Ian Barnett, Eric Fazendin, Torsten | Lahav, Peter Saint-Andre, Ian Barnett, Eric Fazendin, Torsten | |||
Lodderstedt, Scott Cantor and David Waite | Lodderstedt, Scott Cantor and David Waite | |||
Appendix B. Document History | Appendix B. Document History | |||
[[ to be removed by RFC editor before publication as an RFC ]] | [[ to be removed by RFC editor before publication as an RFC ]] | |||
draft-campbell-oauth-saml-00 | draft-ietf-oauth-saml2-bearer-01 | |||
o Update spec name when referencing draft-ietf-oauth-v2 (The OAuth | ||||
2.0 Protocol Framework -> The OAuth 2.0 Authorization Protocol) | ||||
o Update wording in Introduction to talk about extension grant types | ||||
rather than the assertion grant type which is a term no longer | ||||
used in OAuth 2.0 | ||||
o Updated to reference draft-ietf-oauth-v2-12 and denote as work in | ||||
progress | ||||
o Update Parameter Registration Request to use similar terms as | ||||
draft-ietf-oauth-v2-12 and remove Related information part | ||||
o Add some text giving discretion to AS on rejecting assertions with | ||||
unreasonably long validity window. | ||||
draft-ietf-oauth-saml2-bearer-00 | ||||
o Added Parameter Registration Request for "assertion" to IANA | o Added Parameter Registration Request for "assertion" to IANA | |||
Considerations. | Considerations. | |||
o Changed document name to draft-ietf-oauth-saml2-bearer in | o Changed document name to draft-ietf-oauth-saml2-bearer in | |||
anticipation of becoming a OAUTH WG item. | anticipation of becoming a OAUTH WG item. | |||
o Attempt to move the entire definition of the 'assertion' parameter | o Attempt to move the entire definition of the 'assertion' parameter | |||
into this draft (it will no longer be defined in OAuth 2 Protocol | into this draft (it will no longer be defined in OAuth 2 Protocol | |||
Framework). | Framework). | |||
skipping to change at page 11, line 20 | skipping to change at page 11, line 37 | |||
draft-campbell-oauth-saml-00 | draft-campbell-oauth-saml-00 | |||
o Initial I-D | o Initial I-D | |||
5. References | 5. References | |||
5.1. Normative References | 5.1. Normative References | |||
[I-D.ietf.oauth-v2] | [I-D.ietf.oauth-v2] | |||
Hammer-Lahav, E., Ed., Recordon, D., and D. Hardt, "The | Hammer-Lahav, E., Ed., Recordon, D., and D. Hardt, "The | |||
OAuth 2.0 Protocol Framework", ID draft-ietf-oauth-v2-11, | OAuth 2.0 Authorization Protocol", | |||
Dec 2010. | ID draft-ietf-oauth-v2-12 (work in progress), Dec 2010. | |||
[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 | |||
Markup Language (SAML) V2.0", OASIS Standard saml-core- | Markup Language (SAML) V2.0", OASIS Standard saml-core- | |||
2.0-os, March 2005. | 2.0-os, March 2005. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
skipping to change at page 12, line 6 | skipping to change at page 12, line 24 | |||
Security Assertion Markup Language (SAML) V2.0", OASIS | Security Assertion Markup Language (SAML) V2.0", OASIS | |||
Standard OASIS.saml-profiles-2.0-os, March 2005. | Standard OASIS.saml-profiles-2.0-os, March 2005. | |||
[OASIS.saml-sec-consider-2.0-os] | [OASIS.saml-sec-consider-2.0-os] | |||
Hirsch, F., Philpott, R., and E. Maler, "Security and | Hirsch, F., Philpott, R., and E. Maler, "Security and | |||
Privacy Considerations for the OASIS Security Markup | Privacy Considerations for the OASIS Security Markup | |||
Language (SAML) V2.0", OASIS Standard saml-sec-consider- | Language (SAML) V2.0", OASIS Standard saml-sec-consider- | |||
2.0-os, March 2005. | 2.0-os, March 2005. | |||
[W3C.REC-html401-19991224] | [W3C.REC-html401-19991224] | |||
Hors, A., Jacobs, I., and D. Raggett, "HTML 4.01 | Hors, A., Raggett, D., and I. Jacobs, "HTML 4.01 | |||
Specification", World Wide Web Consortium | Specification", World Wide Web Consortium | |||
Recommendation REC-html401-19991224, December 1999, | Recommendation REC-html401-19991224, December 1999, | |||
<http://www.w3.org/TR/1999/REC-html401-19991224>. | <http://www.w3.org/TR/1999/REC-html401-19991224>. | |||
Authors' Addresses | Authors' Addresses | |||
Brian Campbell (editor) | Brian Campbell (editor) | |||
Ping Identity Corp. | Ping Identity Corp. | |||
Email: brian.d.campbell@gmail.com | Email: brian.d.campbell@gmail.com | |||
End of changes. 21 change blocks. | ||||
33 lines changed or deleted | 54 lines changed or added | |||
This html diff was produced by rfcdiff 1.40. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |