| < draft-ietf-oauth-pop-architecture-05.txt | draft-ietf-oauth-pop-architecture-06.txt > | |||
|---|---|---|---|---|
| OAuth P. Hunt, Ed. | OAuth P. Hunt, Ed. | |||
| Internet-Draft Oracle Corporation | Internet-Draft Oracle Corporation | |||
| Intended status: Informational J. Richer | Intended status: Informational J. Richer | |||
| Expires: April 21, 2016 | Expires: May 27, 2016 | |||
| W. Mills | W. Mills | |||
| P. Mishra | P. Mishra | |||
| Oracle Corporation | Oracle Corporation | |||
| H. Tschofenig | H. Tschofenig | |||
| ARM Limited | ARM Limited | |||
| October 19, 2015 | November 24, 2015 | |||
| OAuth 2.0 Proof-of-Possession (PoP) Security Architecture | OAuth 2.0 Proof-of-Possession (PoP) Security Architecture | |||
| draft-ietf-oauth-pop-architecture-05.txt | draft-ietf-oauth-pop-architecture-06.txt | |||
| Abstract | Abstract | |||
| The OAuth 2.0 bearer token specification, as defined in RFC 6750, | 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 | allows any party in possession of a bearer token (a "bearer") to get | |||
| access to the associated resources (without demonstrating possession | access to the associated resources (without demonstrating possession | |||
| of a cryptographic key). To prevent misuse, bearer tokens must to be | of a cryptographic key). To prevent misuse, bearer tokens must be | |||
| protected from disclosure in transit and at rest. | protected from disclosure in transit and at rest. | |||
| Some scenarios demand additional security protection whereby a client | Some scenarios demand additional security protection whereby a client | |||
| needs to demonstrate possession of cryptographic keying material when | needs to demonstrate possession of cryptographic keying material when | |||
| accessing a protected resource. This document motivates the | accessing a protected resource. This document motivates the | |||
| development of the OAuth 2.0 proof-of-possession security mechanism. | development of the OAuth 2.0 proof-of-possession security mechanism. | |||
| 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 | |||
| skipping to change at page 1, line 46 ¶ | skipping to change at page 1, line 46 ¶ | |||
| 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 April 21, 2016. | This Internet-Draft will expire on May 27, 2016. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 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 | |||
| skipping to change at page 2, line 26 ¶ | skipping to change at page 2, line 26 ¶ | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3.1. Preventing Access Token Re-Use by the Resource Server . . 4 | 3.1. Preventing Access Token Re-Use by the Resource Server . . 4 | |||
| 3.2. TLS Channel Binding Support . . . . . . . . . . . . . . . 4 | 3.2. TLS and DTLS Channel Binding Support . . . . . . . . . . 4 | |||
| 3.3. Access to a Non-TLS Protected Resource . . . . . . . . . 4 | 3.3. Access to a Non-TLS Protected Resource . . . . . . . . . 4 | |||
| 3.4. Offering Application Layer End-to-End Security . . . . . 5 | 3.4. Offering Application Layer End-to-End Security . . . . . 5 | |||
| 4. Security and Privacy Threats . . . . . . . . . . . . . . . . 5 | 4. Security and Privacy Threats . . . . . . . . . . . . . . . . 5 | |||
| 5. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 6 | 5. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. Threat Mitigation . . . . . . . . . . . . . . . . . . . . . . 10 | 6. Threat Mitigation . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6.1. Confidentiality Protection . . . . . . . . . . . . . . . 11 | 6.1. Confidentiality Protection . . . . . . . . . . . . . . . 11 | |||
| 6.2. Sender Constraint . . . . . . . . . . . . . . . . . . . . 11 | 6.2. Sender Constraint . . . . . . . . . . . . . . . . . . . . 11 | |||
| 6.3. Key Confirmation . . . . . . . . . . . . . . . . . . . . 12 | 6.3. Key Confirmation . . . . . . . . . . . . . . . . . . . . 12 | |||
| 6.4. Summary . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 6.4. Summary . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 7. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 14 | 7. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 7.1. Client and Authorization Server Interaction . . . . . . . 14 | 7.1. Client and Authorization Server Interaction . . . . . . . 15 | |||
| 7.1.1. Symmetric Keys . . . . . . . . . . . . . . . . . . . 14 | 7.1.1. Symmetric Keys . . . . . . . . . . . . . . . . . . . 15 | |||
| 7.1.2. Asymmetric Keys . . . . . . . . . . . . . . . . . . . 16 | 7.1.2. Asymmetric Keys . . . . . . . . . . . . . . . . . . . 16 | |||
| 7.2. Client and Resource Server Interaction . . . . . . . . . 17 | 7.2. Client and Resource Server Interaction . . . . . . . . . 17 | |||
| 7.3. Resource and Authorization Server Interaction (Token | 7.3. Resource and Authorization Server Interaction (Token | |||
| Introspection) . . . . . . . . . . . . . . . . . . . . . 18 | Introspection) . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 19 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 20 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 20 | 11.2. Informative References . . . . . . . . . . . . . . . . . 21 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 1. Introduction | 1. Introduction | |||
| The OAuth 2.0 protocol family ([RFC6749], [RFC6750], and [RFC6819]) | The OAuth 2.0 protocol family ([RFC6749], [RFC6750], and [RFC6819]) | |||
| offer a single token type known as the "bearer" token to access | offer a single token type known as the "bearer" token to access | |||
| protected resources. RFC 6750 [RFC6750] specifies the bearer token | protected resources. RFC 6750 [RFC6750] specifies the bearer token | |||
| mechanism and defines it as follows: | mechanism and defines it as follows: | |||
| "A security token with the property that any party in possession | "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 | of the token (a "bearer") can use the token in any way that any | |||
| skipping to change at page 4, line 17 ¶ | skipping to change at page 4, line 17 ¶ | |||
| necessarily need to offer support for all use cases. | necessarily need to offer support for all use cases. | |||
| 3.1. Preventing Access Token Re-Use by the Resource Server | 3.1. Preventing Access Token Re-Use by the Resource Server | |||
| In a scenario where a resource server receives a valid access token, | In a scenario where a resource server receives a valid access token, | |||
| the resource server then re-uses it with other resource server. The | 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 | reason for re-use may be malicious or may well be legitimate. In a | |||
| legitimate case, the intent is to support chaining of computations | legitimate case, the intent is to support chaining of computations | |||
| whereby a resource server needs to consult other third party resource | whereby a resource server needs to consult other third party resource | |||
| servers to complete a requested operation. In both cases it may be | servers to complete a requested operation. In both cases it may be | |||
| assumed that the scope of the access token is sufficiently large that | assumed that the scope and audience of the access token is | |||
| it allows such a re-use. For example, imagine a case where a company | sufficiently defined that to allow such a re-use. For example, | |||
| operates email services as well as picture sharing services and that | imagine a case where a company operates email services as well as | |||
| company had decided to issue access tokens with a scope that allows | picture sharing services and that company had decided to issue access | |||
| access to both services. | tokens with a scope and audience 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 legitimate use cases require additional | This also implies that the legitimate use cases require additional | |||
| enhancements for request chaining. | enhancements for request chaining. | |||
| 3.2. TLS Channel Binding Support | 3.2. TLS and DTLS 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 or DTLS (see [RFC4347]), | |||
| resource server demand that the underlying TLS exchange is bound to | but the client and the resource server demand that the underlying | |||
| additional application layer security to prevent cases where the TLS | TLS/DTLS exchange is bound to additional application layer security | |||
| connection is terminated at a TLS intermediary, which splits the TLS | to prevent cases where the TLS/DTLS connection is terminated at a | |||
| connection into two separate connections. | TLS/DTLS intermediary, which splits the TLS/DTLS connection into two | |||
| separate connections. | ||||
| In this use case additional information should be conveyed to the | In this use case additional information should be conveyed to the | |||
| resource server to ensure that no entity entity has tampered with the | resource server to ensure that no entity entity has tampered with the | |||
| TLS connection. | TLS/DTLS connection. | |||
| 3.3. Access to a Non-TLS Protected Resource | 3.3. Access to a Non-TLS Protected Resource | |||
| This use case is for a web client that needs to access a 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 | that makes data available (such as videos) without offering integrity | |||
| and confidentiality protection using TLS. Still, the initial | and confidentiality protection using TLS. Still, the initial | |||
| resource request using OAuth, which includes the access token, must | resource request using OAuth, which includes the access token, must | |||
| be protected against various threats (e.g., token replay, token | be protected against various threats (e.g., token replay, token | |||
| modification). | modification). | |||
| skipping to change at page 5, line 50 ¶ | skipping to change at page 6, line 5 ¶ | |||
| The following list presents several common threats against protocols | The following list presents several common threats against protocols | |||
| utilizing some form of token. This list of threats is based on NIST | utilizing some form of token. 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 specification | 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 token or modify the token content | |||
| content (such as authentication or attribute statements) of an | (such as authentication or attribute statements) of an existing | |||
| existing token, causing resource server to grant inappropriate | token, causing resource server to grant inappropriate access to | |||
| access to the client. For example, an attacker may modify the | the client. For example, an attacker may modify the token to | |||
| token to extend the validity period. A client may modify the | extend the validity period. A client, which MAY be a normal | |||
| token to have access to information that they should not be able | client or MAY be assumed to be constrained (see [RFC7252]), may | |||
| to view. | modify the token to have access to information that they should | |||
| not be able to view. | ||||
| Token disclosure: | Token disclosure: | |||
| Tokens may contain personal data, such as real name, age or | Tokens may contain personal data, such as real name, age or | |||
| birthday, payment information, etc. | birthday, payment information, etc. | |||
| Token redirect: | Token redirect: | |||
| An attacker uses the token generated for consumption by the | An attacker uses the token generated for consumption by the | |||
| resource server to obtain access to another resource server. | resource server to obtain access to another resource server. | |||
| skipping to change at page 6, line 44 ¶ | skipping to change at page 6, line 48 ¶ | |||
| access token. | access token. | |||
| Token repudiation: | Token repudiation: | |||
| Token repudiation refers to a property whereby a resource server | Token repudiation refers to a property whereby a resource server | |||
| is given an assurance that the authorization server cannot deny to | is given an assurance that the authorization server cannot deny to | |||
| have created a token for the client. | have created a token for the client. | |||
| 5. Requirements | 5. Requirements | |||
| In contrast to bearer tokens [RFC6750] which call for tokens that are | ||||
| opaque to OAuth 2.0 clients, this specification defines the | ||||
| requirements for proof-of-possession ("PoP") tokens that may be | ||||
| parsed and verified by OAuth 2.0 clients and relying parties. In | ||||
| general, a "PoP" token enables an OAuth 2.0 client to demonstrate a | ||||
| proof-of-possession confirming the client's right to wield the token. | ||||
| RFC 4962 [RFC4962] gives useful guidelines for designers of | RFC 4962 [RFC4962] gives useful guidelines for designers of | |||
| authentication and key management protocols. While RFC 4962 was | authentication and key management protocols. While RFC 4962 was | |||
| written with the AAA framework used for network access authentication | written with the AAA framework used for network access authentication | |||
| in mind the offered suggestions are useful for the design of other | in mind the offered suggestions are useful for the design of other | |||
| key management systems as well. The following requirements list | key management systems as well. The following requirements list | |||
| applies OAuth 2.0 terminology to the requirements outlined in RFC | applies OAuth 2.0 terminology to the requirements outlined in RFC | |||
| 4962. | 4962. | |||
| These requirements include | These requirements include | |||
| skipping to change at page 10, line 30 ¶ | skipping to change at page 10, line 42 ¶ | |||
| cryptography. Although symmetric key cryptography offers better | cryptography. Although symmetric key cryptography offers better | |||
| performance asymmetric cryptography offers additional security | performance asymmetric cryptography offers additional security | |||
| properties. A solution MUST therefore offer the capability to | properties. A solution MUST therefore offer the capability to | |||
| support both symmetric as well as asymmetric keys. | support both symmetric as well as asymmetric keys. | |||
| There are threats that relate to the experience of the software | There are threats that relate to the experience of the software | |||
| developer as well as operational practices. Verifying the servers | developer as well as operational practices. Verifying the servers | |||
| identity in TLS is discussed at length in [RFC6125]. | identity in TLS is discussed at length in [RFC6125]. | |||
| A number of the threats listed in Section 4 demand protection of the | A number of the threats listed in Section 4 demand protection of the | |||
| access token content and a standardized solution, in form of a JSON- | access token content and a standardized solution, for example, in the | |||
| based format, is available with the JWT [RFC7519]. | form of a JSON-based format, is available with the JWT [RFC7519]. | |||
| 6. Threat Mitigation | 6. Threat Mitigation | |||
| A large range of threats can be mitigated by protecting the content | A large range of threats can be mitigated by protecting the content | |||
| of the token, for example using a digital signature or a keyed | of the token, for example using a digital signature or a keyed | |||
| message digest. Alternatively, the content of the token could be | message digest. Alternatively, the content of the token could be | |||
| passed by reference rather than by value (requiring a separate | passed by reference rather than by value (requiring a separate | |||
| message exchange to resolve the reference to the token content). To | message exchange to resolve the reference to the token content). To | |||
| simplify the subsequent description we assume that the token itself | simplify the subsequent description we assume in the PoP architecture | |||
| is digitally signed by the authorization server and therefore cannot | that the token itself is digitally signed by the authorization server | |||
| be modified. | and therefore cannot be modified. | |||
| To deal with token redirect it is important for the authorization | To deal with token redirect it is important for the authorization | |||
| server to include the identifier of the intended recipient - the | server to include the identifier of the intended recipient - the | |||
| resource server. A resource server must not be allowed to accept | resource server. A resource server must not be allowed to accept | |||
| access tokens that are not meant for its consumption. | access tokens that are not meant for its consumption. | |||
| To provide protection against token disclosure two approaches are | To provide protection against token disclosure two approaches are | |||
| possible, namely (a) not to include sensitive information inside the | possible, namely (a) not to include sensitive information inside the | |||
| token or (b) to ensure confidentiality protection. The latter | token or (b) to ensure confidentiality protection. The latter | |||
| approach requires at least the communication interaction between the | approach requires at least the communication interaction between the | |||
| client and the authorization server as well as the interaction | client and the authorization server as well as the interaction | |||
| between the client and the resource server to experience | between the client and the resource server to experience | |||
| confidentiality protection. As an example, TLS with a ciphersuite | confidentiality protection. As an example, TLS with a ciphersuite | |||
| that offers confidentiality protection has to be applied (which is | that offers confidentiality protection has to be applied as per | |||
| currently true for all ciphersuites, except for one). Encrypting the | [RFC7525]. Encrypting the token content itself is another | |||
| token content itself is another alternative. In our scenario the | alternative. In our scenario the authorization server would, for | |||
| authorization server would, for example, encrypt the token content | example, encrypt the token content with a symmetric key shared with | |||
| with a symmetric key shared with the resource server. | the resource server. | |||
| To deal with token reuse more choices are available. | To deal with token reuse more choices are available. | |||
| 6.1. Confidentiality Protection | 6.1. Confidentiality Protection | |||
| In this approach confidentiality protection of the exchange is | In this approach confidentiality protection of the exchange is | |||
| provided on the communication interfaces between the client and the | provided on the communication interfaces between the client and the | |||
| resource server, and between the client and the authorization server. | resource server, and between the client and the authorization server. | |||
| No eavesdropper on the wire is able to observe the token exchange. | No eavesdropper on the wire is able to observe the token exchange. | |||
| Consequently, a replay by a third party is not possible. An | Consequently, a replay by a third party is not possible. An | |||
| skipping to change at page 11, line 35 ¶ | skipping to change at page 11, line 47 ¶ | |||
| will be a requirement to ensure adequate protection against a range | will be a requirement to ensure adequate protection against a range | |||
| of attacks. This is, however, true for the description in | of attacks. This is, however, true for the description in | |||
| Section 6.2 and Section 6.3 as well. Furthermore, the client has to | Section 6.2 and Section 6.3 as well. Furthermore, the client has to | |||
| make sure it does not distribute (or leak) the access token to | make sure it does not distribute (or leak) the access token to | |||
| entities other than the intended the resource server. For that | entities other than the intended the resource server. For that | |||
| purpose the client will have to authenticate the resource server | purpose the client will have to authenticate the resource server | |||
| before transmitting the access token. | before transmitting the access token. | |||
| 6.2. Sender Constraint | 6.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 identifier.' When the | presented by a client with the following identifier.' When the | |||
| access token is then presented to the resource server how does it | access token is then presented to the resource server how does it | |||
| know that it was provided by the client? It has to authenticate the | know that it was provided by the client? It has to authenticate the | |||
| client! There are many choices for authenticating the client to the | client! There are many choices for authenticating the client to the | |||
| resource server, for example by using client certificates in TLS | resource server, for example by using client certificates in TLS | |||
| [RFC5246], or pre-shared secrets within TLS [RFC4279]. The choice of | [RFC5246], or pre-shared secrets within TLS [RFC4279]. The choice of | |||
| the preferred authentication mechanism and credential type may depend | the preferred authentication mechanism and credential type may depend | |||
| on a number of factors, including | on a number of factors, including | |||
| skipping to change at page 14, line 32 ¶ | skipping to change at page 14, line 46 ¶ | |||
| There are slight differences between the use of symmetric keys and | There are slight differences between the use of symmetric keys and | |||
| asymmetric keys when they are bound to the access token and the | asymmetric keys when they are bound to the access token and the | |||
| subsequent interaction between the client and the authorization | subsequent interaction between the client and the authorization | |||
| server when demonstrating possession of these keys. Figure 1 shows | server when demonstrating possession of these keys. Figure 1 shows | |||
| the symmetric key procedure and Figure 2 illustrates how asymmetric | the symmetric key procedure and Figure 2 illustrates how asymmetric | |||
| keys are used. While symmetric cryptography provides better | keys are used. While symmetric cryptography provides better | |||
| performance properties the use of asymmetric cryptography allows the | performance properties the use of asymmetric cryptography allows the | |||
| client to keep the private key locally and never expose it to any | client to keep the private key locally and never expose it to any | |||
| other party. | other party. | |||
| With the JSON Web Token (JWT) [RFC7519] a standardized format for | For example, with the JSON Web Token (JWT) [RFC7519] a standardized | |||
| access tokens is available. The necessary elements to bind symmetric | format for access tokens is available. The necessary elements to | |||
| or asymmetric keys to a JWT are described in | bind symmetric or asymmetric keys to a JWT are described in | |||
| [I-D.ietf-oauth-proof-of-possession]. | [I-D.ietf-oauth-proof-of-possession]. | |||
| Note: The negotiation of cryptographic algorithms between the client | Note: The negotiation of cryptographic algorithms between the client | |||
| and the authorization server is not shown in the examples below and | and the authorization server is not shown in the examples below and | |||
| assumed to be present in a protocol solution to meet the requirements | assumed to be present in a protocol solution to meet the requirements | |||
| for crypto-agility. | for crypto-agility. | |||
| 7.1. Client and Authorization Server Interaction | 7.1. Client and Authorization Server Interaction | |||
| 7.1.1. Symmetric Keys | 7.1.1. Symmetric Keys | |||
| skipping to change at page 15, line 45 ¶ | skipping to change at page 16, line 4 ¶ | |||
| is a unique and fresh session key with sufficient entropy for the | is a unique and fresh session key with sufficient entropy for the | |||
| given lifetime. Furthermore, information within the access token | given lifetime. Furthermore, information within the access token | |||
| ties it to this specific symmetric key. | ties it to this specific symmetric key. | |||
| Note: For this security mechanism to work the client as well as the | Note: For this security mechanism to work the client as well as the | |||
| resource server need to have access to the session key. While the | resource server need to have access to the session key. While the | |||
| key transport mechanism from the authorization server to the client | key transport mechanism from the authorization server to the client | |||
| has been explained in the previous paragraph there are three ways for | has been explained in the previous paragraph there are three ways for | |||
| communicating this session key from the authorization server to the | communicating this session key from the authorization server to the | |||
| resource server, namely | resource server, namely | |||
| Embedding the symmetric key inside the access token itself. This | Embedding the symmetric key inside the access token itself. This | |||
| requires that the symmetric key is confidentiality protected. | requires that the symmetric key is confidentiality protected. | |||
| The resource server queries the authorization server for the | The resource server queries the authorization server for the | |||
| symmetric key. This is an approach envisioned by the token | symmetric key. This is an approach envisioned by the token | |||
| introspection endpoint [I-D.ietf-oauth-introspection]. | introspection endpoint [RFC7662]. | |||
| The authorization server and the resource server both have access | The authorization server and the resource server both have access | |||
| to the same back-end database. Smaller, tightly coupled systems | to the same back-end database. Smaller, tightly coupled systems | |||
| might prefer such a deployment strategy. | might prefer such a deployment strategy. | |||
| 7.1.2. Asymmetric Keys | 7.1.2. Asymmetric Keys | |||
| +---------------+ | +---------------+ | |||
| ^| | | ^| | | |||
| Access Token Req. // | Authorization | | Access Token Req. // | Authorization | | |||
| skipping to change at page 18, line 23 ¶ | skipping to change at page 19, line 6 ¶ | |||
| value and allow the resource server to make authorization decisions | value and allow the resource server to make authorization decisions | |||
| immediately after verifying the request from the client. In some | immediately after verifying the request from the client. In some | |||
| deployments a real-time interaction between the authorization server | deployments a real-time interaction between the authorization server | |||
| and the resource server is envisioned that lowers the need to pass | and the resource server is envisioned that lowers the need to pass | |||
| self-contained access tokens around. In that case the access token | self-contained access tokens around. In that case the access token | |||
| merely serves as a handle or a reference to state stored at the | merely serves as a handle or a reference to state stored at the | |||
| authorization server. As a consequence, the resource server cannot | authorization server. As a consequence, the resource server cannot | |||
| autonomously make an authorization decision when receiving a request | autonomously make an authorization decision when receiving a request | |||
| from a client but has to consult the authorization server. This can, | from a client but has to consult the authorization server. This can, | |||
| for example, be done using the token introspection endpoint (see | for example, be done using the token introspection endpoint (see | |||
| [I-D.ietf-oauth-introspection]). Figure 4 shows the protocol | [RFC7662]). Figure 4 shows the protocol interaction graphically. | |||
| interaction graphically. Despite the additional token exchange | Despite the additional token exchange previous descriptions about | |||
| previous descriptions about associating symmetric and asymmetric keys | associating symmetric and asymmetric keys to the access token are | |||
| to the access token are still applicable to this scenario. | still applicable to this scenario. | |||
| +---------------+ | +---------------+ | |||
| Access ^| | | Access ^| | | |||
| Token Req. // | Authorization |^ | Token Req. // | Authorization |^ | |||
| (I) / | Server | \ (IV) Token | (I) / | Server | \ (IV) Token | |||
| // | | \ Introspection Req. | // | | \ Introspection Req. | |||
| / | | \ +Access | / | | \ +Access | |||
| // /+---------------+ \ Token | // /+---------------+ \ Token | |||
| / // (II) \ \\ | / // (II) \ \\ | |||
| / / Access \ \ | / / Access \ \ | |||
| skipping to change at page 19, line 36 ¶ | skipping to change at page 20, line 17 ¶ | |||
| In the appendix of this document we reuse content from [RFC4962] and | In the appendix of this document we reuse 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. | |||
| We would like to thank Reddy Tirumaleswar for his review. | We would like to thank Reddy Tirumaleswar for his review. | |||
| 11. References | 11. References | |||
| 11.1. Normative 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] | [I-D.ietf-oauth-pop-key-distribution] | |||
| Bradley, J., Hunt, P., Jones, M., and H. Tschofenig, | Bradley, J., Hunt, P., Jones, M., and H. Tschofenig, | |||
| "OAuth 2.0 Proof-of-Possession: Authorization Server to | "OAuth 2.0 Proof-of-Possession: Authorization Server to | |||
| Client Key Distribution", draft-ietf-oauth-pop-key- | Client Key Distribution", draft-ietf-oauth-pop-key- | |||
| distribution-01 (work in progress), March 2015. | distribution-02 (work in progress), October 2015. | |||
| [I-D.ietf-oauth-proof-of-possession] | [I-D.ietf-oauth-proof-of-possession] | |||
| Jones, M., Bradley, J., and H. Tschofenig, "Proof-of- | Jones, M., Bradley, J., and H. Tschofenig, "Proof-of- | |||
| Possession Key Semantics for JSON Web Tokens (JWTs)", | Possession Key Semantics for JSON Web Tokens (JWTs)", | |||
| draft-ietf-oauth-proof-of-possession-04 (work in | draft-ietf-oauth-proof-of-possession-06 (work in | |||
| progress), August 2015. | progress), November 2015. | |||
| [I-D.ietf-oauth-signed-http-request] | [I-D.ietf-oauth-signed-http-request] | |||
| Richer, J., Bradley, J., and H. Tschofenig, "A Method for | Richer, J., Bradley, J., and H. Tschofenig, "A Method for | |||
| Signing an HTTP Requests for OAuth", draft-ietf-oauth- | Signing an HTTP Requests for OAuth", draft-ietf-oauth- | |||
| signed-http-request-01 (work in progress), March 2015. | signed-http-request-01 (work in progress), March 2015. | |||
| [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, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| skipping to change at page 20, line 28 ¶ | skipping to change at page 21, line 5 ¶ | |||
| <http://www.rfc-editor.org/info/rfc5246>. | <http://www.rfc-editor.org/info/rfc5246>. | |||
| [RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", | [RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", | |||
| RFC 6749, DOI 10.17487/RFC6749, October 2012, | RFC 6749, DOI 10.17487/RFC6749, October 2012, | |||
| <http://www.rfc-editor.org/info/rfc6749>. | <http://www.rfc-editor.org/info/rfc6749>. | |||
| [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | |||
| (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | |||
| <http://www.rfc-editor.org/info/rfc7519>. | <http://www.rfc-editor.org/info/rfc7519>. | |||
| [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, | ||||
| "Recommendations for Secure Use of Transport Layer | ||||
| Security (TLS) and Datagram Transport Layer Security | ||||
| (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May | ||||
| 2015, <http://www.rfc-editor.org/info/rfc7525>. | ||||
| [RFC7662] Richer, J., Ed., "OAuth 2.0 Token Introspection", | ||||
| RFC 7662, DOI 10.17487/RFC7662, October 2015, | ||||
| <http://www.rfc-editor.org/info/rfc7662>. | ||||
| 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. | |||
| [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, | |||
| skipping to change at page 21, line 5 ¶ | skipping to change at page 21, line 37 ¶ | |||
| [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, | |||
| DOI 10.17487/RFC4120, July 2005, | DOI 10.17487/RFC4120, July 2005, | |||
| <http://www.rfc-editor.org/info/rfc4120>. | <http://www.rfc-editor.org/info/rfc4120>. | |||
| [RFC4279] Eronen, P., Ed. and H. Tschofenig, Ed., "Pre-Shared Key | [RFC4279] Eronen, P., Ed. and H. Tschofenig, Ed., "Pre-Shared Key | |||
| Ciphersuites for Transport Layer Security (TLS)", | Ciphersuites for Transport Layer Security (TLS)", | |||
| RFC 4279, DOI 10.17487/RFC4279, December 2005, | RFC 4279, DOI 10.17487/RFC4279, December 2005, | |||
| <http://www.rfc-editor.org/info/rfc4279>. | <http://www.rfc-editor.org/info/rfc4279>. | |||
| [RFC4347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer | ||||
| Security", RFC 4347, DOI 10.17487/RFC4347, April 2006, | ||||
| <http://www.rfc-editor.org/info/rfc4347>. | ||||
| [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 132, RFC 4962, DOI 10.17487/RFC4962, July 2007, | BCP 132, RFC 4962, DOI 10.17487/RFC4962, July 2007, | |||
| <http://www.rfc-editor.org/info/rfc4962>. | <http://www.rfc-editor.org/info/rfc4962>. | |||
| [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, DOI 10.17487/RFC5056, November 2007, | Channels", RFC 5056, DOI 10.17487/RFC5056, November 2007, | |||
| <http://www.rfc-editor.org/info/rfc5056>. | <http://www.rfc-editor.org/info/rfc5056>. | |||
| [RFC5849] Hammer-Lahav, E., Ed., "The OAuth 1.0 Protocol", RFC 5849, | [RFC5849] Hammer-Lahav, E., Ed., "The OAuth 1.0 Protocol", RFC 5849, | |||
| skipping to change at page 21, line 35 ¶ | skipping to change at page 22, line 22 ¶ | |||
| [RFC6750] Jones, M. and D. Hardt, "The OAuth 2.0 Authorization | [RFC6750] Jones, M. and D. Hardt, "The OAuth 2.0 Authorization | |||
| Framework: Bearer Token Usage", RFC 6750, | Framework: Bearer Token Usage", RFC 6750, | |||
| DOI 10.17487/RFC6750, October 2012, | DOI 10.17487/RFC6750, October 2012, | |||
| <http://www.rfc-editor.org/info/rfc6750>. | <http://www.rfc-editor.org/info/rfc6750>. | |||
| [RFC6819] Lodderstedt, T., Ed., McGloin, M., and P. Hunt, "OAuth 2.0 | [RFC6819] Lodderstedt, T., Ed., McGloin, M., and P. Hunt, "OAuth 2.0 | |||
| Threat Model and Security Considerations", RFC 6819, | Threat Model and Security Considerations", RFC 6819, | |||
| DOI 10.17487/RFC6819, January 2013, | DOI 10.17487/RFC6819, January 2013, | |||
| <http://www.rfc-editor.org/info/rfc6819>. | <http://www.rfc-editor.org/info/rfc6819>. | |||
| [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained | ||||
| Application Protocol (CoAP)", RFC 7252, | ||||
| DOI 10.17487/RFC7252, June 2014, | ||||
| <http://www.rfc-editor.org/info/rfc7252>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Phil Hunt (editor) | Phil Hunt (editor) | |||
| Oracle Corporation | Oracle Corporation | |||
| Email: phil.hunt@yahoo.com | Email: phil.hunt@yahoo.com | |||
| Justin Richer | Justin Richer | |||
| Email: ietf@justin.richer.org | Email: ietf@justin.richer.org | |||
| End of changes. 28 change blocks. | ||||
| 58 lines changed or deleted | 81 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||