OAuth P. Hunt, Ed. Internet-Draft Oracle Corporation Intended status: Informational J. Richer Expires: April 21, 2016 W. Mills P. Mishra Oracle Corporation H. Tschofenig ARM Limited October 19, 2015 OAuth 2.0 Proof-of-Possession (PoP) Security Architecturedraft-ietf-oauth-pop-architecture-04.txtdraft-ietf-oauth-pop-architecture-05.txt Abstract The OAuth 2.0 bearer token specification, as defined in RFC 6750, allows any party in possession of a bearer token (a "bearer") to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens must to be protected from disclosure in transit and at rest. Some scenarios demand additional security protection whereby a client needs to demonstrate possession of cryptographic keying material when accessing a protected resource. This document motivates the development of the OAuth 2.0 proof-of-possession security mechanism. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on April 21, 2016. Copyright Notice Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . .23 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.1. Preventing Access Token Re-Use by the Resource Server . .34 3.2. TLS Channel Binding Support . . . . . . . . . . . . . . . 4 3.3. Access to a Non-TLS Protected Resource . . . . . . . . . 4 3.4. Offering Application Layer End-to-End Security . . . . . 5 4. Security and Privacy Threats . . . . . . . . . . . . . . . . 5 5. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 6 6. Threat Mitigation . . . . . . . . . . . . . . . . . . . . . .6 5.1.10 6.1. Confidentiality Protection . . . . . . . . . . . . . . .7 5.2.11 6.2. Sender Constraint . . . . . . . . . . . . . . . . . . . .7 5.3.11 6.3. Key Confirmation . . . . . . . . . . . . . . . . . . . .8 5.4.12 6.4. Summary . . . . . . . . . . . . . . . . . . . . . . . . .9 6.13 7. Architecture . . . . . . . . . . . . . . . . . . . . . . . .10 7. Requirements14 7.1. Client and Authorization Server Interaction . . . . . . . 14 7.1.1. Symmetric Keys . . . . . . . . . . . . . . . . . . . 14 7.1.2. Asymmetric Keys . . . . . . . . . . . . . . . . . . . 16 7.2. Client and Resource Server Interaction . . . . . . . . . 17 7.3. Resource and Authorization Server Interaction (Token Introspection) . . . . . . . . . . . . . . . . . . .15. . 18 8. Security Considerations . . . . . . . . . . . . . . . . . . .1819 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 11.1. Normative References . . . . . . . . . . . . . . . . . . 19 11.2. Informative References . . . . . . . . . . . . . . . . .1920 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 1. IntroductionAt the time of writing theThe OAuth 2.0 protocol family ([RFC6749], [RFC6750], and [RFC6819]) offer a singlestandardized security mechanismtoken type known as the "bearer" token to access protectedresources, namely the bearer token.resources. RFC 6750 [RFC6750] specifies the bearer token mechanism and defines it as follows: "A security token with the property that any party in possession of the token (a "bearer") can use the token in any way that any other party in possession of it can. Using a bearer token does not require a bearer to prove possession of cryptographic key material." The bearer token meets the security needs of a number of use cases the OAuth 2.0 protocol had originally been designed for. There are, however, other scenarios that require stronger security properties and ask for active participation of the OAuth client in form of cryptographic computations when presenting an access token to a resource server. This document outlines additional use cases requiring stronger security protection in Section 3, identifies threats in Section 4, proposes different ways to mitigate those threats in Section5,6, outlines an architecture for a solution that builds on top of the existing OAuth 2.0 framework in Section6,7, and concludes with a requirements list in Section7.5. 2. Terminology The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY', and 'OPTIONAL' in this specification are to be interpreted as described in [RFC2119], with the important qualification that, unless otherwise stated, these terms apply to the design of the protocol, not its implementation or application. 3. Use Cases The main use case that motivatesbetter-than-bearerimprovement upon "bearer" token security is the desire of resource servers to obtain additional assurance that the client is indeed authorized to present an access token. The expectation is that the use of additional credentials (symmetric or asymmetric keying material) will encourage developers to take additional precautions when transferring and storing access token in combination with these credentials. Additional use cases listed below provide further requirements for the solution development. Note that a single solution does not necessarily need to offer support for all use cases. 3.1. Preventing Access Token Re-Use by the Resource ServerImagineIn a scenario where a resource serverthatreceives a valid accesstokentoken, the resource server then re-uses it with other resource server. The reason for re-use may be malicious or may well be legitimate. In a legitimateuse case considercase, the intent is to support chaining of computations whereby a resource server needs to consult other third party resource servers to completethea requested operation. In both cases it may be assumed that the scope of the access token is sufficiently large that it allows such are- use.re-use. For example, imagine a case where a company operates email services as well as picture sharing services and that company had decided to issue access tokens with a scope that allows access to both services. With this use case the desire is to prevent such access token re-use. This also implies that the legitimate use cases require additional enhancements for request chaining. 3.2. TLS Channel Binding Support 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 resource server demand that the underlying TLS exchange is bound to additional application layer security to prevent cases where the TLS connection is terminated at a TLS intermediary, which splits the TLS connection into two separate connections. In this use case additional informationisshould be conveyed to the resource server to ensure that no entity entity has tampered with the TLS connection. 3.3. Access to a Non-TLS Protected Resource This use case is for a web client that needs to access a resource that makes data available (such as videos) without offering integrity and confidentiality protection using TLS. Still, the initial resource request using OAuth, which includes the access token, must be protected against various threats (e.g., token replay, token modification). While it is possible to utilize bearer tokens in this scenario with TLS protection when the request to the protected resource is made, as described in [RFC6750], there may be the desire to avoid using TLS between the client and the resource server at all. In such a case the bearer token approach is not possible since it relies on TLS for ensuring integrity and confidentiality protection of the access token exchange since otherwise replay attacks are possible: First, an eavesdropper may steal an access token andrepresentpresent it at a different resource server. Second, an eavesdropper may steal an access token and replay it against the same resource server at a later point in time. In both cases, if the attack is successful, the adversary gets access to the resource owners data or may perform an operation selected by the adversary (e.g., sending a message). Note that the adversary may obtain the access token (if the recommendations in [RFC6749] and [RFC6750] are not followed) using a number of ways, including eavesdropping the communication on the wireless link. Consequently, the important assumption in this use case is that a resource server does not have TLS support and the security solution should work in such a scenario. Furthermore, it may not be necessary to provide authentication of the resource server towards the client. 3.4. Offering Application Layer End-to-End Security In Web deployments resource servers are often placed behind load balancers, which are deployed by the same organization that operates the resource servers. These load balancers may terminate the TLS connection setup and HTTP traffic is transmittedin the clearwithout TLS protection from the load balancer to the resource server. With application layer security in addition to the underlying TLS security it is possible to allow application servers to perform cryptographic verification on an end-to-end basis. 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. Enterprise networks also deploy proxies that inspect traffic and thereby break TLS. 4. Security and Privacy Threats The following list presents several common threats against protocols utilizing some form oftokens.token. This list of threats is based on NIST Special Publication 800-63 [NIST800-63]. We exclude a discussion of threats related to any form of identity proofing and authentication of the resource owner to the authorization server since these procedures are not part of the OAuth 2.0 protocol specification itself. Token manufacture/modification: An attacker may generate a bogus tokens or modify the token content (such as authentication or attribute statements) of an existing token, causing resource server to grant inappropriate access to the client. For example, an attacker 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 to view. Token disclosure: Tokens may contain personal data, such as real name, age or birthday, payment information, etc. Token redirect: An attacker uses the token generated for consumption by the resource server to obtain access to another resource server. Token reuse: An attacker attempts to use a token that has already been used once with a resource server. The attacker may be an eavesdropper who observes the communication exchange or, worse, one of the communication end points. A client may, for example, leak access tokens because it cannot keep secrets confidential. A client may alsore-usereuse access tokens for some other resource servers. Finally, a resource server may use a token it had obtained from a client and use it with another resource server that the client interacts with. A resource server, offering relatively unimportant application services, may attempt to use an access token obtained from a client to access a high-value service, such as a payment service, on behalf of the client using the same access token. Token repudiation: Token repudiation refers to a property whereby a resource server is given an assurance that the authorization server cannot deny to have created a token for the client. 5.Threat Mitigation A large rangeRequirements RFC 4962 [RFC4962] gives useful guidelines for designers ofthreats can be mitigated by protectingauthentication and key management protocols. While RFC 4962 was written with thecontent ofAAA framework used for network access authentication in mind thetoken,offered suggestions are useful forexample using a digital signature or a keyed message digest. Alternatively,thecontentdesign ofthe token could be passed by reference rather than by value (requiring a separate message exchangeother key management systems as well. The following requirements list applies OAuth 2.0 terminology toresolvethereference to the token content). To simplify the subsequent description we assumerequirements outlined in RFC 4962. These requirements include Cryptographic Algorithm Independent: The key management protocol MUST be cryptographic algorithm independent. Strong, fresh session keys: Session keys MUST be strong and fresh. Each session deserves an independent session key, i.e., one that is generated specifically for thetoken itselfintended use. In context of OAuth this means that keying material isdigitally signedcreated in such a way that can only be used by theauthorization servercombination of a client instance, protected resource, andtherefore cannot be modified. To deal with token redirect it is important for theauthorizationserver to includescope. Limit Key Scope: Following theidentifierprinciple ofthe intended recipient - the resource server. A resource server must not be allowed to acceptleast privilege, parties MUST NOT have accesstokensto keying material thatare not meant for its consumption. To provide protection against token disclosure two approaches are possible, namely (a)is not needed toinclude sensitive information inside the token or (b)perform their role. Any protocol that is used toensure confidentiality protection. The latter approach requires at least the communication interaction between the client and the authorization server as well as the interaction betweenestablish session keys MUST specify theclient andscope for session keys, clearly identifying theresource server to experience confidentiality protection. As an example, TLS with a ciphersuite that offers confidentiality protection hasparties tobe applied (which is currently true for all ciphersuites, except for one). Encryptingwhom thetoken content itselfsession key isanother alternative. In our scenario the authorization server would, for example, encrypt the token content with a symmetric key shared with the resource server. To deal with token reuse more choices areavailable.5.1. Confidentiality Protection In this approach confidentiality protection of the exchange is provided on the communication interfaces between the client and the resource server, and between the client and the authorization server. No eavesdropper on the wire is able to observe the token exchange. Consequently, aReplay Detection Mechanism: The key management protocol exchanges MUST be replaybyprotected. Replay protection allows athird party is not possible. An authorization server wantsprotocol message recipient toensurediscard any message thatit only hands out tokens to clients it has authenticated first and who are authorized. For this purpose, authentication of the client to the authorization server will bewas recorded during arequirementprevious legitimate dialogue and presented as though it belonged toensure adequate protection against a range of attacks. This is, however, true forthedescriptioncurrent dialogue. Authenticate All Parties: Each party inSection 5.2 and Section 5.3 as well. Furthermore,theclient haskey management protocol MUST be authenticated tomake sure it does not distribute (or leak)theaccess token to entitiesotherthan the intendedparties with whom they communicate. Authentication mechanisms MUST maintain theresource server. For that purposeconfidentiality of any secret values used in theclient will haveauthentication process. Secrets MUST NOT be sent toauthenticate theanother party without confidentiality protection. Authorization: Client and resource serverbefore transmitting the access token. 5.2. Sender Constraint Insteadauthorization MUST be performed. These entities MUST demonstrate possession ofproviding confidentiality protectiontheauthorization server could also put the identifier of the client into the protected token with the following semantic: 'This tokenappropriate keying material, without disclosing it. Authorization isonly valid when presented byREQUIRED whenever a client interacts with an authorization server. Authorization checking prevents an elevation of privilege attack. Keying Material Confidentiality and Integrity: While preserving algorithm independence, confidentiality and integrity of all keying material MUST be maintained. Confirm Cryptographic Algorithm Selection: The selection of thefollowing identifier.' When the access token"best" cryptographic algorithms SHOULD be securely confirmed. The mechanism SHOULD detect attempted roll- back attacks. Uniquely Named Keys: Key management proposals require a robust key naming scheme, particularly where key caching isthen presentedsupported. The key name provides a way tothe resource server how does it knowrefer to a key in a protocol so that itwas provided by the client? It hasis clear toauthenticateall parties which key is being referenced. Objects that cannot be named cannot be managed. All keys MUST be uniquely named, and theclient! There are many choices for authenticatingkey name MUST NOT directly or indirectly disclose theclient tokeying material. Prevent theresource server, for exampleDomino Effect: Compromise of a single client MUST NOT compromise keying material held byusingany other clientcertificates in TLS [RFC5246], or pre-shared secretswithinTLS [RFC4279]. The choice ofthepreferred authentication mechanismsystem, including session keys andcredential type may depend onlong-term keys. Likewise, compromise of anumbersingle resource server MUST NOT compromise keying material held by any other Resource Server within the system. In the context offactors, including o security properties o available infrastructure o library support o credential cost (financial) o performance o integration into the existing IT infrastructure o operational overhead for configuration and distribution of credentials This long list hints toa key hierarchy, this means that thechallengecompromise ofselecting at leastonemandatory-to-implement client authentication mechanism. 5.3. Key Confirmation A variation of the mechanism of sender authentication, describednode inSection 5.2, is to replace authentication withtheproof-of- possession of a specific (session) key, i.e.,keyconfirmation. In this model the resource server wouldhierarchy must notauthenticate the client itself but would rather verify whetherdisclose theclient knowsinformation necessary to compromise other branches in thesessionkeyassociated with a specific access token. Examples of this approach can be found withhierarchy. Obviously, theOAuth 1.0 MAC token [RFC5849], and Kerberos [RFC4120] when utilizingcompromise of theAP_REQ/AP_REP exchange (see also [I-D.hardjono-oauth-kerberos] for a comparison between Kerberos and OAuth). To illustrate key confirmationroot of thefirst examples borrow from Kerberos and use symmetrickeycryptography. Assume thathierarchy will compromise all of theauthorization server shareskeys; however, along-term secret withcompromise in one branch MUST NOT result in theresource server, called K(Authorization Server-Resource Server). This secret would be established between them out-of-band. Whencompromise of other branches. There are many implications of this requirement; however, two implications deserve highlighting. First, theclient requests an access tokenscope of theauthorization server creates a fresh and unique session key Kskeying material must be defined andplaces it into the token encryptedunderstood by all parties that communicate with a party that holds that keying material. Second, a party that holds keying material in a key hierarchy must not share that keying material with parties that are associated with other branches in thelong term key K(Authorization Server-Resource Server). Additionally, the authorization server attaches Kskey hierarchy. Bind Key tothe response messageits Context: Keying material MUST be bound to theclient (in addition toappropriate context. The context includes theaccess token itself) over a confidentiality protected channel. Whenfollowing. * The manner in which theclient sends a requestkeying material is expected tothe resource server it hasbe used. * The other parties that are expected touse Kshave access tocompute a keyed message digest fortherequest (in whatever form or whatever layer).keying material. * Theresource server, when receivingexpected lifetime of themessage, retrieveskeying material. Lifetime of a child key SHOULD NOT be greater than the lifetime of its parent in the key hierarchy. Any party with legitimate accesstoken, verifies it and extracts K(Authorization Server-Resource Server)toobtain Ks. This key Ks is then usedkeying material can determine its context. In addition, the protocol MUST ensure that all parties with legitimate access toverifykeying material have thekeyed message digest ofsame context for therequest message. Notekeying material. This requires thatin this example one could imaginethe parties are properly identified and authenticated, so that all of themechanismparties that have access toprotectthetoken itselfkeying material can be determined. The context will include the client and the resource server identities in more than one form. Authorization Restriction: If client authorization isbased on a symmetric key based mechanism to avoid any form of public key infrastructure but this aspect is not further elaborated inrestricted, then thescenario. A similar mechanism can alsoclient SHOULD bedesigned using asymmetric cryptography. Whenmade aware of the restriction. Client Identity Confidentiality: A clientrequests an access tokenhas identity confidentiality when any party other than theauthorizationresource servercreates an ephemeral public / privacy key pair (PK/SK)andplaces the public key PK into the protected token. Whenthe authorization serverreturns the access token tocannot sufficiently identify the clientit also provideswithin thePK/SK key pair over aanonymity set. In comparison to anonymity and pseudonymity, identity confidentialityprotected channel. Whenis concerned with eavesdroppers and intermediaries. A key management protocol SHOULD provide this property. Resource Owner Identity Confidentiality: Resource servers SHOULD be prevented from knowing theclient sends a request toreal or pseudonymous identity of the resource owner, since the authorization serverit has to useis theprivacy key SK to signonly entity involved in verifying therequest. Theresourceserver, when receiving the message, retrieves the access token, verifies it and extracts the public key PK. It uses this ephemeral public keyowner's identity. Collusion: Resource servers that collude can be prevented from using information related toverifytheattached signature. 5.4. Summary As a high level message, there are various ways howresource owner to track thethreatsindividual. That is, two different resource servers can bemitigated and whileprevented from determining that thedetailssame resource owner has authenticated to both ofeach solution is somewhatthem. Authorization servers MUST bind differentthey all ultimately accomplish the goal. The three approaches are: Confidentiality Protection: The weak point with this approach, which is briefly described in Section 5.1, is that the client has to be carefulkeying material towhom it discloses theaccesstoken. What can be done with the token entirely depends on what rights the token entitles the presenter and what constraints it contains. A token could encode the identifier oftokens used for resource servers from different origins (or similar concepts in theclient but there are scenarios whereapp world). AS-to-RS Relationship Anonymity: For solutions using asymmetric key cryptography the clientis not authenticated toMAY conceal information about the resource serveror where the identifier of the client rather representsit wants to interact with. The authorization server MAY reject such anapplication class rather than a single application instance. As such,attempt since itis possible that certain deployments choose a rather liberal approachmay not be able tosecurity and that everyone who is in possession of the access token is grantedenforce accessto the data. Sender Constraint:control decisions. Channel Binding: A solution MUST enable support for channel bindings. Theweak point with this approach, which is briefly describedconcept of channel binding, as defined inSection 5.2, is[RFC5056], allows applications tosetup the authentication infrastructure suchestablish thatclients can be authenticated towards resource servers. Additionally, the authorization server must encodetheidentifiertwo end-points of a secure channel at one network layer are theclient in the token for later verificationsame as at a higher layer by binding authentication at theresource server. Depending on the chosenhigher layerfor providing client-side authentication there may be additional challenges due Web server load balancing, lack of API accesstoidentity information, etc. Key Confirmation: The weak point with this approach, see Section 5.3, istheincreased complexity: a complete key distribution protocol has to be defined. In all cases above it has to be ensured thatchannel at theclient is able to keeplower layer. There are performance concerns with thecredentials secret. 6. Architecture The proof-of-possessionuse of asymmetric cryptography. Although symmetric key cryptography offers better performance asymmetric cryptography offers additional securityconcept assumes thatproperties. A solution MUST therefore offer theauthorization server acts as a trusted third party that binds keyscapability toaccess tokens. These keyssupport both symmetric as well as asymmetric keys. There arethen used by the clientthreats that relate todemonstratethepossessionexperience of thesecret to the resource server when accessing the resource. The resource server, when receiving an access token, needs to verify that the key used by the client matchessoftware developer as well as operational practices. Verifying theone includedservers identity in TLS is discussed at length in [RFC6125]. A number of theaccess token. There are slight differences between the usethreats listed in Section 4 demand protection ofsymmetric keys and asymmetric keys when they are bound tothe access token content and a standardized solution, in form of a JSON- based format, is available with thesubsequent interaction between the client andJWT [RFC7519]. 6. Threat Mitigation A large range of threats can be mitigated by protecting theauthorization server when demonstrating possessioncontent ofthese keys. Figure 1 showsthesymmetric key procedure and Figure 2 illustrates how asymmetric keys are used. While symmetric cryptography provides better performance propertiestoken, for example using a digital signature or a keyed message digest. Alternatively, theusecontent ofasymmetric cryptography allowstheclienttoken could be passed by reference rather than by value (requiring a separate message exchange tokeepresolve theprivate key locallyreference to the token content). To simplify the subsequent description we assume that the token itself is digitally signed by the authorization server andnever exposetherefore cannot be modified. To deal with token redirect it is important for the authorization server toany other party. Withinclude theJSON Web Token (JWT) [RFC7519] a standardized format foridentifier of the intended recipient - the resource server. A resource server must not be allowed to accept access tokensis available. The necessary elementsthat are not meant for its consumption. To provide protection against token disclosure two approaches are possible, namely (a) not tobind symmetricinclude sensitive information inside the token orasymmetric keys(b) toa JWT are described in [I-D.ietf-oauth-proof-of-possession]. Note:ensure confidentiality protection. Thenegotiation of cryptographic algorithmslatter approach requires at least the communication interaction between the client and the authorization serveris not shown inas well as theexamples belowinteraction between the client andassumedthe resource server tobe present inexperience confidentiality protection. As an example, TLS with aprotocol solutionciphersuite that offers confidentiality protection has tomeetbe applied (which is currently true for all ciphersuites, except for one). Encrypting therequirementstoken content itself is another alternative. In our scenario the authorization server would, forcrypto-agility. +---------------+ ^| | // | Authorization | / | Server | // | | / | | (I) // /+---------------+ Access / // Token / / Request // // (II) Access Token +Params / / +Symmetric Key // // / v +-----------+ +------------+ | | | | | | | Resource | | Client | | Server | | | | | | | | | +-----------+ +------------+ Figure 1: Interaction between the Client andexample, encrypt theAuthorization Server (Symmetric Keys). In order to request an accesstokenthe client interactscontent withthe authorization server as part of theanormal grant exchange, as shown in Figure 1. However, it needs to include additional information elements for usesymmetric key shared with thePoP security mechanism, as depicted in message (I).resource server. To deal with token reuse more choices are available. 6.1. Confidentiality Protection Inmessage (II)this approach confidentiality protection of theauthorization server then returnsexchange is provided on therequested access token. In addition tocommunication interfaces between theaccess token itself,client and thesymmetric key is communicated toresource server, and between theclient. This symmetric key is a uniqueclient andfresh session key with sufficient entropy forthegiven lifetime. Furthermore, information withinauthorization server. No eavesdropper on the wire is able to observe theaccesstokentiesexchange. Consequently, a replay by a third party is not possible. An authorization server wants to ensure that it only hands out tokens tothis specific symmetric key. Note:clients it has authenticated first and who are authorized. For thissecurity mechanism to workpurpose, authentication of the clientas well asto theresourceauthorization serverneed to have accesswill be a requirement to ensure adequate protection against a range of attacks. This is, however, true for thesession key. While the key transport mechanism from the authorization server todescription in Section 6.2 and Section 6.3 as well. Furthermore, the client hasbeen explained in the previous paragraph there are three ways for communicating this session key from the authorization servertothe resource server, namely Embedding the symmetric key insidemake sure it does not distribute (or leak) the access tokenitself. This requiresto entities other than the intended the resource server. For that purpose the client will have to authenticate thesymmetric key is confidentiality protected. Theresource serverqueriesbefore transmitting the access token. 6.2. Sender Constraint Instead of providing confidentiality protection the authorization serverforcould also put thesymmetric key. Thisidentifier of the client into the protected token with the following semantic: 'This token isan approach envisionedonly valid when presented by a client with the following identifier.' When the access tokenintrospection endpoint [I-D.ietf-oauth-introspection]. The authorization server andis then presented to the resource serverboth have accesshow does it know that it was provided by the client? It has to authenticate thesame back-end database. Smaller, tightly coupled systems might prefer suchclient! There are many choices for authenticating the client to the resource server, for example by using client certificates in TLS [RFC5246], or pre-shared secrets within TLS [RFC4279]. The choice of the preferred authentication mechanism and credential type may depend on adeployment strategy. +---------------+ ^| | Access Token Req. // | Authorization | +Parameters / | Server | +[Fingerprint] // | | / | | (I) // /+---------------+ / // / / (II) // // Access Token / / +[ephemeral // // asymmetric key pair] / v +-----------+ +------------+ | | | | | | | Resource | | Client | | Server | | | | | | | | | +-----------+ +------------+ Figure 2: Interaction betweennumber of factors, including o security properties o available infrastructure o library support o credential cost (financial) o performance o integration into theClientexisting IT infrastructure o operational overhead for configuration andthe Authorization Server (Asymmetric Keys). The usedistribution ofasymmetric keys is slightly different sincecredentials This long list hints to the challenge of selecting at least one mandatory-to-implement clientorauthentication mechanism. 6.3. Key Confirmation A variation of theserver could be involvedmechanism of sender authentication, described in Section 6.2, is to replace authentication with thegenerationproof-of- possession ofthe ephemerala specific (session) key, i.e., keypair. This exchange is shown in Figure 1. Ifconfirmation. In this model the resource server would not authenticate the clientgeneratesitself but would rather verify whether the client knows the session keypair it either includesassociated with afingerprintspecific access token. Examples ofthe public key or the public key in the request to the authorization server. The authorization server would includethisfingerprint or public key in the confirmation claim insideapproach can be found with theaccessOAuth 1.0 MAC token [RFC5849], andthereby bind the asymmetric key pair to the token. IfKerberos [RFC4120] when utilizing theclient did not provide a fingerprint orAP_REQ/AP_REP exchange (see also [I-D.hardjono-oauth-kerberos] for apubliccomparison between Kerberos and OAuth). To illustrate keyin the request thenconfirmation, theauthorization serverfirst example isasked to create an ephemeral asymmetricborrowed from Kerberos and use symmetric keypair, bindscryptography. Assume that thefingerprint ofauthorization server shares a long-term secret with thepublic key toresource server, called K(Authorization Server-Resource Server). This secret would be established between them out-of-band. When the client requests an accesstoken, and returnstoken theasymmetricauthorization server creates a fresh and unique session keypair (publicKs andprivate key) toplaces it into theclient. Note that there is a strong preference for generatingtoken encrypted with theprivate/publiclong term keypair locally at the client rather than at the server. The specification describing the interaction between the client andK(Authorization Server-Resource Server). Additionally, the authorizationserver, as shown in Figure 1 and in Figure 2, can be found in [I-D.ietf-oauth-pop-key-distribution]. Onceserver attaches Ks to the response message to the clienthas obtained(in addition to thenecessaryaccess tokenand keying material it can start to interact with the resource server. To demonstrate possession ofitself) over a confidentiality protected channel. When thekey boundclient sends a request to theaccess tokenresource server itneedshas toapply this keyuse Ks tothe request by computingcompute a keyed message digest(i.e., a symmetric key-based cryptographic primitive) or a digital signature (i.e., an asymmetric cryptographic computation). Whenfor the request (in whatever form or whatever layer). The resourceserver receivesserver, when receiving therequest itmessage, retrieves the access token, verifies it anddecides whether accessextracts K(Authorization Server-Resource Server) tothe protected resource can be granted.obtain Ks. Thisexchangekey Ks isshownthen used to verify the keyed message digest of the request message. Note that inFigure 3. +---------------+ | | | Authorization | | Server | | | | | +---------------+ Request +-----------+ + Signature/MAC (a) +------------+ | |---------------------->| | | | [+Access Token] | Resource | | Client | | Server | | | Response (b) | | | |<----------------------| | +-----------+ [+ Signature/MAC] +------------+ ^ ^ | | | | Symmetric Key Symmetric Key or or Asymmetric Key Pair Public Key (Client) + + Parameters Parameters Figure 3: Client demonstrates PoP. The specification describingthis example one could imagine that theabilitymechanism tosign the HTTP request fromprotect theclienttoken itself is based on a symmetric key based mechanism to avoid any form of public key infrastructure but this aspect is not further elaborated in theresource serverscenario. A similar mechanism can also befound in [I-D.ietf-oauth-signed-http-request]. So fardesigned using asymmetric cryptography. When theexamples talked aboutclient requests an accesstokens that are passed by value and allowtoken theresource server to makeauthorizationdecisions immediately after verifyingserver creates an ephemeral public / privacy key pair (PK/SK) and places therequest frompublic key PK into theclient. In some deployments a real-time interaction betweenprotected token. When the authorization serverand the resource server is envisioned that lowers the need to pass self-contained access tokens around. In that casereturns the access tokenmerely serves as a handle or a referencetostate stored attheauthorization server. Asclient it also provides the PK/SK key pair over aconsequence,confidentiality protected channel. When theresource server cannot autonomously make an authorization decision when receivingclient sends a requestfrom a client butto the resource server it has toconsultuse theauthorization server. This can,privacy key SK to sign the request. The resource server, when receiving the message, retrieves the access token, verifies it and extracts the public key PK. It uses this ephemeral public key to verify the attached signature. 6.4. Summary As a high level message, there are various ways the threats can be mitigated. While the details of each solution are somewhat different, they all accomplish the goal of mitigating the threats. The three approaches are: Confidentiality Protection: The weak point with this approach, which is briefly described in Section 6.1, is that the client has to be careful to whom it discloses the access token. What can be done with the token entirely depends on what rights the token entitles the presenter and what constraints it contains. A token could encode the identifier of the client but there are scenarios where the client is not authenticated to the resource server or where the identifier of the client rather represents an application class rather than a single application instance. As such, it is possible that certain deployments choose a rather liberal approach to security and that everyone who is in possession of the access token is granted access to the data. Sender Constraint: The weak point with this approach, which is briefly described in Section 6.2, is to setup the authentication infrastructure such that clients can be authenticated towards resource servers. Additionally, the authorization server must encode the identifier of the client in the token forexample,later verification by the resource server. Depending on the chosen layer for providing client-side authentication there may be additional challenges due to Web server load balancing, lack of API access to identity information, etc. Key Confirmation: The weak point with this approach, see Section 6.3, is the increased complexity: a complete key distribution protocol has to bedone usingdefined. In all cases above it has to be ensured that the client is able to keep the credentials secret. 7. Architecture The proof-of-possession security concept assumes that the authorization server acts as a trusted third party that binds keys to access tokens. These keys are then used by the client to demonstrate the possession of the secret to the resource server when accessing the resource. The resource server, when receiving an access token, needs to verify that the key used by the client matches the one included in the access token. There are slight differences between the use of symmetric keys and asymmetric keys when they are bound to the access tokenintrospection endpoint (see [I-D.ietf-oauth-introspection]). Figure 4 showsand theprotocolsubsequent interactiongraphically. Despitebetween the client and the authorization server when demonstrating possession of these keys. Figure 1 shows theadditional token exchange previous descriptions about associatingsymmetric key procedure and Figure 2 illustrates how asymmetric keys are used. While symmetric cryptography provides better performance properties the use of asymmetric cryptography allows the client to keep the private key locally and never expose it to any other party. With the JSON Web Token (JWT) [RFC7519] a standardized format for accesstokentokens is available. The necessary elements to bind symmetric or asymmetric keys to a JWT arestill applicabledescribed in [I-D.ietf-oauth-proof-of-possession]. Note: The negotiation of cryptographic algorithms between the client and the authorization server is not shown in the examples below and assumed to be present in a protocol solution tothis scenario.meet the requirements for crypto-agility. 7.1. Client and Authorization Server Interaction 7.1.1. Symmetric Keys +---------------+Access^| |Token Req.// | Authorization|^ (I)| / | Server |\ (IV) Token// | |\ Introspection Req./ | |\ +Access(I) // /+---------------+\ TokenAccess / //(II) \ \\Token / /Access \ \Request // // (II) Access Token\ (V) \+Params / /\Resp.\+Symmetric Key // //\ \/ vV \+-----------+Request +Signature/MAC+------------++------------+ | | | |(III) +Access Token| | ||---------------------->|Resource | | Client |(VI) Success or| Server | | |Failure| | ||<----------------------|| | | +-----------+ +------------+ Figure4: Token Introspection and Access Token Handles. 7. Requirements RFC 4962 [RFC4962] gives useful guidelines for designers of authentication and key management protocols. While RFC 4962 was written with the AAA framework used for network access authentication in mind the offered suggestions are useful for the design of other key management systems as well. The following requirements list applies OAuth 2.0 terminology to1: Interaction between therequirements outlined in RFC 4962. These requirements include Cryptographic Algorithm Independent: The key management protocol MUST be cryptographic algorithm independent. Strong, fresh session keys: Session keys MUST be strongClient andfresh. Each session deserves an independent session key, i.e., one that is generated specifically fortheintended use.Authorization Server (Symmetric Keys). Incontext of OAuth this means that keying material is created in such a way that can only be used by the combination of a client instance, protected resource, and authorization scope. Limit Key Scope: Following the principle of least privilege, parties MUST NOT have access to keying material that is not needed to perform their role. Any protocol that is usedorder toestablish session keys MUST specifyrequest an access token thescope for session keys, clearly identifyingclient interacts with theparties to whomauthorization server as part of thesession key is available. Replay Detection Mechanism: The key management protocol exchanges MUST be replay protected. Replay protection allows a protocol message recipient to discard any message that was recorded duringaprevious legitimate dialogue and presentednormal grant exchange, asthoughshown in Figure 1. However, itbelongedneeds to include additional information elements for use with thecurrent dialogue. Authenticate All Parties: Each partyPoP security mechanism, as depicted in message (I). In message (II) thekey management protocol MUST be authenticated toauthorization server then returns theother parties with whom they communicate. Authentication mechanisms MUST maintainrequested access token. In addition to theconfidentiality of any secret values used inaccess token itself, theauthentication process. Secrets MUST NOT be sentsymmetric key is communicated toanother party without confidentiality protection. Authorization: Client and resource server authorization MUST be performed. These entities MUST demonstrate possession oftheappropriate keying material, without disclosing it. Authorizationclient. This symmetric key isREQUIRED wheneveraclient interacts with an authorization server. The authorization checking prevents an elevation of privilege attack, and it ensures that an unauthorized authorized is detected. Keying Material Confidentiality and Integrity: While preserving algorithm independence, confidentialityunique andintegrity of all keying material MUST be maintained. Confirm Cryptographic Algorithm Selection: The selection of the "best" cryptographic algorithms SHOULD be securely confirmed. The mechanism SHOULD detect attempted roll- back attacks. Uniquely Named Keys: Key management proposals require a robust key naming scheme, particularly where key caching is supported. Thefresh session keyname provides a waywith sufficient entropy for the given lifetime. Furthermore, information within the access token ties it toreferthis specific symmetric key. Note: For this security mechanism toawork the client as well as the resource server need to have access to the session key. While the key transport mechanism from the authorization server to the client has been explained ina protocol so that it is clearthe previous paragraph there are three ways for communicating this session key from the authorization server toall parties whichthe resource server, namely Embedding the symmetric keyis being referenced. Objectsinside the access token itself. This requires thatcannot be named cannot be managed. All keys MUST be uniquely named, andthe symmetric keyname MUST NOT directly or indirectly discloseis confidentiality protected. The resource server queries thekeying material. Preventauthorization server for theDomino Effect: Compromise of a single client MUST NOT compromise keying material heldsymmetric key. This is an approach envisioned byany other client withinthesystem, including session keystoken introspection endpoint [I-D.ietf-oauth-introspection]. The authorization server andlong-term keys. Likewise, compromise of a singlethe resource serverMUST NOT compromise keying material held by any otherboth have access to the same back-end database. Smaller, tightly coupled systems might prefer such a deployment strategy. 7.1.2. Asymmetric Keys +---------------+ ^| | Access Token Req. // | Authorization | +Parameters / | Server | +[Fingerprint] // | | / | | (I) // /+---------------+ / // / / (II) // // Access Token / / +[ephemeral // // asymmetric key pair] / v +-----------+ +------------+ | | | | | | | Resource | | Client | | Serverwithin the system. In| | | | | | | | | +-----------+ +------------+ Figure 2: Interaction between thecontext of a key hierarchy, this means thatClient and thecompromiseAuthorization Server (Asymmetric Keys). The use ofone node inasymmetric keys is slightly different since thekey hierarchy must not discloseclient or theinformation necessary to compromise other branchesserver could be involved in thekey hierarchy. Obviously, the compromise of the rootgeneration of the ephemeral keyhierarchy will compromise all of the keys; however, a compromise in one branch MUST NOT resultpair. This exchange is shown in Figure 1. If thecompromise of other branches. There are many implications of this requirement; however, two implications deserve highlighting. First,client generates thescopekey pair it either includes a fingerprint of thekeying material must be defined and understood by all parties that communicate with a party that holds that keying material. Second, a party that holds keying material in apublic keyhierarchy must not share that keying material with parties that are associated with other branches inor the public keyhierarchy. Bind Key to its Context: Keying material MUST be bound toin theappropriate context. The context includesrequest to thefollowing. *authorization server. Themannerauthorization server would include this fingerprint or public key inwhichthekeying material is expected to be used. * The other parties that are expected to haveconfirmation claim inside the access token and thereby bind the asymmetric key pair to thekeying material. * The expected lifetime oftoken. If the client did not provide a fingerprint or a public key in the request then thekeying material. Lifetime of a childauthorization server is asked to create an ephemeral asymmetric keySHOULD NOT be greater thanpair, binds thelifetimefingerprint ofits parent inthe public keyhierarchy. Any party with legitimate accesstokeying material can determine its context. In addition,theprotocol MUST ensure that all parties with legitimateaccessto keying material havetoken, and returns thesame context forasymmetric key pair (public and private key) to thekeying material. This requiresclient. Note that there is a strong preference for generating theparties are properly identified and authenticated, so that all ofprivate/public key pair locally at theparties that have access toclient rather than at thekeying material can be determined.server. 7.2. Client and Resource Server Interaction Thecontext will includespecification describing the interaction between the client and theresource server identities in more than one form. Authorization Restriction: If clientauthorizationis restricted, then the client SHOULDserver, as shown in Figure 1 and in Figure 2, can bemade aware offound in [I-D.ietf-oauth-pop-key-distribution]. Once therestriction. Client Identity Confidentiality: Aclient hasidentity confidentiality when any party other thanobtained theresource servernecessary access token and keying material it can start to interact with theauthorization server cannot sufficiently identifyresource server. To demonstrate possession of theclient withinkey bound to theanonymity set. In comparisonaccess token it needs toanonymity and pseudonymity, identity confidentiality is concerned with eavesdroppers and intermediaries. A key management protocol SHOULD provideapply thisproperty. Resource Owner Identity Confidentiality: Resource servers SHOULD be prevented from knowingkey to therealrequest by computing a keyed message digest (i.e., a symmetric key-based cryptographic primitive) orpseudonymous identity ofa digital signature (i.e., an asymmetric cryptographic computation). When the resourceowner, since the authorizationserverisreceives theonly entity involved in verifyingrequest it verifies it and decides whether access to the protected resourceowner's identity. Collusion: Resource servers that colludecan beprevented from using information related togranted. This exchange is shown in Figure 3. +---------------+ | | | Authorization | | Server | | | | | +---------------+ Request +-----------+ + Signature/MAC (a) +------------+ | |---------------------->| | | | [+Access Token] | Resource | | Client | | Server | | | Response (b) | | | |<----------------------| | +-----------+ [+ Signature/MAC] +------------+ ^ ^ | | | | Symmetric Key Symmetric Key or or Asymmetric Key Pair Public Key (Client) + + Parameters Parameters Figure 3: Client Demonstrates PoP. The specification describing theresource ownerability totracksign theindividual. That is, two different resource servers can be preventedHTTP request fromdetermining thatthesame resource owner has authenticated to both of them. Authorization servers MUST bind different keying materialclient toaccess tokens used forthe resourceservers from different origins (or similar conceptsserver can be found in [I-D.ietf-oauth-signed-http-request]. 7.3. Resource and Authorization Server Interaction (Token Introspection) So far theapp world). AS-to-RS Relationship Anonymity: For solutions using asymmetric key cryptography the client MAY conceal informationexamples talked about access tokens that are passed by value and allow the resource serverit wantstointeract with. Themake authorization decisions immediately after verifying the request from the client. In some deployments a real-time interaction between the authorization serverMAY reject such an attempt since it may not be ableand the resource server is envisioned that lowers the need toenforcepass self-contained accesscontrol decisions. Channel Binding: A solution MUST enable support for channel bindings. The concept of channel binding, as defined in [RFC5056], allows applications to establishtokens around. In that case thetwo end-points ofaccess token merely serves as asecure channelhandle or a reference to state stored atone network layer arethesame as atauthorization server. As ahigher layer by binding authentication atconsequence, thehigher layerresource server cannot autonomously make an authorization decision when receiving a request from a client but has to consult thechannel atauthorization server. This can, for example, be done using thelower layer. There are performance concerns withtoken introspection endpoint (see [I-D.ietf-oauth-introspection]). Figure 4 shows theuse of asymmetric cryptography. Although symmetric key cryptography offers better performance asymmetric cryptography offers additional security properties. A solution MUST therefore offerprotocol interaction graphically. Despite thecapability to support bothadditional token exchange previous descriptions about associating symmetricas well asand asymmetrickeys. There are threats that relatekeys to theexperience of the software developer as well as operational practices. Verifying the servers identity in TLS is discussed at length in [RFC6125]. A number of the threats listed in Section 4 demand protection of theaccess tokencontentare still applicable to this scenario. +---------------+ Access ^| | Token Req. // | Authorization |^ (I) / | Server | \ (IV) Token // | | \ Introspection Req. / | | \ +Access // /+---------------+ \ Token / // (II) \ \\ / / Access \ \ // // Token \ (V) \ / / \Resp.\ // // \ \ / v V \ +-----------+ Request +Signature/MAC+------------+ | | (III) +Access Token | | | |---------------------->| Resource | | Client | (VI) Success or | Server | | | Failure | | | |<----------------------| | +-----------+ +------------+ Figure 4: Token Introspection anda standardized solution, in form of a JSON- based format, is available with the JWT [RFC7519].Access Token Handles. 8. Security Considerations The purpose of this document is to provide use cases, requirements, and motivation for developing an OAuth security solution extending Bearer Tokens. As such, this document is only about security. 9. IANA Considerations This document does not require actions by IANA. 10. Acknowledgments This document is the result of conference calls late 2012/early 2013 and in design team conference calls February 2013 of the IETF OAuth working group. The following persons (in addition to the OAuth WG chairs, Hannes Tschofenig, and Derek Atkins) provided their input during these calls: Bill Mills, Justin Richer, Phil Hunt, Prateek Mishra, Mike Jones, George Fletcher, Leif Johansson, Lucy Lynch, John Bradley, Tony Nadalin, Klaas Wierenga, Thomas Hardjono, Brian Campbell In the appendix of this document were-usereuse content from [RFC4962] and the authors would like thank Russ Housely and Bernard Aboba for their work on RFC 4962. We would like to thank Reddy Tirumaleswar for his review. 11. References 11.1. Normative References [I-D.ietf-oauth-introspection] Richer, J., "OAuth 2.0 Token Introspection", draft-ietf- oauth-introspection-11 (work in progress), July 2015. [I-D.ietf-oauth-pop-key-distribution] Bradley, J., Hunt, P., Jones, M., and H. Tschofenig, "OAuth 2.0 Proof-of-Possession: Authorization Server to Client Key Distribution", draft-ietf-oauth-pop-key- distribution-01 (work in progress), March 2015. [I-D.ietf-oauth-proof-of-possession] Jones, M., Bradley, J., and H. Tschofenig, "Proof-of- Possession Key Semantics for JSON Web Tokens (JWTs)", draft-ietf-oauth-proof-of-possession-04 (work in progress), August 2015. [I-D.ietf-oauth-signed-http-request] Richer, J., Bradley, J., and H. Tschofenig, "A Method for Signing an HTTP Requests for OAuth", draft-ietf-oauth- signed-http-request-01 (work in progress), March 2015. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI10.17487/ RFC2119,10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>. [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI10.17487/ RFC5246,10.17487/RFC5246, August 2008, <http://www.rfc-editor.org/info/rfc5246>. [RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", RFC 6749, DOI 10.17487/RFC6749, October 2012, <http://www.rfc-editor.org/info/rfc6749>. [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, <http://www.rfc-editor.org/info/rfc7519>. 11.2. Informative References [I-D.hardjono-oauth-kerberos] Hardjono, T., "OAuth 2.0 support for the Kerberos V5 Authentication Protocol", draft-hardjono-oauth-kerberos-01 (work in progress), December 2010.[I-D.ietf-oauth-introspection] Richer, J., "OAuth 2.0 Token Introspection", draft-ietf- oauth-introspection-11 (work in progress), July 2015. [I-D.ietf-oauth-pop-key-distribution] Bradley, J., Hunt, P., Jones, M., and H. Tschofenig, "OAuth 2.0 Proof-of-Possession: Authorization Server to Client Key Distribution", draft-ietf-oauth-pop-key- distribution-01 (work in progress), March 2015. [I-D.ietf-oauth-proof-of-possession] Jones, M., Bradley, J., and H. Tschofenig, "Proof-of- Possession Key Semantics for JSON Web Tokens (JWTs)", draft-ietf-oauth-proof-of-possession-04 (work in progress), August 2015. [I-D.ietf-oauth-signed-http-request] Richer, J., Bradley, J., and H. Tschofenig, "A Method for Signing an HTTP Requests for OAuth", draft-ietf-oauth- signed-http-request-01 (work in progress), March 2015.[NIST800-63] Burr, W., Dodson, D., Perlner, R., Polk, T., Gupta, S., and E. Nabbus, "NIST Special Publication 800-63-1, INFORMATION SECURITY", December 2008. [RFC4120] Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The Kerberos Network Authentication Service (V5)", RFC 4120, DOI 10.17487/RFC4120, July 2005, <http://www.rfc-editor.org/info/rfc4120>. [RFC4279] Eronen, P., Ed. and H. Tschofenig, Ed., "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)", RFC 4279, DOI 10.17487/RFC4279, December 2005, <http://www.rfc-editor.org/info/rfc4279>. [RFC4962] Housley, R. and B. Aboba, "Guidance for Authentication, Authorization, and Accounting (AAA) Key Management", BCP 132, RFC 4962, DOI 10.17487/RFC4962, July 2007, <http://www.rfc-editor.org/info/rfc4962>. [RFC5056] Williams, N., "On the Use of Channel Bindings to Secure Channels", RFC 5056, DOI 10.17487/RFC5056, November 2007, <http://www.rfc-editor.org/info/rfc5056>. [RFC5849] Hammer-Lahav, E., Ed., "The OAuth 1.0 Protocol", RFC 5849, DOI 10.17487/RFC5849, April 2010, <http://www.rfc-editor.org/info/rfc5849>. [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, DOI 10.17487/RFC6125, March 2011, <http://www.rfc-editor.org/info/rfc6125>. [RFC6750] Jones, M. and D. Hardt, "The OAuth 2.0 Authorization Framework: Bearer Token Usage", RFC 6750, DOI10.17487/ RFC6750,10.17487/RFC6750, October 2012, <http://www.rfc-editor.org/info/rfc6750>. [RFC6819] Lodderstedt, T., Ed., McGloin, M., and P. Hunt, "OAuth 2.0 Threat Model and Security Considerations", RFC 6819, DOI 10.17487/RFC6819, January 2013, <http://www.rfc-editor.org/info/rfc6819>. Authors' Addresses Phil Hunt (editor) Oracle Corporation Email: phil.hunt@yahoo.com Justin Richer Email: ietf@justin.richer.org William Mills Email: wmills@yahoo-inc.com Prateek Mishra Oracle Corporation Email: prateek.mishra@oracle.com Hannes Tschofenig ARM Limited Hall in Tirol 6060 Austria Email: Hannes.Tschofenig@gmx.net URI: http://www.tschofenig.priv.at