draft-ietf-oauth-v2-http-mac-04.txt   draft-ietf-oauth-v2-http-mac-05.txt 
OAuth J. Richer OAuth J. Richer
Internet-Draft The MITRE Corporation Internet-Draft The MITRE Corporation
Intended status: Standards Track W. Mills Intended status: Standards Track W. Mills
Expires: January 16, 2014 Yahoo! Inc. Expires: July 19, 2014 Yahoo! Inc.
H. Tschofenig, Ed. H. Tschofenig, Ed.
Nokia Siemens Networks
P. Hunt P. Hunt
Oracle Corporation Oracle Corporation
July 15, 2013 January 15, 2014
OAuth 2.0 Message Authentication Code (MAC) Tokens OAuth 2.0 Message Authentication Code (MAC) Tokens
draft-ietf-oauth-v2-http-mac-04.txt draft-ietf-oauth-v2-http-mac-05.txt
Abstract Abstract
This specification describes how to use MAC Tokens in HTTP requests This specification describes how to use MAC Tokens in HTTP requests
to access OAuth 2.0 protected resources. An OAuth client willing to to access OAuth 2.0 protected resources. An OAuth client willing to
access a protected resource needs to demonstrate possession of a access a protected resource needs to demonstrate possession of a
crytographic key by using it with a keyed message digest function to cryptographic key by using it with a keyed message digest function to
the request. the request.
The document also defines a key distribution protocol for obtaining a The document also defines a key distribution protocol for obtaining a
fresh session key. fresh session key.
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 January 16, 2014. This Internet-Draft will expire on July 19, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2014 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 . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 6 3. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Key Distribution . . . . . . . . . . . . . . . . . . . . . . . 8 4. Key Distribution . . . . . . . . . . . . . . . . . . . . . . 6
4.1. Session Key Transport to Client . . . . . . . . . . . . . 8 4.1. Session Key Transport to Client . . . . . . . . . . . . . 6
4.2. Session Key Transport to Resource Server . . . . . . . . . 9 4.2. Session Key Transport to Resource Server . . . . . . . . 8
5. The Authenticator . . . . . . . . . . . . . . . . . . . . . . 11 5. The Authenticator . . . . . . . . . . . . . . . . . . . . . . 9
5.1. The Authenticator . . . . . . . . . . . . . . . . . . . . 11 5.1. The Authenticator . . . . . . . . . . . . . . . . . . . . 9
5.2. MAC Input String . . . . . . . . . . . . . . . . . . . . . 14 5.2. MAC Input String . . . . . . . . . . . . . . . . . . . . 12
5.3. Keyed Message Digest Algorithms . . . . . . . . . . . . . 14 5.3. Keyed Message Digest Algorithms . . . . . . . . . . . . . 13
5.3.1. hmac-sha-1 . . . . . . . . . . . . . . . . . . . . . . 14 5.3.1. hmac-sha-1 . . . . . . . . . . . . . . . . . . . . . 13
5.3.2. hmac-sha-256 . . . . . . . . . . . . . . . . . . . . . 15 5.3.2. hmac-sha-256 . . . . . . . . . . . . . . . . . . . . 14
6. Verifying the Authenticator . . . . . . . . . . . . . . . . . 16 6. Verifying the Authenticator . . . . . . . . . . . . . . . . . 14
6.1. Timestamp Verification . . . . . . . . . . . . . . . . . . 16 6.1. Timestamp Verification . . . . . . . . . . . . . . . . . 15
6.2. Error Handling . . . . . . . . . . . . . . . . . . . . . . 17 6.2. Error Handling . . . . . . . . . . . . . . . . . . . . . 15
7. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 7. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8. Security Considerations . . . . . . . . . . . . . . . . . . . 19 8. Security Considerations . . . . . . . . . . . . . . . . . . . 16
8.1. Key Distribution . . . . . . . . . . . . . . . . . . . . . 19 8.1. Key Distribution . . . . . . . . . . . . . . . . . . . . 16
8.2. Offering Confidentiality Protection for Access to 8.2. Offering Confidentiality Protection for Access to
Protected Resources . . . . . . . . . . . . . . . . . . . 19 Protected Resources . . . . . . . . . . . . . . . . . . . 16
8.3. Authentication of Resource Servers . . . . . . . . . . . . 19 8.3. Authentication of Resource Servers . . . . . . . . . . . 17
8.4. Plaintext Storage of Credentials . . . . . . . . . . . . . 20 8.4. Plaintext Storage of Credentials . . . . . . . . . . . . 17
8.5. Entropy of Session Keys . . . . . . . . . . . . . . . . . 20 8.5. Entropy of Session Keys . . . . . . . . . . . . . . . . . 17
8.6. Denial of Service / Resource Exhaustion Attacks . . . . . 21 8.6. Denial of Service / Resource Exhaustion Attacks . . . . . 18
8.7. Timing Attacks . . . . . . . . . . . . . . . . . . . . . . 21 8.7. Timing Attacks . . . . . . . . . . . . . . . . . . . . . 18
8.8. CSRF Attacks . . . . . . . . . . . . . . . . . . . . . . . 21 8.8. CSRF Attacks . . . . . . . . . . . . . . . . . . . . . . 19
8.9. Protecting HTTP Header Fields . . . . . . . . . . . . . . 22 8.9. Protecting HTTP Header Fields . . . . . . . . . . . . . . 19
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
9.1. JSON Web Token Claims . . . . . . . . . . . . . . . . . . 23 9.1. JSON Web Token Claims . . . . . . . . . . . . . . . . . . 19
9.2. MAC Token Algorithm Registry . . . . . . . . . . . . . . . 23 9.2. MAC Token Algorithm Registry . . . . . . . . . . . . . . 20
9.2.1. Registration Template . . . . . . . . . . . . . . . . 24 9.2.1. Registration Template . . . . . . . . . . . . . . . . 20
9.2.2. Initial Registry Contents . . . . . . . . . . . . . . 24 9.2.2. Initial Registry Contents . . . . . . . . . . . . . . 21
9.3. OAuth Access Token Type Registration . . . . . . . . . . . 24 9.3. OAuth Access Token Type Registration . . . . . . . . . . 21
9.3.1. The "mac" OAuth Access Token Type . . . . . . . . . . 25 9.3.1. The "mac" OAuth Access Token Type . . . . . . . . . . 21
9.4. OAuth Parameters Registration . . . . . . . . . . . . . . 25 9.4. OAuth Parameters Registration . . . . . . . . . . . . . . 22
9.4.1. The "mac_key" OAuth Parameter . . . . . . . . . . . . 25 9.4.1. The "mac_key" OAuth Parameter . . . . . . . . . . . . 22
9.4.2. The "mac_algorithm" OAuth Parameter . . . . . . . . . 25 9.4.2. The "mac_algorithm" OAuth Parameter . . . . . . . . . 22
9.4.3. The "kid" OAuth Parameter . . . . . . . . . . . . . . 26 9.4.3. The "kid" OAuth Parameter . . . . . . . . . . . . . . 22
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 27 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 23
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 28 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 23
11.1. Normative References . . . . . . . . . . . . . . . . . . . 28 11.1. Normative References . . . . . . . . . . . . . . . . . . 23
11.2. Informative References . . . . . . . . . . . . . . . . . . 29 11.2. Informative References . . . . . . . . . . . . . . . . . 25
Appendix A. Background Information . . . . . . . . . . . . . . . 31 Appendix A. Background Information . . . . . . . . . . . . . . . 26
A.1. Security and Privacy Threats . . . . . . . . . . . . . . . 31 A.1. Security and Privacy Threats . . . . . . . . . . . . . . 26
A.2. Threat Mitigation . . . . . . . . . . . . . . . . . . . . 32 A.2. Threat Mitigation . . . . . . . . . . . . . . . . . . . . 27
A.2.1. Confidentiality Protection . . . . . . . . . . . . . . 32 A.2.1. Confidentiality Protection . . . . . . . . . . . . . 28
A.2.2. Sender Constraint . . . . . . . . . . . . . . . . . . 33 A.2.2. Sender Constraint . . . . . . . . . . . . . . . . . . 28
A.2.3. Key Confirmation . . . . . . . . . . . . . . . . . . . 34 A.2.3. Key Confirmation . . . . . . . . . . . . . . . . . . 29
A.2.4. Summary . . . . . . . . . . . . . . . . . . . . . . . 35 A.2.4. Summary . . . . . . . . . . . . . . . . . . . . . . . 30
A.3. Requirements . . . . . . . . . . . . . . . . . . . . . . . 36 A.3. Requirements . . . . . . . . . . . . . . . . . . . . . . 31
A.4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 40 A.4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 35
A.4.1. Access to an 'Unprotected' Resource . . . . . . . . . 40 A.4.1. Access to an 'Unprotected' Resource . . . . . . . . . 35
A.4.2. Offering Application Layer End-to-End Security . . . . 40 A.4.2. Offering Application Layer End-to-End Security . . . 36
A.4.3. Preventing Access Token Re-Use by the Resource A.4.3. Preventing Access Token Re-Use by the Resource Server 36
Server . . . . . . . . . . . . . . . . . . . . . . . . 41 A.4.4. TLS Channel Binding Support . . . . . . . . . . . . . 36
A.4.4. TLS Channel Binding Support . . . . . . . . . . . . . 41 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 37
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 42
1. Introduction 1. Introduction
This specification describes how to use MAC Tokens in HTTP requests This specification describes how to use MAC Tokens in HTTP requests
and responses to access protected resources via the OAuth 2.0 and responses to access protected resources via the OAuth 2.0
protocol [RFC6749]. An OAuth client willing to access a protected protocol [RFC6749]. An OAuth client willing to access a protected
resource needs to demonstrate possession of a symmetric key by using resource needs to demonstrate possession of a symmetric key by using
it with a keyed message digest function to the request. The keyed it with a keyed message digest function to the request. The keyed
message digest function is computed over a flexible set of parameters message digest function is computed over a flexible set of parameters
from the HTTP message. from the HTTP message.
The MAC Token mechanism requires the establishment of a shared The MAC Token mechanism requires the establishment of a shared
symmetric key between the client and the resource server. This symmetric key between the client and the resource server. This
specification defines a three party key distribution protocol to specification defines a three party key distribution protocol to
dynamically distribute this session key from the authorization server dynamically distribute this session key from the authorization server
to the client and the resource server. to the client and the resource server.
The design goal for this mechanism is to support the requirements The design goal for this mechanism is to support the requirements
outlined in Appendix A. In particular, when a server uses this outlined in Appendix A. In particular, when a server uses this
mechanism, a passive attacker will be unable to use an eavesdropped mechanism, a passive attacker will be unable to use an eavesdropped
access token exchanged between the client and the resource server. access token exchanged between the client and the resource server.
In addition, this mechanism helps secure the access token against In addition, this mechanism helps secure the access token against
leakage when sent over a secure channel to the wrong resource server leakage when sent over a secure channel to the wrong resource server
if the client provided information about the resource server it wants if the client provided information about the resource server it wants
to interact with in the request to the authorization server. to interact with in the request to the authorization server.
Since a keyed message digest only provides integrity protection and Since a keyed message digest only provides integrity protection and
data-origin authentication confidentiality protection can only be data-origin authentication confidentiality protection can only be
added by the usage of Transport Layer Security (TLS). This added by the usage of Transport Layer Security (TLS). This
skipping to change at page 5, line 18 skipping to change at page 4, line 22
'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY', and 'OPTIONAL' in this 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY', and 'OPTIONAL' in this
specification are to be interpreted as described in [RFC2119]. specification are to be interpreted as described in [RFC2119].
This specification uses the Augmented Backus-Naur Form (ABNF) This specification uses the Augmented Backus-Naur Form (ABNF)
notation of [I-D.ietf-httpbis-p1-messaging]. Additionally, the notation of [I-D.ietf-httpbis-p1-messaging]. Additionally, the
following rules are included from [RFC2617]: auth-param. following rules are included from [RFC2617]: auth-param.
Session Key: Session Key:
The terms mac key, session key, and symmetric key are used The terms mac key, session key, and symmetric key are used
interchangably and refer to the cryptographic keying material interchangeably and refer to the cryptographic keying material
established between the client and the resource server. This established between the client and the resource server. This
temporary key used between the client and the resource server, temporary key used between the client and the resource server,
with a lifetime limited to the lifetime of the access token. This with a lifetime limited to the lifetime of the access token. This
session key is generated by the authorization server. session key is generated by the authorization server.
Authenticator: Authenticator:
A record containing information that can be shown to have been A record containing information that can be shown to have been
recently generated using the session key known only by the client recently generated using the session key known only by the client
and the resource server. and the resource server.
Message Authentication Code (MAC): Message Authentication Code (MAC):
Message authentication codes (MACs) are hash functions that take Message authentication codes (MACs) are hash functions that take
two distinct inputs, a message and a secret key, and produce a two distinct inputs, a message and a secret key, and produce a
fixed-size output. The design goal is that it is fixed-size output. The design goal is that it is
practically infeasible to produce the same output without practically infeasible to produce the same output without
knowledge of the key. The terms keyed message digest functions knowledge of the key. The terms keyed message digest functions
and MACs are used interchangably. and MACs are used interchangeably.
3. Architecture 3. Architecture
The architecture of the proposal described in this document assumes The architecture of the proposal described in this document assumes
that the authorization server acts as a trusted third party that that the authorization server acts as a trusted third party that
provides session keys to clients and to resource servers. These provides session keys to clients and to resource servers. These
session keys are used by the client and the resource server as input session keys are used by the client and the resource server as input
to a MAC. In order to obtain the session key the client interacts to a MAC. In order to obtain the session key the client interacts
with the authorization server as part of the a normal grant exchange. with the authorization server as part of the a normal grant exchange.
This is shown in an abstract way in Figure 1. Together with the This is shown in an abstract way in Figure 1. Together with the
skipping to change at page 10, line 36 skipping to change at page 9, line 29
} }
QUESTIONS: An alternative to the use of a JWT to convey the access QUESTIONS: An alternative to the use of a JWT to convey the access
token with the encrypted mac_key is use the token introspect token with the encrypted mac_key is use the token introspect
[I-D.richer-oauth-introspection]. What mechanism should be [I-D.richer-oauth-introspection]. What mechanism should be
described? What should be mandatory to implement? described? What should be mandatory to implement?
QUESTIONS: The above description assumes that the entire access QUESTIONS: The above description assumes that the entire access
token is encrypted but it would be possible to only encrypt the token is encrypted but it would be possible to only encrypt the
session key and to only apply integrity protection to other session key and to only apply integrity protection to other
fields. Is this desireable? fields. Is this desirable?
5. The Authenticator 5. The Authenticator
To access a protected resource the client must be in the possession To access a protected resource the client must be in the possession
of a valid set of session key provided by the authorization server. of a valid set of session key provided by the authorization server.
The client constructs the authenticator, as described in Section 5.1. The client constructs the authenticator, as described in Section 5.1.
5.1. The Authenticator 5.1. The Authenticator
The client constructs the authenticator and adds the resulting fields The client constructs the authenticator and adds the resulting fields
skipping to change at page 19, line 44 skipping to change at page 17, line 19
integrity of requests and responses, it provides no confidentiality integrity of requests and responses, it provides no confidentiality
protection. Consequently, eavesdroppers will have full access to protection. Consequently, eavesdroppers will have full access to
request content and further messages exchanged between the client and request content and further messages exchanged between the client and
the resource server. This could be problematic when data is the resource server. This could be problematic when data is
exchanged that requires care, such as personal data. exchanged that requires care, such as personal data.
When TLS is used then confidentiality can be ensured and with the use When TLS is used then confidentiality can be ensured and with the use
of the TLS channel binding feature it ensures that the TLS channel is of the TLS channel binding feature it ensures that the TLS channel is
cryptographically bound to the used MAC token. TLS in combination cryptographically bound to the used MAC token. TLS in combination
with channel bindings bound to the MAC token provide security with channel bindings bound to the MAC token provide security
superiour to the OAuth Bearer Token. superior to the OAuth Bearer Token.
The use of TLS in combination with the MAC token is highly The use of TLS in combination with the MAC token is highly
recommended to ensure the confidentiality of the user's data. recommended to ensure the confidentiality of the user's data.
8.3. Authentication of Resource Servers 8.3. Authentication of Resource Servers
This protocol allows clients to verify the authenticity of resource This protocol allows clients to verify the authenticity of resource
servers in two ways: servers in two ways:
1. The resource server demonstrates possession of the session key by 1. The resource server demonstrates possession of the session key by
skipping to change at page 20, line 28 skipping to change at page 18, line 4
If an attacker were to gain access to these MAC keys - or worse, to If an attacker were to gain access to these MAC keys - or worse, to
the resource server's or the authorization server's database of all the resource server's or the authorization server's database of all
such MAC keys - he or she would be able to perform any action on such MAC keys - he or she would be able to perform any action on
behalf of any client. behalf of any client.
It is therefore paramount to the security of the protocol that these It is therefore paramount to the security of the protocol that these
session keys are protected from unauthorized access. session keys are protected from unauthorized access.
8.5. Entropy of Session Keys 8.5. Entropy of Session Keys
Unless TLS is used between the client and the resource server, Unless TLS is used between the client and the resource server,
eavesdroppers will have full access to requests sent by the client. eavesdroppers will have full access to requests sent by the client.
They will thus be able to mount offline brute-force attacks to They will thus be able to mount off-line brute-force attacks to
recover the session key used to compute the keyed message digest. recover the session key used to compute the keyed message digest.
Authorization servers should be careful to generate fresh and unique Authorization servers should be careful to generate fresh and unique
session keys with sufficient entrophy to resist such attacks for at session keys with sufficient entropy to resist such attacks for at
least the length of time that the session keys are valid. least the length of time that the session keys are valid.
For example, if a session key is valid for one day, authorization For example, if a session key is valid for one day, authorization
servers must ensure that it is not possible to mount a brute force servers must ensure that it is not possible to mount a brute force
attack that recovers the session key in less than one day. Of attack that recovers the session key in less than one day. Of
course, servers are urged to err on the side of caution, and use the course, servers are urged to err on the side of caution, and use the
longest session key reasonable. longest session key reasonable.
It is equally important that the pseudo-random number generator It is equally important that the pseudo-random number generator
(PRNG) used to generate these session keys be of sufficiently high (PRNG) used to generate these session keys be of sufficiently high
quality. Many PRNG implementations generate number sequences that quality. Many PRNG implementations generate number sequences that
may appear to be random, but which nevertheless exhibit patterns, may appear to be random, but which nevertheless exhibit patterns,
which make cryptanalysis easier. Implementers are advised to follow which make cryptanalysis easier. Implementers are advised to follow
the guidance on random number generation in [RFC4086]. the guidance on random number generation in [RFC4086].
8.6. Denial of Service / Resource Exhaustion Attacks 8.6. Denial of Service / Resource Exhaustion Attacks
This specification includes a number of features which may make This specification includes a number of features which may make
resource exhaustion attacks against resource servers possible. For resource exhaustion attacks against resource servers possible. For
example, a resource server may need to need to consult backend example, a resource server may need to need to consult back-end
databases and the authorization server to verify an incoming request databases and the authorization server to verify an incoming request
including an access token before granting access to the protected including an access token before granting access to the protected
resource. resource.
An attacker may exploit this to perform a denial of service attack by An attacker may exploit this to perform a denial of service attack by
sending a large number of invalid requests to the server. The sending a large number of invalid requests to the server. The
computational overhead of verifying the keyed message digest alone computational overhead of verifying the keyed message digest alone
is, however, not sufficient to mount a denial of service attack since is, however, not sufficient to mount a denial of service attack since
keyed message digest functions belong to the computationally fastest keyed message digest functions belong to the computationally fastest
cryptographic algorithms. The usage of TLS does, however, require cryptographic algorithms. The usage of TLS does, however, require
skipping to change at page 22, line 11 skipping to change at page 19, line 31
include, in the set of URL parameters or form content, a nonce include, in the set of URL parameters or form content, a nonce
generated by the server and tied to the user's session, which generated by the server and tied to the user's session, which
indicates that only the server could have triggered the action. indicates that only the server could have triggered the action.
Recently, the Origin HTTP header has been proposed and deployed in Recently, the Origin HTTP header has been proposed and deployed in
some browsers. This header indicates the scheme, host, and port of some browsers. This header indicates the scheme, host, and port of
the originator of a request. Some web applications may use this the originator of a request. Some web applications may use this
Origin header as a defense against CSRF. Origin header as a defense against CSRF.
To keep this specification simple, HTTP headers are not part of the To keep this specification simple, HTTP headers are not part of the
string to be MAC'ed. As a result, MAC authentication cannot defend string to be MACed. As a result, MAC authentication cannot defend
against header spoofing, and a web site that uses the Host header to against header spoofing, and a web site that uses the Host header to
defend against CSRF attacks cannot use MAC authentication to defend defend against CSRF attacks cannot use MAC authentication to defend
against active network attackers. Sites that want the full against active network attackers. Sites that want the full
protection of MAC Authentication should use traditional, cookie-tied protection of MAC Authentication should use traditional, cookie-tied
CSRF defenses. CSRF defenses.
8.9. Protecting HTTP Header Fields 8.9. Protecting HTTP Header Fields
This specification provides flexibility for selectively protecting This specification provides flexibility for selectively protecting
header fields and even the body of the message. At a minimum the header fields and even the body of the message. At a minimum the
skipping to change at page 23, line 38 skipping to change at page 20, line 28
Additional keyed message digest algorithms are registered on the Additional keyed message digest algorithms are registered on the
advice of one or more Designated Experts (appointed by the IESG or advice of one or more Designated Experts (appointed by the IESG or
their delegate), with a Specification Required (using terminology their delegate), with a Specification Required (using terminology
from [RFC5226]). However, to allow for the allocation of values from [RFC5226]). However, to allow for the allocation of values
prior to publication, the Designated Expert(s) may approve prior to publication, the Designated Expert(s) may approve
registration once they are satisfied that such a specification will registration once they are satisfied that such a specification will
be published. be published.
Registration requests should be sent to the [TBD]@ietf.org mailing Registration requests should be sent to the [TBD]@ietf.org mailing
list for review and comment, with an appropriate subject (e.g., list for review and comment, with an appropriate subject (e.g.,
"Request for MAC Algorithm: example"). [[ Note to RFC-EDITOR: The "Request for MAC Algorithm: example"). [[ Note to RFC-EDITOR: The
name of the mailing list should be determined in consultation with name of the mailing list should be determined in consultation with
the IESG and IANA. Suggested name: http-mac-ext-review. ]] the IESG and IANA. Suggested name: http-mac-ext-review. ]]
Within at most 14 days of the request, the Designated Expert(s) will Within at most 14 days of the request, the Designated Expert(s) will
either approve or deny the registration request, communicating this either approve or deny the registration request, communicating this
decision to the review list and IANA. Denials should include an decision to the review list and IANA. Denials should include an
explanation and, if applicable, suggestions as to how to make the explanation and, if applicable, suggestions as to how to make the
request successful. request successful.
Decisions (or lack thereof) made by the Designated Expert can be Decisions (or lack thereof) made by the Designated Expert can be
first appealed to Application Area Directors (contactable using first appealed to Application Area Directors (contactable using app-
app-ads@tools.ietf.org email address or directly by looking up their ads@tools.ietf.org email address or directly by looking up their
email addresses on http://www.iesg.org/ website) and, if the email addresses on http://www.iesg.org/ website) and, if the
appellant is not satisfied with the response, to the full IESG (using appellant is not satisfied with the response, to the full IESG (using
the iesg@iesg.org mailing list). the iesg@iesg.org mailing list).
IANA should only accept registry updates from the Designated IANA should only accept registry updates from the Designated
Expert(s), and should direct all requests for registration to the Expert(s), and should direct all requests for registration to the
review mailing list. review mailing list.
9.2.1. Registration Template 9.2.1. Registration Template
skipping to change at page 28, line 11 skipping to change at page 23, line 34
In the appendix of this document we re-use content from [RFC4962] and In the appendix of this document we re-use content from [RFC4962] and
the authors would like thank Russ Housely and Bernard Aboba for their the authors would like thank Russ Housely and Bernard Aboba for their
work on RFC 4962. work on RFC 4962.
11. References 11. References
11.1. Normative References 11.1. Normative References
[I-D.ietf-httpbis-p1-messaging] [I-D.ietf-httpbis-p1-messaging]
Fielding, R. and J. Reschke, "Hypertext Transfer Protocol Fielding, R. and J. Reschke, "Hypertext Transfer Protocol
(HTTP/1.1): Message Syntax and Routing", (HTTP/1.1): Message Syntax and Routing", draft-ietf-
draft-ietf-httpbis-p1-messaging-23 (work in progress), httpbis-p1-messaging-25 (work in progress), November 2013.
July 2013.
[I-D.ietf-jose-json-web-encryption] [I-D.ietf-jose-json-web-encryption]
Jones, M., Rescorla, E., and J. Hildebrand, "JSON Web Jones, M., Rescorla, E., and J. Hildebrand, "JSON Web
Encryption (JWE)", draft-ietf-jose-json-web-encryption-12 Encryption (JWE)", draft-ietf-jose-json-web-encryption-19
(work in progress), July 2013. (work in progress), December 2013.
[I-D.ietf-oauth-json-web-token] [I-D.ietf-oauth-json-web-token]
Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
(JWT)", draft-ietf-oauth-json-web-token-10 (work in (JWT)", draft-ietf-oauth-json-web-token-14 (work in
progress), July 2013. progress), December 2013.
[I-D.richer-oauth-introspection] [I-D.richer-oauth-introspection]
Richer, J., "OAuth Token Introspection", Richer, J., "OAuth Token Introspection", draft-richer-
draft-richer-oauth-introspection-04 (work in progress), oauth-introspection-04 (work in progress), May 2013.
May 2013.
[I-D.tschofenig-oauth-audience] [I-D.tschofenig-oauth-audience]
Tschofenig, H., "OAuth 2.0: Audience Information", Tschofenig, H., "OAuth 2.0: Audience Information", draft-
draft-tschofenig-oauth-audience-00 (work in progress), tschofenig-oauth-audience-00 (work in progress), February
February 2013. 2013.
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, November 1996. Bodies", RFC 2045, November 1996.
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
Hashing for Message Authentication", RFC 2104, Hashing for Message Authentication", RFC 2104, February
February 1997. 1997.
[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.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, Resource Identifier (URI): Generic Syntax", STD 66, RFC
RFC 3986, January 2005. 3986, January 2005.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 5226, IANA Considerations Section in RFCs", BCP 26, RFC 5226,
May 2008. May 2008.
[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.
[RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265,
April 2011. April 2011.
[RFC6749] Hardt, D., "The OAuth 2.0 Authorization Framework", [RFC6749] Hardt, D., "The OAuth 2.0 Authorization Framework", RFC
RFC 6749, October 2012. 6749, October 2012.
[W3C.REC-html401-19991224] [W3C.REC-html401-19991224]
Hors, A., Raggett, D., and I. Jacobs, "HTML 4.01 Hors, A., Raggett, D., and I. Jacobs, "HTML 4.01
Specification", World Wide Web Consortium Specification", World Wide Web Consortium Recommendation
Recommendation REC-html401-19991224, December 1999, REC-html401-19991224, December 1999,
<http://www.w3.org/TR/1999/REC-html401-19991224>. <http://www.w3.org/TR/1999/REC-html401-19991224>.
11.2. Informative References 11.2. Informative References
[I-D.hardjono-oauth-kerberos] [I-D.hardjono-oauth-kerberos]
Hardjono, T., "OAuth 2.0 support for the Kerberos V5 Hardjono, T., "OAuth 2.0 support for the Kerberos V5
Authentication Protocol", draft-hardjono-oauth-kerberos-01 Authentication Protocol", draft-hardjono-oauth-kerberos-01
(work in progress), December 2010. (work in progress), December 2010.
[I-D.tschofenig-oauth-hotk] [I-D.tschofenig-oauth-hotk]
Bradley, J., Hunt, P., Nadalin, A., and H. Tschofenig, Bradley, J., Hunt, P., Nadalin, A., and H. Tschofenig,
"The OAuth 2.0 Authorization Framework: Holder-of-the-Key "The OAuth 2.0 Authorization Framework: Holder-of-the-Key
Token Usage", draft-tschofenig-oauth-hotk-02 (work in Token Usage", draft-tschofenig-oauth-hotk-02 (work in
progress), February 2013. progress), February 2013.
[NIST-FIPS-180-3] [NIST-FIPS-180-3]
National Institute of Standards and Technology, "Secure National Institute of Standards and Technology, "Secure
Hash Standard (SHS). FIPS PUB 180-3, October 2008". Hash Standard (SHS). FIPS PUB 180-3, October 2008",
October 2008.
[NIST800-63] [NIST800-63]
Burr, W., Dodson, D., Perlner, R., Polk, T., Gupta, S., Burr, W., Dodson, D., Perlner, R., Polk, T., Gupta, S.,
and E. Nabbus, "NIST Special Publication 800-63-1, and E. Nabbus, "NIST Special Publication 800-63-1,
INFORMATION SECURITY", December 2008. INFORMATION SECURITY", December 2008.
[RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, "Randomness
Requirements for Security", BCP 106, RFC 4086, June 2005. Requirements for Security", BCP 106, RFC 4086, June 2005.
[RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The [RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The
Kerberos Network Authentication Service (V5)", RFC 4120, Kerberos Network Authentication Service (V5)", RFC 4120,
July 2005. July 2005.
[RFC4279] Eronen, P. and H. Tschofenig, "Pre-Shared Key Ciphersuites [RFC4279] Eronen, P. and H. Tschofenig, "Pre-Shared Key Ciphersuites
for Transport Layer Security (TLS)", RFC 4279, for Transport Layer Security (TLS)", RFC 4279, December
December 2005. 2005.
[RFC4962] Housley, R. and B. Aboba, "Guidance for Authentication, [RFC4962] Housley, R. and B. Aboba, "Guidance for Authentication,
Authorization, and Accounting (AAA) Key Management", Authorization, and Accounting (AAA) Key Management", BCP
BCP 132, RFC 4962, July 2007. 132, RFC 4962, July 2007.
[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.
[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.
skipping to change at page 31, line 21 skipping to change at page 26, line 30
the body of this document. This appendix provides information about the body of this document. This appendix provides information about
this thought process that should help to motivate design decision. this thought process that should help to motivate design decision.
A.1. Security and Privacy Threats A.1. Security and Privacy Threats
The following list presents several common threats against protocols The following list presents several common threats against protocols
utilizing some form of tokens. This list of threats is based on NIST utilizing some form of tokens. This list of threats is based on NIST
Special Publication 800-63 [NIST800-63]. We exclude a discussion of Special Publication 800-63 [NIST800-63]. We exclude a discussion of
threats related to any form of identity proofing and authentication threats related to any form of identity proofing and authentication
of the Resource Owner to the Authorization Server since these of the Resource Owner to the Authorization Server since these
procedures are not part of the OAuth 2.0 protocol specificaiton procedures are not part of the OAuth 2.0 protocol specification
itself. itself.
Token manufacture/modification: Token manufacture/modification:
An attacker may generate a bogus tokens or modify the token An attacker may generate a bogus tokens or modify the token
content (such as authentication or attribute statements) of an content (such as authentication or attribute statements) of an
existing token, causing Resource Server to grant inappropriate existing token, causing Resource Server to grant inappropriate
access to the Client. For example, an attacker may modify the access to the Client. For example, an attacker may modify the
token to extend the validity period. A Client may modify the token to extend the validity period. A Client may modify the
token to have access to information that they should not be able token to have access to information that they should not be able
skipping to change at page 33, line 23 skipping to change at page 28, line 43
has to make sure it does not distribute the access token to entities has to make sure it does not distribute the access token to entities
other than the intended the Resource Server. For that purpose the other than the intended the Resource Server. For that purpose the
Client will have to authenticate the Resource Server before Client will have to authenticate the Resource Server before
transmitting the access token. transmitting the access token.
A.2.2. Sender Constraint A.2.2. Sender Constraint
Instead of providing confidentiality protection the Authorization Instead of providing confidentiality protection the Authorization
Server could also put the identifier of the Client into the protected Server could also put the identifier of the Client into the protected
token with the following semantic: 'This token is only valid when token with the following semantic: 'This token is only valid when
presented by a Client with the following identifer.' When the access presented by a Client with the following identifier.' When the
token is then presented to the Resource Server how does it know that access token is then presented to the Resource Server how does it
it was provided by the Client? It has to authenticate the Client! know that it was provided by the Client? It has to authenticate the
There are many choices for authenticating the Client to the Resource Client! There are many choices for authenticating the Client to the
Server, for example by using client certificates in TLS [RFC5246], or Resource Server, for example by using client certificates in TLS
pre-shared secrets within TLS [RFC4279]. The choice of the preferred [RFC5246], or pre-shared secrets within TLS [RFC4279]. The choice of
authentication mechanism and credential type may depend on a number the preferred authentication mechanism and credential type may depend
of factors, including on a number of factors, including
o security properties o security properties
o available infrastructure o available infrastructure
o library support o library support
o credential cost (financial) o credential cost (financial)
o performance o performance
o integration into the existing IT infrastructure o integration into the existing IT infrastructure
skipping to change at page 41, line 14 skipping to change at page 36, line 30
to-end basis. to-end basis.
The key aspect in this use case is therefore to offer end-to-end The key aspect in this use case is therefore to offer end-to-end
security in the presence of load balancers via application layer security in the presence of load balancers via application layer
security. security.
A.4.3. Preventing Access Token Re-Use by the Resource Server A.4.3. Preventing Access Token Re-Use by the Resource Server
Imagine a scenario where a resource server that receives a valid Imagine a scenario where a resource server that receives a valid
access token re-uses it with other resource server. The reason for access token re-uses it with other resource server. The reason for
re-use may be malicious or may well be legimiate. In a legimiate use re-use may be malicious or may well be legitimate. In a legitimate
case consider a case where the resource server needs to consult third use case consider a case where the resource server needs to consult
party resource servers to complete the requested operation. In both third party resource servers to complete the requested operation. In
cases it may be assumed that the scope of the access token is both cases it may be assumed that the scope of the access token is
sufficiently large that it allows such a re-use. For example, sufficiently large that it allows such a re-use. For example,
imagine a case where a company operates email services as well as imagine a case where a company operates email services as well as
picture sharing services and that company had decided to issue access picture sharing services and that company had decided to issue access
tokens with a scope that allows access to both services. tokens with a scope that allows access to both services.
With this use case the desire is to prevent such access token re-use. With this use case the desire is to prevent such access token re-use.
This also implies that the legimiate use cases require additional This also implies that the legitimate use cases require additional
enhancements for request chaining. enhancements for request chaining.
A.4.4. TLS Channel Binding Support A.4.4. TLS Channel Binding Support
In this use case we consider the scenario where an OAuth 2.0 request In this use case we consider the scenario where an OAuth 2.0 request
to a protected resource is secured using TLS but the client and the to a protected resource is secured using TLS but the client and the
resource server demand that the underlying TLS exchange is bound to resource server demand that the underlying TLS exchange is bound to
additional application layer security to prevent cases where the TLS additional application layer security to prevent cases where the TLS
connection is terminated at a load balancer or a TLS proxy is used connection is terminated at a load balancer or a TLS proxy is used
that splits the TLS connection into two separate connections. that splits the TLS connection into two separate connections.
skipping to change at page 42, line 15 skipping to change at page 37, line 19
Authors' Addresses Authors' Addresses
Justin Richer Justin Richer
The MITRE Corporation The MITRE Corporation
Email: jricher@mitre.org Email: jricher@mitre.org
William Mills William Mills
Yahoo! Inc. Yahoo! Inc.
Phone:
Email: wmills@yahoo-inc.com Email: wmills@yahoo-inc.com
Hannes Tschofenig (editor) Hannes Tschofenig (editor)
Nokia Siemens Networks Austria
Linnoitustie 6
Espoo 02600
Finland
Phone: +358 (50) 4871445
Email: Hannes.Tschofenig@gmx.net Email: Hannes.Tschofenig@gmx.net
URI: http://www.tschofenig.priv.at URI: http://www.tschofenig.priv.at
Phil Hunt Phil Hunt
Oracle Corporation Oracle Corporation
Phone:
Email: phil.hunt@yahoo.com Email: phil.hunt@yahoo.com
 End of changes. 43 change blocks. 
125 lines changed or deleted 115 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/