< draft-mills-kitten-sasl-oauth-03.txt   draft-mills-kitten-sasl-oauth-04.txt >
KITTEN W. Mills KITTEN W. Mills
Internet-Draft T. Showalter Internet-Draft T. Showalter
Intended status: Standards Track Yahoo! Inc. Intended status: Standards Track Yahoo! Inc.
Expires: January 2, 2012 H. Tschofenig Expires: May 3, 2012 H. Tschofenig
Nokia Siemens Networks Nokia Siemens Networks
July 1, 2011 October 31, 2011
Tunneled HTTP Authentication For SASL A SASL and GSS-API Mechanism for OAuth
draft-mills-kitten-sasl-oauth-03.txt draft-mills-kitten-sasl-oauth-04.txt
Abstract Abstract
Simple Authentication and Security Layer (SASL) is a framework for OAuth enables a third-party application to obtain limited access to a
providing authentication and data security services in connection- protected resource, either on behalf of a resource owner by
oriented protocols via replaceable mechanisms. OAuth is a protocol orchestrating an approval interaction, or by allowing the third-party
framework for delegated HTTP authentication and thereby provides a application to obtain access on its own behalf.
method for clients to access a protected resource on behalf of a
resource owner.
This document defines the use of HTTP authentication over SASL, and This document defines how an application client uses OAuth over the
additionally defines authorization and token issuing endpoint Simple Authentication and Security Layer (SASL) or the Generic
discovery. Thereby, it enables schemes defined within the OAuth Security Service Application Program Interface (GSS-API) to access a
framework for non-HTTP-based application protocols. protected resource at a resource serve, and additionally defines
authorization and token issuing endpoint discovery. Thereby, it
enables schemes defined within the OAuth framework for non-HTTP-based
application protocols.
A significant benefit of OAuth for usage in clients that usually Clients typically store the user's long term credential. This does,
store passwords is storing tokens instead of passwords. This is much however, lead to significant security vulnerabilities, for example,
lower risk since tokens can be more limited in scope of access and when such a credential leaks. A significant benefit of OAuth for
can be managed and revoked separately from the user credential usage in those clients is that the password is replaced by a token.
Tokens typically provided limited access rights and can be managed
and revoked separately from the user's long-term credential
(password). (password).
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.
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 May 3, 2012.
This Internet-Draft will expire on January 2, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2011 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 . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. The OAuth SASL Mechanism . . . . . . . . . . . . . . . . . . . 7 3. OAuth SASL Mechanism Specification . . . . . . . . . . . . . . 8
3.1. Channel Binding . . . . . . . . . . . . . . . . . . . . . 7 3.1. Channel Binding . . . . . . . . . . . . . . . . . . . . . 8
3.1.1. Generating channel binding data to be exchanged . . . 7
3.2. Initial Client Response . . . . . . . . . . . . . . . . . 8 3.2. Initial Client Response . . . . . . . . . . . . . . . . . 8
3.2.1. Query String in OAUTH-PLUS . . . . . . . . . . . . . . 8 3.2.1. Query String in OAUTH-PLUS . . . . . . . . . . . . . . 9
3.3. Server's Response . . . . . . . . . . . . . . . . . . . . 9 3.3. Server's Response . . . . . . . . . . . . . . . . . . . . 9
3.3.1. Mapping to SASL Identities . . . . . . . . . . . . . . 9 3.4. Mapping to SASL Identities . . . . . . . . . . . . . . . . 10
3.4. Discovery Information . . . . . . . . . . . . . . . . . . 10 3.5. Discovery Information . . . . . . . . . . . . . . . . . . 10
3.5. Use of Signature Type Authorization . . . . . . . . . . . 11 3.6. Use of Signature Type Authorization . . . . . . . . . . . 12
4. Implementation Requirements . . . . . . . . . . . . . . . . . 13 4. GSS-API OAuth Mechanism Specification . . . . . . . . . . . . 14
5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1. Successful Bearer Token Exchange . . . . . . . . . . . . . 14 5.1. Successful Bearer Token Exchange . . . . . . . . . . . . . 15
5.2. MAC Authentication with Channel Binding . . . . . . . . . 14 5.2. MAC Authentication with Channel Binding . . . . . . . . . 15
5.3. Failed Exchange . . . . . . . . . . . . . . . . . . . . . 15 5.3. Failed Exchange . . . . . . . . . . . . . . . . . . . . . 16
5.4. Failed Channel Binding . . . . . . . . . . . . . . . . . . 16 5.4. Failed Channel Binding . . . . . . . . . . . . . . . . . . 17
6. Security Considerations . . . . . . . . . . . . . . . . . . . 17 6. Security Considerations . . . . . . . . . . . . . . . . . . . 18
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
7.1. SASL Registration . . . . . . . . . . . . . . . . . . . . 18 7.1. SASL Registration . . . . . . . . . . . . . . . . . . . . 19
7.2. Link Type Registration . . . . . . . . . . . . . . . . . . 18 7.2. GSS-API Registration . . . . . . . . . . . . . . . . . . . 19
7.2.1. OAuth 2 Authentication Endpoint . . . . . . . . . . . 18 7.3. Link Type Registration . . . . . . . . . . . . . . . . . . 19
7.2.2. OAuth 2 Token Endpoint . . . . . . . . . . . . . . . . 19 7.3.1. OAuth 2 Authentication Endpoint . . . . . . . . . . . 19
7.2.3. OAuth 1.0a Request Initiation Endpoint . . . . . . . . 19 7.3.2. OAuth 2 Token Endpoint . . . . . . . . . . . . . . . . 20
7.2.4. OAuth 1.0a Authorization Endpoint . . . . . . . . . . 19 7.3.3. OAuth 1.0a Request Initiation Endpoint . . . . . . . . 20
7.2.5. OAuth 1.0a Token Endpoint . . . . . . . . . . . . . . 20 7.3.4. OAuth 1.0a Authorization Endpoint . . . . . . . . . . 21
8. Appendix A -- Document History . . . . . . . . . . . . . . . . 21 7.3.5. OAuth 1.0a Token Endpoint . . . . . . . . . . . . . . 21
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22 8. Appendix A -- Document History . . . . . . . . . . . . . . . . 22
9.1. Normative References . . . . . . . . . . . . . . . . . . . 22 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 23
9.2. Informative References . . . . . . . . . . . . . . . . . . 23 9.1. Normative References . . . . . . . . . . . . . . . . . . . 23
9.2. Informative References . . . . . . . . . . . . . . . . . . 24
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 24 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 25
1. Introduction 1. Introduction
OAuth [I-D.ietf-oauth-v2] offers a standard mechanism for delegating OAuth [I-D.ietf-oauth-v2] enables a third-party application to obtain
authentication typically used for the purpose of control access to limited access to a protected resource, either on behalf of a
resources. The core OAuth specification defines a framework for resource owner by orchestrating an approval interaction, or by
authentication and token usage in an HTTP-based environment. The allowing the third-party application to obtain access on its own
HTTP authorization schemes and tokens in this model are defined behalf. The core OAuth specification [I-D.ietf-oauth-v2] does not
separately, some are defined within the OAuth 2 framework such as define the interaction between the client and the resource server
OAuth 2.0 Protocol: Bearer Tokens [I-D.ietf-oauth-v2-bearer], and with the access to a protected resource using an Access Token. This
some are free standing with OAuth 2 framework bindings such as MAC functionality is described in two separate specifications, namely
Authentication [I-D.hammer-oauth-v2-mac-token] tokens. This [I-D.ietf-oauth-v2-bearer], and [I-D.ietf-oauth-v2-http-mac], whereby
mechanism takes advantage of the OAuth protocol and infrastructure to the focus is on an HTTP-based environment only.
provide a way to use SASL [RFC4422] for access to resources for non-
HTTP-based protocols such as IMAP [RFC3501], which is what this memo
uses in the examples.
The general authentication flow is that the application will first Figure 1 shows the abstract message flow as shown in Figure 1 of
obtain an access token from an OAuth token service for the resource. [I-D.ietf-oauth-v2].
Once the client has obtained an OAuth access token it then connects
and authenticated using this SASL mechanism.
Figure 1 shows the relationship between SASL and OAuth graphically. +--------+ +---------------+
Item (1) denotes the part of the OAuth exchange that remains | |--(A)- Authorization Request ->| Resource |
unchanged from [I-D.ietf-oauth-v2], i.e. where the client obtains and | | | Owner |
refreshes Access Tokens. This document focuses on item (2) where the | |<-(B)-- Authorization Grant ---| |
Access Token is presented to the resource server over SASL. | | +---------------+
| |
| | +---------------+
| |--(C)-- Authorization Grant -->| Authorization |
| Client | | Server |
| |<-(D)----- Access Token -------| |
| | +---------------+
| |
| | +---------------+
| |--(E)----- Access Token ------>| Resource |
| | | Server |
| |<-(F)--- Protected Resource ---| |
+--------+ +---------------+
Figure 1: Abstract OAuth 2.0 Protocol Flow
This document takes advantage of the OAuth protocol and its
deployment base to provide a way to use SASL [RFC4422] as well as the
GSS-API [RFC2743] to gain access to resources when using non-HTTP-
based protocols, such as the Internet Message Access Protocol (IMAP)
[RFC3501], which is what this memo uses in the examples.
The Simple Authentication and Security Layer (SASL) is a framework
for providing authentication and data security services in
connection-oriented protocols via replaceable mechanisms. It
provides a structured interface between protocols and mechanisms.
The resulting framework allows new protocols to reuse existing
mechanisms and allows old protocols to make use of new mechanisms.
The framework also provides a protocol for securing subsequent
protocol exchanges within a data security layer.
The Generic Security Service Application Program Interface (GSS-API)
[RFC2743] provides a framework for applications to support multiple
authentication mechanisms through a unified interface.
This document defines a SASL mechanism for OAuth, but it conforms to
the new bridge between SASL and the GSS-API called GS2 [RFC5801].
This means that this document defines both a SASL mechanism and a
GSS-API mechanism. Implementers may be interested in either the
SASL, the GSS-API, or even both mechanisms. To faciliate these two
variants, the description has been split into two parts, one part
that provides normative references for those interested in the SASL
OAuth mechanism (see Section 3), and a second part for those
implementers that wish to implement the GSS-API portion (see
Section 4).
When OAuth is integrated into SASL and the GSS-API the high-level
steps are as follows:
(A) The client requests authorization from the resource owner.
The authorization request can be made directly to the resource
owner (as shown), or preferably indirectly via the authorization
server as an intermediary.
(B) The client receives an authorization grant which is a
credential representing the resource owner's authorization,
expressed using one of four grant types defined in this
specification or using an extension grant type. The authorization
grant type depends on the method used by the client to request
authorization and the types supported by the authorization server.
(C) The client requests an access token by authenticating with the
authorization server and presenting the authorization grant.
(D) The authorization server authenticates the client and
validates the authorization grant, and if valid issues an access
token.
(E) The client requests the protected resource from the resource
server and authenticates by presenting the access token.
(F) The resource server validates the access token, and if valid,
serves the request.
Steps (E) and (F) are not defined in [I-D.ietf-oauth-v2] and are the
main functionality specified within this document. Additionally, an
optional discovery exchange is defined. Consequently, the message
exchange shown in Figure 2 is the result of this specification. (1)
and (2) denote the optional discovery exchange steps that may happen
before the OAuth 2.0 protocol exchange messages in steps (A)-(D) are
executed. Steps (E) and (F) also defined in this specification.
----+ ----+
+--------+ +---------------+ | +--------+ +---------------+ |
| |--(C)-- Authorization Request --->| Resource | | | |--(A)-- Authorization Request --->| Resource | |
| | | Owner | |Plain | | | Owner | |Plain
| |<-(D)------ Access Grant ---------| | |OAuth | |<-(B)------ Access Grant ---------| | |OAuth
| | +---------------+ |2.0 | | +---------------+ |2.0
| | |(1) | | |
| | Client Credentials & +---------------+ | | | Client Credentials & +---------------+ |
| |--(E)------ Access Grant -------->| Authorization | | | |--(C)------ Access Grant -------->| Authorization | |
| Client | | Server | | | Client | | Server | |
| |<-(F)------ Access Token ---------| | | | |<-(D)------ Access Token ---------| | |
| | (w/ Optional Refresh Token) +---------------+ | | | (w/ Optional Refresh Token) +---------------+ |
| | ----+ | | ----+
| | | |
| | ----+ | | ----+
| | (Optional discovery) +---------------+ | | | (Optional discovery) +---------------+ |
| |--(A)------- User Name --------->| | | | |--(1)------- User Name --------->| | |
| Client | | | | | Client | | | |
| |<-(B)------ Authentication -------| | | | |<-(2)------ Authentication -------| | |
| | endpoint information | Resource | |OAuth | | endpoint information | Resource | |OAuth
| | | Server | |over | | | Server | |over
| |--(G)------ Access Token -------->| | |SASL | |--(E)------ Access Token -------->| | |SASL/
| | | | | | | | | |GSS-
| |<-(H)---- Protected Resource -----| | |(2) | |<-(F)---- Protected Resource -----| | |API
+--------+ +---------------+ | +--------+ +---------------+ |
----+ ----+
Figure 1: Interworking Architecture Figure 2: OAuth SASL Architecture
Note: The discovery procedure in OAuth is still work in progress. Note: The discovery procedure in OAuth is still work in progress.
Hence, the discovery components described in this document should Hence, the discovery components described in this document should
be considered incomplete and a tentative proposal. In general, be considered incomplete and a tentative proposal. In general,
there is a trade off between a generic, externally available there is a trade off between a generic, externally available
defined discovery mechanisms (such as Webfinger using host-meta defined discovery mechanisms (such as Webfinger using host-meta
[I-D.hammer-hostmeta]) and configuration information exchanged in [I-D.hammer-hostmeta], or [I-D.jones-simple-web-discovery]) and
band between the protocol endpoints. configuration information exchanged in-band between the SASL
communication endpoints.
It is worthwhile to note that this specification is also compatible
with OAuth 1.0a [RFC5849].
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
The reader is assumed to be familiar with the terms used in the OAuth The reader is assumed to be familiar with the terms used in the OAuth
2.0 specification. 2.0 specification [I-D.ietf-oauth-v2].
In examples, "C:" and "S:" indicate lines sent by the client and In examples, "C:" and "S:" indicate lines sent by the client and
server respectively. Line breaks have been inserted for readability. server respectively. Line breaks have been inserted for readability.
Note that the IMAP SASL specification requires base64 encoding Note that the IMAP SASL specification requires base64 encoding
message, not this memo. message, not this memo.
3. The OAuth SASL Mechanism 3. OAuth SASL Mechanism Specification
SASL is used as a generalized authentication method in a variety of SASL is used as a generalized authentication method in a variety of
protocols. This document defines the "OAUTH" mechanism to allow HTTP application layer protocols. This document defines two SASL
Authorization schemes in the OAuth framework to be used within the mechanisms for usage with OAuth: "OAUTH" and "OAUTH-PLUS". The
SASL framework. In this model a client authenticates to an OAuth- "OAUTH" SASL mechanism provides bearer token alike semantic for SASL
capable authorization server over HTTPS. This server then issues while "OAUTH-PLUS" provides a semantic similar to OAuth MAC
tokens after successfully authenticating the resource owner. authentication by utilizing a channel binding mechanism [RFC5056].
Subsequently, the obtained token may be presented in an OAuth-
authenticated request to the resource server. This mechanism further
provides compatibility with OAuth 1.0a [RFC5849] and the "OAuth"
authentication scheme defined there.
3.1. Channel Binding 3.1. Channel Binding
[[TODO: make this -PLUS not -SSL since if you support CB you have to
support all types.]]
Channel binding [RFC5056] in this mechanism is defined in order to
allow satisfying the security requirements of the authorization
schemes used. This document defines the "OAUTH-PLUS" mechanism to
provide channel binding for the OAUTH mechanism.
If the specification for the underlying authorization scheme requires If the specification for the underlying authorization scheme requires
a security layer such as TLS [RFC5246] the server SHOULD only provide a security layer, such as TLS [RFC5246], the server SHOULD only offer
that scheme in a mechanism with channel binding enabled. a mechanism where channel binding can be enabled.
3.1.1. Generating channel binding data to be exchanged
The channel binding data is computed by the client based on it's The channel binding data is computed by the client based on it's
choice of preferred channel binding type. As specified in [RFC5056] choice of preferred channel binding type. As specified in [RFC5056],
the channel binding information must start with the channel binding the channel binding information MUST start with the channel binding
unique prefix followed by a colon (ASCII 0x3A), this is followed by unique prefix, followed by a colon (ASCII 0x3A), followed by a base64
base64 encoded channel binding payload. The channel binding payload encoded channel binding payload. The channel binding payload is the
is the raw data from the channel binding type if the raw channel raw data from the channel binding type if the raw channel binding
binding data is less than 500 bytes, if 500 bytes or larger the data is less than 500 bytes. If the raw channel binding data is 500
channel binding payload is a SHA-1 [RFC3174] hash of the raw channel bytes or larger then a SHA-1 [RFC3174] hash of the raw channel
binding data. binding data is computed.
3.1.1.1. Use cases of generating channel binding data
If the client is using tls-unique for channel binding then the raw If the client is using tls-unique for a channel binding then the raw
channel binding data is the first TLS finished message. This is channel binding data equals the first TLS finished message. This is
under the 500 byte limit, so the channel binding payload sent to the under the 500 byte limit, so the channel binding payload sent to the
server would be the base64 encoded first TLS finished message. server would be the base64 encoded first TLS finished message.
In the case where the client has chosen tls-endpoint, the raw channel In the case where the client has chosen tls-endpoint, the raw channel
binding data is the certificate of the server the client connected binding data is the certificate of the server the client connected
to. This will frequently be 500 bytes or more, and if it is then the to, which will frequently be 500 bytes or more. If it is then the
channel binding payload is the base64 encoded SHA-1 hash of the channel binding payload is the base64 encoded SHA-1 hash of the
server certificate. server certificate.
3.2. Initial Client Response 3.2. Initial Client Response
The client response is formatted as an HTTP [RFC2616] request. The The SASL client response is formatted as an HTTP [RFC2616] request.
HTTP request is limited in that the path MUST be "/". In the OAUTH The HTTP request is limited in that the path MUST be "/". In the
mechanism no query string is allowed. The following header lines are OAUTH mechanism no query string is allowed. The following header
defined in the client response: lines are defined in the client response:
User (OPTIONAL): Contains the user identifier being User (OPTIONAL): Contains the user identifier being
authenticated, and is provided to allow correct discovery authenticated, and is provided to allow correct discovery
information to be returned. information to be returned.
Host (REQUIRED): Contains the host name to which the client Host (REQUIRED): Contains the host name to which the client
connected. connected.
Authorization (REQUIRED): An HTTP Authorization header.. Authorization (REQUIRED): An HTTP Authorization header.
The user name is provided by the client to allow the discovery The user name is provided by the client to allow the discovery
information to be customized for the user, a given server could allow information to be customized for the user, a given server could allow
multiple authenticators and it needs to return the correct one. For multiple authenticators and it needs to return the correct one. For
instance, a large ISP could provide mail service for several domains instance, a large ISP could provide mail service for several domains
who manage their own user information. For instance, users at foo- who manage their own user information. For instance, users at foo-
example.com could be authenticated by an OAuth service at example.com could be authenticated by an OAuth service at
https://oauth.foo-example.com/, and users at bar-example.com could be https://oauth.foo-example.com/, and users at bar-example.com could be
authenticated by https://oauth.bar-example.com, but both could be authenticated by https://oauth.bar-example.com, but both could be
served by a hypothetical IMAP server running at a third domain, served by a hypothetical IMAP server running at a third domain,
skipping to change at page 9, line 21 skipping to change at page 9, line 50
scheme in use. scheme in use.
In the OAUTH-PLUS mechanism the server examines the channel binding In the OAUTH-PLUS mechanism the server examines the channel binding
data, extracts the channel binding unique prefix, and extracts the data, extracts the channel binding unique prefix, and extracts the
raw channel biding data based on the channel binding type used. It raw channel biding data based on the channel binding type used. It
then computes it's own copy of the channel binding payload and then computes it's own copy of the channel binding payload and
compares that to the payload sent by the client in the query compares that to the payload sent by the client in the query
parameters of the tunneled HTTP request. Those two must be equal for parameters of the tunneled HTTP request. Those two must be equal for
channel binding to succeed. channel binding to succeed.
The server responds to a successful OAuth authentication by The server responds to a successfully verified client message by
completing the SASL negotiation. The authentication scheme MUST completing the SASL negotiation. The authentication scheme MUST
carry the user ID to be used as the authorization identity (identity carry the user ID to be used as the authorization identity (identity
to act as). The server MUST use that ID as the user being to act as). The server MUST use that ID as the user being
authorized, that is the user assertion we accept and not other authorized, that is the user assertion we accept and not other
information such as from the URL or "User:" header. information such as from the URL or "User:" header.
The server responds to failed authentication by sending discovery The server responds to failed authentication by sending discovery
information in an HTTP style response with the HTTP status code set information in an HTTP style response with the HTTP status code set
to 401, and then failing the authentication. to 401, and then failing the authentication.
If channel binding is in use and the channel binding fails the server If channel binding is in use and the channel binding fails the server
responds with a minimal HTTP response without discovery information responds with a minimal HTTP response without discovery information
and the HTTP status code set to 412 to indicate that the channel and the HTTP status code set to 412 to indicate that the channel
binding precondition failed. If the authentication scheme in use binding precondition failed. If the authentication scheme in use
does not include signing the server SHOULD revoke the presented does not include signing the server SHOULD revoke the presented
credential and the client SHOULD discard that credential. credential and the client SHOULD discard that credential.
3.3.1. Mapping to SASL Identities 3.4. Mapping to SASL Identities
Some OAuth mechanisms can provide both an authorization identity and Some OAuth mechanisms can provide both an authorization identity and
an authentication identity. An example of this is OAuth 1.0a an authentication identity. An example of this is OAuth 1.0a
[RFC5849] where the consumer key (oauth_consumer_key) identifies the [RFC5849] where the consumer key (oauth_consumer_key) identifies the
entity using to token which equates to the SASL authentication entity using to token which equates to the SASL authentication
identity, and is authenticated using the shared secret. The identity, and is authenticated using the shared secret. The
authorization identity in the OAuth 1.0a case is carried in the token authorization identity in the OAuth 1.0a case is carried in the token
(per the requirement above), which SHOULD validated independently. (per the requirement above), which SHOULD validated independently.
The server MAY use a consumer key or other comparable identity in the The server MAY use a consumer key or other comparable identity in the
OAuth authorization scheme as the SASL authentication identity. If OAuth authorization scheme as the SASL authentication identity. If
an appropriate authentication identity is not available the server an appropriate authentication identity is not available the server
MUST use the identity asserted in the token. MUST use the identity asserted in the token.
3.4. Discovery Information 3.5. Discovery Information
The server MUST send discovery information in response to a failed The server MUST send discovery information in response to a failed
authentication exchange or a request with an empty Authorization authentication exchange or a request with an empty Authorization
header. If discovery information is returned it MUST include an header. If discovery information is returned it MUST include an
authentication endpoint appropriate for the user. If the "User" authentication endpoint appropriate for the user. If the "User"
header is present the discovery information MUST be for that user. header is present the discovery information MUST be for that user.
Discovery information is provided by the server to the client to Discovery information is provided by the server to the client to
allow a client to discover the appropriate OAuth authentication and allow a client to discover the appropriate OAuth authentication and
token endpoints. The client then uses that information to obtain the token endpoints. The client then uses that information to obtain the
access token needed for OAuth authentication. The client SHOULD access token needed for OAuth authentication. The client SHOULD
skipping to change at page 10, line 45 skipping to change at page 11, line 28
[I-D.ietf-oauth-v2] authentication endpoint. This link has an [I-D.ietf-oauth-v2] authentication endpoint. This link has an
OPTIONAL link-extension "scheme", if included this link applies OPTIONAL link-extension "scheme", if included this link applies
ONLY to the specified scheme. ONLY to the specified scheme.
oauth2-token An [RFC5988] Link header specifying the oauth2-token An [RFC5988] Link header specifying the
[I-D.ietf-oauth-v2] token endpoint. This link has an OPTIONAL [I-D.ietf-oauth-v2] token endpoint. This link has an OPTIONAL
link-extension "scheme", if included this link applies ONLY to the link-extension "scheme", if included this link applies ONLY to the
specified scheme. specified scheme.
oauth-initiate (Optional) An [RFC5988] Link header specifying the oauth-initiate (Optional) An [RFC5988] Link header specifying the
Oauth 1.0a [RFC5849] initiation endpoint. The server MUST send OAuth1.0a [RFC5849] initiation endpoint. The server MUST send
this if "OAuth" is included in the supported list of HTTP this if "OAuth" is included in the supported list of HTTP
authentication schemes for the server. authentication schemes for the server.
oauth-authorize (Optional) An [RFC5988] Link header specifying the oauth-authorize (Optional) An [RFC5988] Link header specifying the
Oauth 1.0a [RFC5849] authentication endpoint. The server MUST OAuth1.0a [RFC5849] authentication endpoint. The server MUST send
send this if "OAuth" is included in the supported list of HTTP this if "OAuth" is included in the supported list of HTTP
authentication schemes for the server. authentication schemes for the server.
oauth-token (Optional) An [RFC5988] Link header specifying the Oauth oauth-token (Optional) An [RFC5988] Link header specifying the
1.0a [RFC5849] token endpoint. The server MUST send this if OAuth1.0a [RFC5849] token endpoint. The server MUST send this if
"OAuth" is included in the supported list of HTTP authentication "OAuth" is included in the supported list of HTTP authentication
schemes for the server. This link type has one link-extension schemes for the server. This link type has one link-extension
"grant-types" which is a space separated list of the the OAuth 2.0 "grant-types" which is a space separated list of the OAuth 2.0
grant types that can be used at the token endpoint to obtain a grant types that can be used at the token endpoint to obtain a
token. token.
Usage of the URLs provided in the discovery information is defined in Usage of the URLs provided in the discovery information is defined in
the relevant specifications. If the server supports multiple the relevant specifications. If the server supports multiple
authenticators the discovery information returned for unknown users authenticators the discovery information returned for unknown users
MUST be consistent with the discovery information for known users to MUST be consistent with the discovery information for known users to
prevent user enumeration. The OAuth 2.0 specification prevent user enumeration. The OAuth 2.0 specification
[I-D.ietf-oauth-v2] supports multiple types of authentication schemes [I-D.ietf-oauth-v2] supports multiple types of authentication schemes
and the server MUST specify at least one supported authentication and the server MUST specify at least one supported authentication
skipping to change at page 11, line 31 skipping to change at page 12, line 14
schemes and MAY support schemes not listed in the discovery schemes and MAY support schemes not listed in the discovery
information. information.
If the resource server provides a scope the client SHOULD always If the resource server provides a scope the client SHOULD always
request scoped tokens from the token endpoint. The client MAY use a request scoped tokens from the token endpoint. The client MAY use a
scope other than the one provided by the resource server. Scopes scope other than the one provided by the resource server. Scopes
other than those advertised by the resource server must be defined by other than those advertised by the resource server must be defined by
the resource owner and provided in service documentation (which is the resource owner and provided in service documentation (which is
beyond the scope of this memo). beyond the scope of this memo).
3.5. Use of Signature Type Authorization 3.6. Use of Signature Type Authorization
This mechanism supports authorization using signatures, which This mechanism supports authorization using signatures, which
requires that both client and server construct the string to be requires that both client and server construct the string to be
signed. OAuth 2 is designed for authentication/authorization to signed. OAuth 2 is designed for authentication/authorization to
access specific URIs. SASL is designed for user authentication, and access specific URIs. SASL is designed for user authentication, and
has no facility for being more specific. In this mechanism we has no facility for being more specific. In this mechanism we
require an HTTP style format specifically to support signature type require an HTTP style format specifically to support signature type
authentication, but this is extremely limited. The HTTP style authentication, but this is extremely limited. The HTTP style
request is limited to a path of "/". This mechanism is in the SASL request is limited to a path of "/". This mechanism is in the SASL
model, but is designed so that no changes are needed if there is a model, but is designed so that no changes are needed if there is a
revision of SASL which supports more specific resource authorization, revision of SASL which supports more specific resource authorization,
e.g. IMAP access to a specific folder or FTP access limited to a e.g. IMAP access to a specific folder or FTP access limited to a
specific directory. specific directory.
Using the example in the MAC specification Using the example in the MAC specification
[I-D.hammer-oauth-v2-mac-token] as a starting point, on an IMAP [I-D.ietf-oauth-v2-http-mac] as a starting point, on an IMAP server
server running on port 143 and given the MAC style authorization running on port 143 and given the MAC style authorization request
request (with long lines wrapped for readability) below: (with long lines wrapped for readability) below:
GET / HTTP/1.1 GET / HTTP/1.1
Host: server.example.com Host: server.example.com
User: user@example.com User: user@example.com
Authorization: MAC token="h480djs93hd8",timestamp="137131200", Authorization: MAC token="h480djs93hd8",timestamp="137131200",
nonce="dj83hs9s",signature="YTVjyNSujYs1WsDurFnvFi4JK6o=" nonce="dj83hs9s",signature="YTVjyNSujYs1WsDurFnvFi4JK6o="
The normalized request string would be constructed per the MAC The normalized request string would be constructed per the MAC
specifcation [I-D.hammer-oauth-v2-mac-token]. In this example the specification [I-D.ietf-oauth-v2-http-mac]. In this example the
normalized request string with the new line separator character is normalized request string with the new line separator character is
represented by "\n" for display purposes only would be: represented by "\n" for display purposes only would be:
h480djs93hi8\n h480djs93hi8\n
137131200\n 137131200\n
dj83hs9s\n dj83hs9s\n
\n \n
GET\n GET\n
server.example.com\n server.example.com\n
143\n 143\n
/\n /\n
\n \n
4. Implementation Requirements 4. GSS-API OAuth Mechanism Specification
Tokens typically have a restricted lifetime. In addition a Note: The normative references in this section are informational for
previously obtained token MAY be revoked or rendered invalid at any SASL implementers, but they are normative for GSS-API implementers.
time. The client MAY request a new access token for each connection
to a resource server, but it SHOULD cache and re-use access The SASL OAuth mechanism is also a GSS-API mechanism and the messages
credentials that appear to be valid. Credential lifetime and how described in Section 3 are the same, but
that is communicated to the client is defined in the authentication
scheme specifications. Clients MAY implement any of the OAuth 2 1. the GS2 header on the client's first message is excluded when
profiles since they are largely outside the scope of this OAUTH is used as a GSS-API mechanism, and
specification, and the mentioned profiles in this document are just
examples. 2. initial context token header is prefixed to the client's first
authentication message (context token), as described in Section
3.1 of RFC 2743,
The GSS-API mechanism OID for OAuth is [[TBD: IANA]].
OAuth security contexts always have the mutual_state flag
(GSS_C_MUTUAL_FLAG) set to TRUE. OAuth supports credential
delegation, therefore security contexts may have the deleg_state flag
(GSS_C_DELEG_FLAG) set to either TRUE or FALSE.
The mutual authentication property of this mechanism relies on
successfully comparing the TLS server identity with the negotiated
target name. Since the TLS channel is managed by the application
outside of the GSS-API mechanism, the mechanism itself is unable to
confirm the name while the application is able to perform this
comparison for the mechanism. For this reason, applications MUST
match the TLS server identity with the target name, as discussed in
[RFC6125].
The OAuth mechanism does not support per-message tokens or
GSS_Pseudo_random.
OAuth supports a standard generic name syntax for acceptors, such as
GSS_C_NT_HOSTBASED_SERVICE (see [RFC2743], Section 4.1). These
service names MUST be associated with the "entityID" claimed by the
RP. OAuth supports only a single name type for initiators:
GSS_C_NT_USER_NAME. GSS_C_NT_USER_NAME is the default name type.
The query, display, and exported name syntaxes for OAuth principal
names are all the same. There is no OAuth-specific name syntax;
applications SHOULD use generic GSS-API name types, such as
GSS_C_NT_USER_NAME and GSS_C_NT_HOSTBASED_SERVICE (see [RFC2743],
Section 4). The exported name token does, of course, conform to
[RFC2743], Section 3.2, but the "NAME" part of the token should be
treated as a potential input string to the OAuth name normalization
rules.
5. Examples 5. Examples
These example illustrate exchanges between an IMAP client and an IMAP These example illustrate exchanges between an IMAP client and an IMAP
server. server.
5.1. Successful Bearer Token Exchange 5.1. Successful Bearer Token Exchange
This example shows a successful OAuth 2.0 bearer token exchange with This example shows a successful OAuth 2.0 bearer token exchange with
an initial client response. Note that line breaks are inserted for an initial client response. Note that line breaks are inserted for
skipping to change at page 14, line 39 skipping to change at page 15, line 39
GET / HTTP/1.1 GET / HTTP/1.1
Host: imap.example.com Host: imap.example.com
Authorization: BEARER "vF9dft4qmTc2Nvb3RlckBhbHRhdmlzdGEuY29tCg==" Authorization: BEARER "vF9dft4qmTc2Nvb3RlckBhbHRhdmlzdGEuY29tCg=="
The line containing just a "+" and a space is an empty response from The line containing just a "+" and a space is an empty response from
the server. This response contains discovery information, and in the the server. This response contains discovery information, and in the
success case no discovery information is necessary so the response is success case no discovery information is necessary so the response is
empty. Like other messages, and in accordance with the IMAP SASL empty. Like other messages, and in accordance with the IMAP SASL
binding, the empty response is base64-encoded. binding, the empty response is base64-encoded.
5.2. MAC Authentication with Channel Binding 5.2. MAC Authentication with Channel Binding
This example shows a channel binding failure. The example sends the This example shows a channel binding failure. The example sends the
same request as above, but in the context of an OAUTH-PLUS exchange same request as above, but in the context of an OAUTH-PLUS exchange
the channel binding information is missing. Note that line breaks the channel binding information is missing. Note that line breaks
are inserted for readability. are inserted for readability.
S: * CAPABILITY IMAP4rev1 AUTH=OAUTH SASL-IR IMAP4rev1 Server Ready S: * CAPABILITY IMAP4rev1 AUTH=OAUTH SASL-IR IMAP4rev1 Server Ready
S: t0 OK Completed S: t0 OK Completed
C: t1 AUTHENTICATE MAC R0VUIC8/Y2JkYXRhPSJTRzkzSUdKcFp5QnBjeUJoSUZSTVV5Q C: t1 AUTHENTICATE MAC R0VUIC8/Y2JkYXRhPSJTRzkzSUdKcFp5QnBjeUJoSUZSTVV5Q
m1hVzVoYkNCdFpYTnpZV2RsUHdvPSIgSFRUUC8xLjENCkhvc3Q6IHNlcnZlci5leGFtcG m1hVzVoYkNCdFpYTnpZV2RsUHdvPSIgSFRUUC8xLjENCkhvc3Q6IHNlcnZlci5leGFtcG
skipping to change at page 15, line 24 skipping to change at page 16, line 24
As required by IMAP [RFC3501], the payloads are base64-encoded. The As required by IMAP [RFC3501], the payloads are base64-encoded. The
decoded initial client response is: decoded initial client response is:
GET /?cbdata="SG93IGJpZyBpcyBhIFRMUyBmaW5hbCBtZXNzYWdlPwo=" HTTP/1.1 GET /?cbdata="SG93IGJpZyBpcyBhIFRMUyBmaW5hbCBtZXNzYWdlPwo=" HTTP/1.1
Host: server.example.com Host: server.example.com
User: user@example.com User: user@example.com
Authorization: MAC token="h480djs93hd8",timestamp="137131200", Authorization: MAC token="h480djs93hd8",timestamp="137131200",
nonce="dj83hs9s",signature="WW91IG11c3QgYmUgYm9yZWQuIAo=" nonce="dj83hs9s",signature="WW91IG11c3QgYmUgYm9yZWQuIAo="
The line conaining just a "+" and a space is an empty response from The line containing just a "+" and a space is an empty response from
the server. This response contains discovery information, and in the the server. This response contains discovery information, and in the
success case no discovery information is necessary so the response is success case no discovery information is necessary so the response is
empty. Like other messages, and in accordance with the IMAP SASL empty. Like other messages, and in accordance with the IMAP SASL
binding, the empty response is base64-encoded. binding, the empty response is base64-encoded.
5.3. Failed Exchange 5.3. Failed Exchange
This example shows a failed exchange because of the empty This example shows a failed exchange because of the empty
Authorization header, which is how a client can query for discovery Authorization header, which is how a client can query for discovery
information. Note that line breaks are inserted for readability. information. Note that line breaks are inserted for readability.
skipping to change at page 17, line 18 skipping to change at page 18, line 18
provision for channel binding. The OAuth 2 specification provision for channel binding. The OAuth 2 specification
[I-D.ietf-oauth-v2] allows for a variety of usages, and the security [I-D.ietf-oauth-v2] allows for a variety of usages, and the security
properties of these profiles vary. The usage of bearer tokens, for properties of these profiles vary. The usage of bearer tokens, for
example, provide security features similar to cookies. Applications example, provide security features similar to cookies. Applications
using this mechanism SHOULD exercise the same level of care using using this mechanism SHOULD exercise the same level of care using
this mechanism as they would in using the SASL PLAIN mechanism. In this mechanism as they would in using the SASL PLAIN mechanism. In
particular, TLS 1.2 or an equivalent secure channel MUST be particular, TLS 1.2 or an equivalent secure channel MUST be
implemented and its usage is RECOMMENDED. implemented and its usage is RECOMMENDED.
Channel binding in this mechanism has different properties based on Channel binding in this mechanism has different properties based on
the authentication scheme used. Bearer tokens have the same the authentication scheme used. Channel binding to TLS with a bearer
properties as cookies, and the bearer token authentication scheme has token provides only a binding to the TLS layer. Authentication
no signature or message integrity. Channel binding to TLS with a schemes like MAC tokens have a signature over the channel binding
bearer token provides only a binding to the TLS layer. information. These provide additional protection against a man in
Authentication schemes like MAC tokens have a signature over the the middle attacks, and the MAC authorization header is bound to the
channel binding information. These provide additional protection channel and only valid in that context.
against a man in the middle, and the MAC authorization header is
bound to the channel and only valid in that context.
It is possible that SASL will be authenticating a connection and the It is possible that SASL will be authenticating a connection and the
life of that connection may outlast the life of the token used to life of that connection may outlast the life of the token used to
authenticate it. This is a common problem in application protocols authenticate it. This is a common problem in application protocols
where connections are long-lived, and not a problem with this where connections are long-lived, and not a problem with this
mechanism per se. Servers MAY unilaterally disconnect clients in mechanism per se. Servers MAY unilaterally disconnect clients in
accordance with the application protocol. accordance with the application protocol.
An OAuth credential is not equivalent to the password or primary An OAuth credential is not equivalent to the password or primary
account credential. There are protocols like XMPP that allow actions account credential. There are protocols like XMPP that allow actions
skipping to change at page 18, line 5 skipping to change at page 18, line 47
It is possible for an application server running on Evil.example.com It is possible for an application server running on Evil.example.com
to tell a client to request a token from Good.example.org. A client to tell a client to request a token from Good.example.org. A client
following these instructions will pass a token from Good to Evil. following these instructions will pass a token from Good to Evil.
This is by design, since it is possible that Good and Evil are merely This is by design, since it is possible that Good and Evil are merely
names, not descriptive, and that this is an innocuous activity names, not descriptive, and that this is an innocuous activity
between cooperating two servers in different domains. For instance, between cooperating two servers in different domains. For instance,
a site might operate their authentication service in-house, but a site might operate their authentication service in-house, but
outsource their mail systems to an external entity. outsource their mail systems to an external entity.
Tokens have a lifetime associated with them. Reducing both the
lifetime of a token provides security benefits in case that tokens
leak. In addition a previously obtained token MAY be revoked or
rendered invalid at any time. The client MAY request a new access
token for each connection to a resource server, but it SHOULD cache
and re-use access credentials that appear to be valid.
7. IANA Considerations 7. IANA Considerations
7.1. SASL Registration 7.1. SASL Registration
The IANA is requested to register the following SASL profile: The IANA is requested to register the following SASL profile:
SASL mechanism profile: OAUTH SASL mechanism profile: OAUTH
Security Considerations: See this document Security Considerations: See this document
skipping to change at page 18, line 37 skipping to change at page 19, line 37
Security Considerations: See this document Security Considerations: See this document
Published Specification: See this document Published Specification: See this document
For further information: Contact the authors of this document. For further information: Contact the authors of this document.
Owner/Change controller: the IETF Owner/Change controller: the IETF
Note: None Note: None
7.2. Link Type Registration 7.2. GSS-API Registration
IANA is further requested to assign an OID for this GSS mechanism in
the SMI numbers registry, with the prefix of
iso.org.dod.internet.security.mechanisms (1.3.6.1.5.5) and to
reference this specification in the registry.
7.3. Link Type Registration
Pursuant to [RFC5988] The following link type registrations [[will Pursuant to [RFC5988] The following link type registrations [[will
be]] registered by mail to link-relations@ietf.org. be]] registered by mail to link-relations@ietf.org.
7.2.1. OAuth 2 Authentication Endpoint 7.3.1. OAuth 2 Authentication Endpoint
o Relation Name: oauth2-authenticator o Relation Name: oauth2-authenticator
o Description: An OAuth 2.0 authentication endpoint. o Description: An OAuth 2.0 authentication endpoint.
o Reference: o Reference:
o Notes: This link type indicates an OAuth 2.0 authentication o Notes: This link type indicates an OAuth 2.0 authentication
endpoint that can be used for user authentication/authorization endpoint that can be used for user authentication/authorization
for the endpoint providing the link. for the endpoint providing the link.
o Application Data: [optional] o Application Data: [optional]
7.2.2. OAuth 2 Token Endpoint 7.3.2. OAuth 2 Token Endpoint
o Relation Name: oauth2-token o Relation Name: oauth2-token
o Description: The OAuth token endpoint used to get tokens for o Description: The OAuth token endpoint used to get tokens for
access. access.
o Reference: o Reference:
o Notes: The OAuth 2.0 token endpoint to be used for obtaining o Notes: The OAuth 2.0 token endpoint to be used for obtaining
tokens to access the endpoint providing the link. tokens to access the endpoint providing the link.
o Application Data: This link type has one link-extension "grant- o Application Data: This link type has one link-extension "grant-
types" which is the OAuth 2.0 grant types that can be used at the types", which is the OAuth 2.0 grant types that can be used at the
token endpoint to obtain a token. This is not an exclusive list, token endpoint to obtain a token. This is not an exclusive list,
it provides a hint to the application of what SHOULD be valid. A it provides a hint to the application of what SHOULD be valid. A
token endpoint MAY support additional grant types not advertised token endpoint MAY support additional grant types not advertised
by a resource endpoint. by a resource endpoint.
7.2.3. OAuth 1.0a Request Initiation Endpoint 7.3.3. OAuth 1.0a Request Initiation Endpoint
o Relation Name: oauth-initiate o Relation Name: oauth-initiate
o Description: The OAuth 1.0a request initiation endpoint used to o Description: The OAuth 1.0a request initiation endpoint used to
get tokens for access. get tokens for access.
o Reference: o Reference:
o Notes: The OAuth 1.0a endpoint used to initiate the sequence, this o Notes: The OAuth 1.0a endpoint used to initiate the sequence, this
temporary request is what the user approves to grant access to the temporary request is what the user approves to grant access to the
resource. resource.
o Application Data: o Application Data:
7.2.4. OAuth 1.0a Authorization Endpoint 7.3.4. OAuth 1.0a Authorization Endpoint
o Relation Name: oauth-authorize o Relation Name: oauth-authorize
o Description: The OAuth 1.0a authorization endpoint used to approve o Description: The OAuth 1.0a authorization endpoint used to approve
an access request. an access request.
o Reference: o Reference:
o Notes: o Notes:
o Application Data: o Application Data:
7.2.5. OAuth 1.0a Token Endpoint 7.3.5. OAuth 1.0a Token Endpoint
o Relation Name: oauth-token o Relation Name: oauth-token
o Description: The OAuth 1.0a token endpoint used to get tokens for o Description: The OAuth 1.0a token endpoint used to get tokens for
access. access.
o Reference: o Reference:
o Notes: o Notes:
o Application Data: o Application Data:
8. Appendix A -- Document History 8. Appendix A -- Document History
[[ to be removed by RFC editor before publication as an RFC ]] [[ to be removed by RFC editor before publication as an RFC ]]
-04
o Editorial clean-up and text in introduction improved.
o Added GSS-API support
-03 -03
o Fixing channel binding, not tls-unique specific. Also defining o Fixing channel binding, not tls-unique specific. Also defining
how the CB data is properly generated. how the CB data is properly generated.
o Various small editorial changes and embarassing spelling fixes. o Various small editorial changes and embarassing spelling fixes.
-02 -02
o Filling out Channel Binding o Filling out Channel Binding
skipping to change at page 22, line 9 skipping to change at page 23, line 9
o Added the seeds of channel binding. o Added the seeds of channel binding.
-00 -00
o Initial revision o Initial revision
9. References 9. References
9.1. Normative References 9.1. Normative References
[I-D.hammer-oauth-v2-mac-token]
Hammer-Lahav, E., "HTTP Authentication: MAC
Authentication", draft-hammer-oauth-v2-mac-token-02 (work
in progress), January 2011.
[I-D.ietf-oauth-v2] [I-D.ietf-oauth-v2]
Hammer-Lahav, E., Recordon, D., and D. Hardt, "The OAuth Hammer-Lahav, E., Recordon, D., and D. Hardt, "The OAuth
2.0 Authorization Protocol", draft-ietf-oauth-v2-12 (work 2.0 Authorization Protocol", draft-ietf-oauth-v2-22 (work
in progress), January 2011. in progress), September 2011.
[I-D.ietf-oauth-v2-bearer] [I-D.ietf-oauth-v2-bearer]
Jones, M., Hardt, D., and D. Recordon, "The OAuth 2.0 Jones, M., Hardt, D., and D. Recordon, "The OAuth 2.0
Protocol: Bearer Tokens", draft-ietf-oauth-v2-bearer-02 Authorization Protocol: Bearer Tokens",
(work in progress), January 2011. draft-ietf-oauth-v2-bearer-13 (work in progress),
October 2011.
[I-D.ietf-oauth-v2-http-mac]
Hammer-Lahav, E., Barth, A., and B. Adida, "HTTP
Authentication: MAC Access Authentication",
draft-ietf-oauth-v2-http-mac-00 (work in progress),
May 2011.
[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.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
Leach, P., Luotonen, A., and L. Stewart, "HTTP Leach, P., Luotonen, A., and L. Stewart, "HTTP
Authentication: Basic and Digest Access Authentication", Authentication: Basic and Digest Access Authentication",
RFC 2617, June 1999. RFC 2617, June 1999.
[RFC2743] Linn, J., "Generic Security Service Application Program
Interface Version 2, Update 1", RFC 2743, January 2000.
[RFC3174] Eastlake, D. and P. Jones, "US Secure Hash Algorithm 1 [RFC3174] Eastlake, D. and P. Jones, "US Secure Hash Algorithm 1
(SHA1)", RFC 3174, September 2001. (SHA1)", RFC 3174, September 2001.
[RFC4422] Melnikov, A. and K. Zeilenga, "Simple Authentication and [RFC4422] Melnikov, A. and K. Zeilenga, "Simple Authentication and
Security Layer (SASL)", RFC 4422, June 2006. Security Layer (SASL)", RFC 4422, June 2006.
[RFC5056] Williams, N., "On the Use of Channel Bindings to Secure [RFC5056] Williams, N., "On the Use of Channel Bindings to Secure
Channels", RFC 5056, November 2007. Channels", RFC 5056, November 2007.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246, August 2008. (TLS) Protocol Version 1.2", RFC 5246, August 2008.
[RFC5801] Josefsson, S. and N. Williams, "Using Generic Security
Service Application Program Interface (GSS-API) Mechanisms
in Simple Authentication and Security Layer (SASL): The
GS2 Mechanism Family", RFC 5801, July 2010.
[RFC5849] Hammer-Lahav, E., "The OAuth 1.0 Protocol", RFC 5849, [RFC5849] Hammer-Lahav, E., "The OAuth 1.0 Protocol", RFC 5849,
April 2010. April 2010.
[RFC5929] Altman, J., Williams, N., and L. Zhu, "Channel Bindings [RFC5929] Altman, J., Williams, N., and L. Zhu, "Channel Bindings
for TLS", RFC 5929, July 2010. for TLS", RFC 5929, July 2010.
[RFC5988] Nottingham, M., "Web Linking", RFC 5988, October 2010. [RFC5988] Nottingham, M., "Web Linking", RFC 5988, October 2010.
[RFC6125] Saint-Andre, P. and J. Hodges, "Representation and
Verification of Domain-Based Application Service Identity
within Internet Public Key Infrastructure Using X.509
(PKIX) Certificates in the Context of Transport Layer
Security (TLS)", RFC 6125, March 2011.
9.2. Informative References 9.2. Informative References
[I-D.hammer-hostmeta] [I-D.hammer-hostmeta]
Hammer-Lahav, E. and B. Cook, "Web Host Metadata", Hammer-Lahav, E. and B. Cook, "Web Host Metadata",
draft-hammer-hostmeta-16 (work in progress), May 2011. draft-hammer-hostmeta-17 (work in progress),
September 2011.
[I-D.jones-simple-web-discovery]
Jones, M. and Y. Goland, "Simple Web Discovery (SWD)",
draft-jones-simple-web-discovery-01 (work in progress),
July 2011.
[RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
4rev1", RFC 3501, March 2003. 4rev1", RFC 3501, March 2003.
Authors' Addresses Authors' Addresses
William Mills William Mills
Yahoo! Inc. Yahoo! Inc.
Phone: Phone:
 End of changes. 64 change blocks. 
178 lines changed or deleted 316 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/