| < draft-ietf-ace-oauth-authz-33.txt | draft-ietf-ace-oauth-authz-34.txt > | |||
|---|---|---|---|---|
| ACE Working Group L. Seitz | ACE Working Group L. Seitz | |||
| Internet-Draft Combitech | Internet-Draft Combitech | |||
| Intended status: Standards Track G. Selander | Intended status: Standards Track G. Selander | |||
| Expires: August 10, 2020 Ericsson | Expires: December 25, 2020 Ericsson | |||
| E. Wahlstroem | E. Wahlstroem | |||
| S. Erdtman | S. Erdtman | |||
| Spotify AB | Spotify AB | |||
| H. Tschofenig | H. Tschofenig | |||
| Arm Ltd. | Arm Ltd. | |||
| February 7, 2020 | June 23, 2020 | |||
| Authentication and Authorization for Constrained Environments (ACE) | Authentication and Authorization for Constrained Environments (ACE) | |||
| using the OAuth 2.0 Framework (ACE-OAuth) | using the OAuth 2.0 Framework (ACE-OAuth) | |||
| draft-ietf-ace-oauth-authz-33 | draft-ietf-ace-oauth-authz-34 | |||
| Abstract | Abstract | |||
| This specification defines a framework for authentication and | This specification defines a framework for authentication and | |||
| authorization in Internet of Things (IoT) environments called ACE- | authorization in Internet of Things (IoT) environments called ACE- | |||
| OAuth. The framework is based on a set of building blocks including | OAuth. The framework is based on a set of building blocks including | |||
| OAuth 2.0 and the Constrained Application Protocol (CoAP), thus | OAuth 2.0 and the Constrained Application Protocol (CoAP), thus | |||
| transforming a well-known and widely used authorization solution into | transforming a well-known and widely used authorization solution into | |||
| a form suitable for IoT devices. Existing specifications are used | a form suitable for IoT devices. Existing specifications are used | |||
| where possible, but extensions are added and profiles are defined to | where possible, but extensions are added and profiles are defined to | |||
| skipping to change at page 1, line 45 ¶ | skipping to change at page 1, line 45 ¶ | |||
| 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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 August 10, 2020. | This Internet-Draft will expire on December 25, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://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 3, line 25 ¶ | skipping to change at page 3, line 25 ¶ | |||
| 6.4. Unprotected AS Request Creation Hints . . . . . . . . . . 44 | 6.4. Unprotected AS Request Creation Hints . . . . . . . . . . 44 | |||
| 6.5. Minimal security requirements for communication . 45 | 6.5. Minimal security requirements for communication . 45 | |||
| 6.6. Token Freshness and Expiration . . . . . . . . . . . . . 46 | 6.6. Token Freshness and Expiration . . . . . . . . . . . . . 46 | |||
| 6.7. Combining profiles . . . . . . . . . . . . . . . . . . . 47 | 6.7. Combining profiles . . . . . . . . . . . . . . . . . . . 47 | |||
| 6.8. Unprotected Information . . . . . . . . . . . . . . . . . 47 | 6.8. Unprotected Information . . . . . . . . . . . . . . . . . 47 | |||
| 6.9. Identifying audiences . . . . . . . . . . . . . . . . . . 48 | 6.9. Identifying audiences . . . . . . . . . . . . . . . . . . 48 | |||
| 6.10. Denial of service against or with Introspection . . 48 | 6.10. Denial of service against or with Introspection . . 48 | |||
| 7. Privacy Considerations . . . . . . . . . . . . . . . . . . . 49 | 7. Privacy Considerations . . . . . . . . . . . . . . . . . . . 49 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 50 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 50 | |||
| 8.1. ACE Authorization Server Request Creation Hints . . . . . 50 | 8.1. ACE Authorization Server Request Creation Hints . . . . . 50 | |||
| 8.2. OAuth Extensions Error Registration . . . . . . . . . . . 51 | 8.2. CoRE Resource Type registry . . . . . . . . . . . . . . . 51 | |||
| 8.3. OAuth Error Code CBOR Mappings Registry . . . . . . . . . 51 | 8.3. OAuth Extensions Error Registration . . . . . . . . . . . 51 | |||
| 8.4. OAuth Grant Type CBOR Mappings . . . . . . . . . . . . . 51 | 8.4. OAuth Error Code CBOR Mappings Registry . . . . . . . . . 51 | |||
| 8.5. OAuth Access Token Types . . . . . . . . . . . . . . . . 52 | 8.5. OAuth Grant Type CBOR Mappings . . . . . . . . . . . . . 52 | |||
| 8.6. OAuth Access Token Type CBOR Mappings . . . . . . . . . . 52 | 8.6. OAuth Access Token Types . . . . . . . . . . . . . . . . 52 | |||
| 8.6.1. Initial Registry Contents . . . . . . . . . . . . . . 52 | 8.7. OAuth Access Token Type CBOR Mappings . . . . . . . . . . 52 | |||
| 8.7. ACE Profile Registry . . . . . . . . . . . . . . . . . . 53 | 8.7.1. Initial Registry Contents . . . . . . . . . . . . . . 53 | |||
| 8.8. OAuth Parameter Registration . . . . . . . . . . . . . . 53 | 8.8. ACE Profile Registry . . . . . . . . . . . . . . . . . . 53 | |||
| 8.9. OAuth Parameters CBOR Mappings Registry . . . . . . . . . 53 | 8.9. OAuth Parameter Registration . . . . . . . . . . . . . . 54 | |||
| 8.10. OAuth Introspection Response Parameter Registration . . . 54 | 8.10. OAuth Parameters CBOR Mappings Registry . . . . . . . . . 54 | |||
| 8.11. OAuth Token Introspection Response CBOR Mappings Registry 54 | 8.11. OAuth Introspection Response Parameter Registration . . . 54 | |||
| 8.12. JSON Web Token Claims . . . . . . . . . . . . . . . . . . 55 | 8.12. OAuth Token Introspection Response CBOR Mappings Registry 55 | |||
| 8.13. CBOR Web Token Claims . . . . . . . . . . . . . . . . . . 56 | 8.13. JSON Web Token Claims . . . . . . . . . . . . . . . . . . 55 | |||
| 8.14. Media Type Registrations . . . . . . . . . . . . . . . . 56 | 8.14. CBOR Web Token Claims . . . . . . . . . . . . . . . . . . 56 | |||
| 8.15. CoAP Content-Format Registry . . . . . . . . . . . . . . 57 | 8.15. Media Type Registrations . . . . . . . . . . . . . . . . 57 | |||
| 8.16. Expert Review Instructions . . . . . . . . . . . . . . . 58 | 8.16. CoAP Content-Format Registry . . . . . . . . . . . . . . 58 | |||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 58 | 8.17. Expert Review Instructions . . . . . . . . . . . . . . . 58 | |||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 59 | ||||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 59 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 59 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 59 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 59 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 62 | 10.2. Informative References . . . . . . . . . . . . . . . . . 62 | |||
| Appendix A. Design Justification . . . . . . . . . . . . . . . . 64 | Appendix A. Design Justification . . . . . . . . . . . . . . . . 65 | |||
| Appendix B. Roles and Responsibilities . . . . . . . . . . . . . 68 | Appendix B. Roles and Responsibilities . . . . . . . . . . . . . 68 | |||
| Appendix C. Requirements on Profiles . . . . . . . . . . . . . . 70 | Appendix C. Requirements on Profiles . . . . . . . . . . . . . . 71 | |||
| Appendix D. Assumptions on AS knowledge about C and RS . . . . . 71 | Appendix D. Assumptions on AS knowledge about C and RS . . . . . 71 | |||
| Appendix E. Deployment Examples . . . . . . . . . . . . . . . . 71 | Appendix E. Deployment Examples . . . . . . . . . . . . . . . . 72 | |||
| E.1. Local Token Validation . . . . . . . . . . . . . . . . . 72 | E.1. Local Token Validation . . . . . . . . . . . . . . . . . 72 | |||
| E.2. Introspection Aided Token Validation . . . . . . . . . . 76 | E.2. Introspection Aided Token Validation . . . . . . . . . . 76 | |||
| Appendix F. Document Updates . . . . . . . . . . . . . . . . . . 80 | Appendix F. Document Updates . . . . . . . . . . . . . . . . . . 80 | |||
| F.1. Version -21 to 22 . . . . . . . . . . . . . . . . . . . . 81 | F.1. Version -21 to 22 . . . . . . . . . . . . . . . . . . . . 81 | |||
| F.2. Version -20 to 21 . . . . . . . . . . . . . . . . . . . . 81 | F.2. Version -20 to 21 . . . . . . . . . . . . . . . . . . . . 81 | |||
| F.3. Version -19 to 20 . . . . . . . . . . . . . . . . . . . . 81 | F.3. Version -19 to 20 . . . . . . . . . . . . . . . . . . . . 81 | |||
| F.4. Version -18 to -19 . . . . . . . . . . . . . . . . . . . 81 | F.4. Version -18 to -19 . . . . . . . . . . . . . . . . . . . 81 | |||
| F.5. Version -17 to -18 . . . . . . . . . . . . . . . . . . . 81 | F.5. Version -17 to -18 . . . . . . . . . . . . . . . . . . . 81 | |||
| F.6. Version -16 to -17 . . . . . . . . . . . . . . . . . . . 81 | F.6. Version -16 to -17 . . . . . . . . . . . . . . . . . . . 81 | |||
| F.7. Version -15 to -16 . . . . . . . . . . . . . . . . . . . 82 | F.7. Version -15 to -16 . . . . . . . . . . . . . . . . . . . 82 | |||
| F.8. Version -14 to -15 . . . . . . . . . . . . . . . . . . . 82 | F.8. Version -14 to -15 . . . . . . . . . . . . . . . . . . . 82 | |||
| F.9. Version -13 to -14 . . . . . . . . . . . . . . . . . . . 82 | F.9. Version -13 to -14 . . . . . . . . . . . . . . . . . . . 82 | |||
| skipping to change at page 15, line 29 ¶ | skipping to change at page 15, line 29 ¶ | |||
| common key infrastructure, so the AS provisions credentials or | common key infrastructure, so the AS provisions credentials or | |||
| associated information to allow mutual authentication between | associated information to allow mutual authentication between | |||
| client and RS. The resulting security association between client | client and RS. The resulting security association between client | |||
| and RS may then also be used to bind these credentials to the | and RS may then also be used to bind these credentials to the | |||
| access tokens the client uses. | access tokens the client uses. | |||
| Proof-of-Possession | Proof-of-Possession | |||
| The ACE framework, by default, implements proof-of-possession for | The ACE framework, by default, implements proof-of-possession for | |||
| access tokens, i.e., that the token holder can prove being a | access tokens, i.e., that the token holder can prove being a | |||
| holder of the key bound to the token. The binding is provided by | holder of the key bound to the token. The binding is provided by | |||
| the "cnf" claim [I-D.ietf-ace-cwt-proof-of-possession] indicating | the "cnf" claim [RFC8747] indicating what key is used for proof- | |||
| what key is used for proof-of-possession. If a client needs to | of-possession. If a client needs to submit a new access token, | |||
| submit a new access token, e.g., to obtain additional access | e.g., to obtain additional access rights, they can request that | |||
| rights, they can request that the AS binds this token to the same | the AS binds this token to the same key as the previous one. | |||
| key as the previous one. | ||||
| ACE Profiles | ACE Profiles | |||
| The client or RS may be limited in the encodings or protocols it | The client or RS may be limited in the encodings or protocols it | |||
| supports. To support a variety of different deployment settings, | supports. To support a variety of different deployment settings, | |||
| specific interactions between client and RS are defined in an ACE | specific interactions between client and RS are defined in an ACE | |||
| profile. In ACE framework the AS is expected to manage the | profile. In ACE framework the AS is expected to manage the | |||
| matching of compatible profile choices between a client and an RS. | matching of compatible profile choices between a client and an RS. | |||
| The AS informs the client of the selected profile using the | The AS informs the client of the selected profile using the | |||
| "ace_profile" parameter in the token response. | "ace_profile" parameter in the token response. | |||
| skipping to change at page 16, line 28 ¶ | skipping to change at page 16, line 27 ¶ | |||
| endpoints at the AS is assumed to be via HTTP and may use Uri-query | endpoints at the AS is assumed to be via HTTP and may use Uri-query | |||
| parameters. When profiles of this framework use CoAP instead, it is | parameters. When profiles of this framework use CoAP instead, it is | |||
| REQUIRED to use of the following alternative instead of Uri-query | REQUIRED to use of the following alternative instead of Uri-query | |||
| parameters: The sender (client or RS) encodes the parameters of its | parameters: The sender (client or RS) encodes the parameters of its | |||
| request as a CBOR map and submits that map as the payload of the POST | request as a CBOR map and submits that map as the payload of the POST | |||
| request. | request. | |||
| Profiles that use CBOR encoding of protocol message parameters at the | Profiles that use CBOR encoding of protocol message parameters at the | |||
| outermost encoding layer MUST use the media format 'application/ | outermost encoding layer MUST use the media format 'application/ | |||
| ace+cbor'. If CoAP is used for communication, the Content-Format | ace+cbor'. If CoAP is used for communication, the Content-Format | |||
| MUST be abbreviated with the ID: 19 (see Section 8.15). | MUST be abbreviated with the ID: 19 (see Section 8.16). | |||
| The OAuth 2.0 AS uses a JSON structure in the payload of its | The OAuth 2.0 AS uses a JSON structure in the payload of its | |||
| responses both to client and RS. If CoAP is used, it is REQUIRED to | responses both to client and RS. If CoAP is used, it is REQUIRED to | |||
| use CBOR [RFC7049] instead of JSON. Depending on the profile, the | use CBOR [RFC7049] instead of JSON. Depending on the profile, the | |||
| CBOR payload MAY be enclosed in a non-CBOR cryptographic wrapper. | CBOR payload MAY be enclosed in a non-CBOR cryptographic wrapper. | |||
| 5.1. Discovering Authorization Servers | 5.1. Discovering Authorization Servers | |||
| In order to determine the AS in charge of a resource hosted at the | In order to determine the AS in charge of a resource hosted at the | |||
| RS, C MAY send an initial Unauthorized Resource Request message to | RS, C MAY send an initial Unauthorized Resource Request message to | |||
| skipping to change at page 28, line 44 ¶ | skipping to change at page 28, line 44 ¶ | |||
| 5.6.4. Request and Response Parameters | 5.6.4. Request and Response Parameters | |||
| This section provides more detail about the new parameters that can | This section provides more detail about the new parameters that can | |||
| be used in access token requests and responses, as well as | be used in access token requests and responses, as well as | |||
| abbreviations for more compact encoding of existing parameters and | abbreviations for more compact encoding of existing parameters and | |||
| common parameter values. | common parameter values. | |||
| 5.6.4.1. Grant Type | 5.6.4.1. Grant Type | |||
| The abbreviations specified in the registry defined in Section 8.4 | The abbreviations specified in the registry defined in Section 8.5 | |||
| MUST be used in CBOR encodings instead of the string values defined | MUST be used in CBOR encodings instead of the string values defined | |||
| in [RFC6749], if CBOR payloads are used. | in [RFC6749], if CBOR payloads are used. | |||
| /--------------------+------------+------------------------\ | /--------------------+------------+------------------------\ | |||
| | Name | CBOR Value | Original Specification | | | Name | CBOR Value | Original Specification | | |||
| |--------------------+------------+------------------------| | |--------------------+------------+------------------------| | |||
| | password | 0 | [RFC6749] | | | password | 0 | [RFC6749] | | |||
| | authorization_code | 1 | [RFC6749] | | | authorization_code | 1 | [RFC6749] | | |||
| | client_credentials | 2 | [RFC6749] | | | client_credentials | 2 | [RFC6749] | | |||
| | refresh_token | 3 | [RFC6749] | | | refresh_token | 3 | [RFC6749] | | |||
| skipping to change at page 29, line 28 ¶ | skipping to change at page 29, line 28 ¶ | |||
| The "token_type" parameter, defined in section 5.1 of [RFC6749], | The "token_type" parameter, defined in section 5.1 of [RFC6749], | |||
| allows the AS to indicate to the client which type of access token it | allows the AS to indicate to the client which type of access token it | |||
| is receiving (e.g., a bearer token). | is receiving (e.g., a bearer token). | |||
| This document registers the new value "PoP" for the OAuth Access | This document registers the new value "PoP" for the OAuth Access | |||
| Token Types registry, specifying a proof-of-possession token. How | Token Types registry, specifying a proof-of-possession token. How | |||
| the proof-of-possession by the client to the RS is performed MUST be | the proof-of-possession by the client to the RS is performed MUST be | |||
| specified by the profiles. | specified by the profiles. | |||
| The values in the "token_type" parameter MUST use the CBOR | The values in the "token_type" parameter MUST use the CBOR | |||
| abbreviations defined in the registry specified by Section 8.6, if a | abbreviations defined in the registry specified by Section 8.7, if a | |||
| CBOR encoding is used. | CBOR encoding is used. | |||
| In this framework the "pop" value for the "token_type" parameter is | In this framework the "pop" value for the "token_type" parameter is | |||
| the default. The AS may, however, provide a different value. | the default. The AS may, however, provide a different value. | |||
| 5.6.4.3. Profile | 5.6.4.3. Profile | |||
| Profiles of this framework MUST define the communication protocol and | Profiles of this framework MUST define the communication protocol and | |||
| the communication security protocol between the client and the RS. | the communication security protocol between the client and the RS. | |||
| The security protocol MUST provide encryption, integrity and replay | The security protocol MUST provide encryption, integrity and replay | |||
| protection. It MUST also provide a binding between requests and | protection. It MUST also provide a binding between requests and | |||
| responses. Furthermore profiles MUST define a list of allowed proof- | responses. Furthermore profiles MUST define a list of allowed proof- | |||
| of-possession methods, if they support proof-of-possession tokens. | of-possession methods, if they support proof-of-possession tokens. | |||
| A profile MUST specify an identifier that MUST be used to uniquely | A profile MUST specify an identifier that MUST be used to uniquely | |||
| identify itself in the "ace_profile" parameter. The textual | identify itself in the "ace_profile" parameter. The textual | |||
| representation of the profile identifier is intended for human | representation of the profile identifier is intended for human | |||
| readability and for JSON-based interactions, it MUST NOT be used for | readability and for JSON-based interactions, it MUST NOT be used for | |||
| CBOR-based interactions. Profiles MUST register their identifier in | CBOR-based interactions. Profiles MUST register their identifier in | |||
| the registry defined in Section 8.7. | the registry defined in Section 8.8. | |||
| Profiles MAY define additional parameters for both the token request | Profiles MAY define additional parameters for both the token request | |||
| and the Access Information in the access token response in order to | and the Access Information in the access token response in order to | |||
| support negotiation or signaling of profile specific parameters. | support negotiation or signaling of profile specific parameters. | |||
| Clients that want the AS to provide them with the "ace_profile" | Clients that want the AS to provide them with the "ace_profile" | |||
| parameter in the access token response can indicate that by sending a | parameter in the access token response can indicate that by sending a | |||
| ace_profile parameter with a null value (for CBOR-based interactions) | ace_profile parameter with a null value (for CBOR-based interactions) | |||
| or an empty string (for JSON based interactions) in the access token | or an empty string (for JSON based interactions) in the access token | |||
| request. | request. | |||
| skipping to change at page 30, line 24 ¶ | skipping to change at page 30, line 24 ¶ | |||
| previously received a "cnonce" parameter in the AS Request Creation | previously received a "cnonce" parameter in the AS Request Creation | |||
| Hints Section 5.1.2. The parameter is encoded as a byte string for | Hints Section 5.1.2. The parameter is encoded as a byte string for | |||
| CBOR-based interactions, and as a string (Base64 encoded binary) for | CBOR-based interactions, and as a string (Base64 encoded binary) for | |||
| JSON-based interactions. It MUST copy the value from the cnonce | JSON-based interactions. It MUST copy the value from the cnonce | |||
| parameter in the AS Request Creation Hints. | parameter in the AS Request Creation Hints. | |||
| 5.6.5. Mapping Parameters to CBOR | 5.6.5. Mapping Parameters to CBOR | |||
| If CBOR encoding is used, all OAuth parameters in access token | If CBOR encoding is used, all OAuth parameters in access token | |||
| requests and responses MUST be mapped to CBOR types as specified in | requests and responses MUST be mapped to CBOR types as specified in | |||
| the registry defined by Section 8.9, using the given integer | the registry defined by Section 8.10, using the given integer | |||
| abbreviation for the map keys. | abbreviation for the map keys. | |||
| Note that we have aligned the abbreviations corresponding to claims | Note that we have aligned the abbreviations corresponding to claims | |||
| with the abbreviations defined in [RFC8392]. | with the abbreviations defined in [RFC8392]. | |||
| Note also that abbreviations from -24 to 23 have a 1 byte encoding | Note also that abbreviations from -24 to 23 have a 1 byte encoding | |||
| size in CBOR. We have thus chosen to assign abbreviations in that | size in CBOR. We have thus chosen to assign abbreviations in that | |||
| range to parameters we expect to be used most frequently in | range to parameters we expect to be used most frequently in | |||
| constrained scenarios. | constrained scenarios. | |||
| skipping to change at page 34, line 47 ¶ | skipping to change at page 34, line 47 ¶ | |||
| o If the requesting entity does not have the right to perform this | o If the requesting entity does not have the right to perform this | |||
| introspection request, the AS MUST respond with a response code | introspection request, the AS MUST respond with a response code | |||
| equivalent to the CoAP code 4.03 (Forbidden). In this case no | equivalent to the CoAP code 4.03 (Forbidden). In this case no | |||
| payload is returned. | payload is returned. | |||
| o The parameters "error", "error_description" and "error_uri" MUST | o The parameters "error", "error_description" and "error_uri" MUST | |||
| be abbreviated using the codes specified in Figure 12. | be abbreviated using the codes specified in Figure 12. | |||
| o The error codes MUST be abbreviated using the codes specified in | o The error codes MUST be abbreviated using the codes specified in | |||
| the registry defined by Section 8.3. | the registry defined by Section 8.4. | |||
| Note that a properly formed and authorized query for an inactive or | Note that a properly formed and authorized query for an inactive or | |||
| otherwise invalid token does not warrant an error response by this | otherwise invalid token does not warrant an error response by this | |||
| specification. In these cases, the authorization server MUST instead | specification. In these cases, the authorization server MUST instead | |||
| respond with an introspection response with the "active" field set to | respond with an introspection response with the "active" field set to | |||
| "false". | "false". | |||
| 5.7.4. Mapping Introspection parameters to CBOR | 5.7.4. Mapping Introspection parameters to CBOR | |||
| If CBOR is used, the introspection request and response parameters | If CBOR is used, the introspection request and response parameters | |||
| MUST be mapped to CBOR types as specified in the registry defined by | MUST be mapped to CBOR types as specified in the registry defined by | |||
| Section 8.11, using the given integer abbreviation for the map key. | Section 8.12, using the given integer abbreviation for the map key. | |||
| Note that we have aligned abbreviations that correspond to a claim | Note that we have aligned abbreviations that correspond to a claim | |||
| with the abbreviations defined in [RFC8392] and the abbreviations of | with the abbreviations defined in [RFC8392] and the abbreviations of | |||
| parameters with the same name from Section 5.6.5. | parameters with the same name from Section 5.6.5. | |||
| /-------------------+----------+-------------------------\ | /-------------------+----------+-------------------------\ | |||
| | Parameter name | CBOR Key | Value Type | | | Parameter name | CBOR Key | Value Type | | |||
| |-------------------+----------+-------------------------| | |-------------------+----------+-------------------------| | |||
| | iss | 1 | text string | | | iss | 1 | text string | | |||
| | sub | 2 | text string | | | sub | 2 | text string | | |||
| skipping to change at page 36, line 6 ¶ | skipping to change at page 36, line 6 ¶ | |||
| \-------------------+----------+-------------------------/ | \-------------------+----------+-------------------------/ | |||
| Figure 16: CBOR Mappings to Token Introspection Parameters. | Figure 16: CBOR Mappings to Token Introspection Parameters. | |||
| 5.8. The Access Token | 5.8. The Access Token | |||
| This framework RECOMMENDS the use of CBOR web token (CWT) as | This framework RECOMMENDS the use of CBOR web token (CWT) as | |||
| specified in [RFC8392]. | specified in [RFC8392]. | |||
| In order to facilitate offline processing of access tokens, this | In order to facilitate offline processing of access tokens, this | |||
| document uses the "cnf" claim from | document uses the "cnf" claim from [RFC8747] and the "scope" claim | |||
| [I-D.ietf-ace-cwt-proof-of-possession] and the "scope" claim from | from [RFC8693] for JWT- and CWT-encoded tokens. In addition to | |||
| [RFC8693] for JWT- and CWT-encoded tokens. In addition to string | string encoding specified for the "scope" claim, a binary encoding | |||
| encoding specified for the "scope" claim, a binary encoding MAY be | MAY be used. The syntax of such an encoding is explicitly not | |||
| used. The syntax of such an encoding is explicitly not specified | specified here and left to profiles or applications, specifically | |||
| here and left to profiles or applications, specifically note that a | note that a binary encoded scope does not necessarily use the space | |||
| binary encoded scope does not necessarily use the space character | character '0x20' to delimit scope-tokens. | |||
| '0x20' to delimit scope-tokens. | ||||
| If the AS needs to convey a hint to the RS about which profile it | If the AS needs to convey a hint to the RS about which profile it | |||
| should use to communicate with the client, the AS MAY include an | should use to communicate with the client, the AS MAY include an | |||
| "ace_profile" claim in the access token, with the same syntax and | "ace_profile" claim in the access token, with the same syntax and | |||
| semantics as defined in Section 5.6.4.3. | semantics as defined in Section 5.6.4.3. | |||
| If the client submitted a client-nonce parameter in the access token | If the client submitted a client-nonce parameter in the access token | |||
| request Section 5.6.4.4, the AS MUST include the value of this | request Section 5.6.4.4, the AS MUST include the value of this | |||
| parameter in the "cnonce" claim specified here. The "cnonce" claim | parameter in the "cnonce" claim specified here. The "cnonce" claim | |||
| uses binary encoding. | uses binary encoding. | |||
| skipping to change at page 50, line 18 ¶ | skipping to change at page 50, line 18 ¶ | |||
| information as possible in an unencrypted response. If means of | information as possible in an unencrypted response. If means of | |||
| encrypting communication between C and RS already exist, more | encrypting communication between C and RS already exist, more | |||
| detailed information may be included with an error response to | detailed information may be included with an error response to | |||
| provide C with sufficient information to react on that particular | provide C with sufficient information to react on that particular | |||
| error. | error. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| This document creates several registries with a registration policy | This document creates several registries with a registration policy | |||
| of "Expert Review"; guidelines to the experts are given in | of "Expert Review"; guidelines to the experts are given in | |||
| Section 8.16. | Section 8.17. | |||
| 8.1. ACE Authorization Server Request Creation Hints | 8.1. ACE Authorization Server Request Creation Hints | |||
| This specification establishes the IANA "ACE Authorization Server | This specification establishes the IANA "ACE Authorization Server | |||
| Request Creation Hints" registry. The registry has been created to | Request Creation Hints" registry. The registry has been created to | |||
| use the "Expert Review" registration procedure [RFC8126]. It should | use the "Expert Review" registration procedure [RFC8126]. It should | |||
| be noted that, in addition to the expert review, some portions of the | be noted that, in addition to the expert review, some portions of the | |||
| registry require a specification, potentially a Standards Track RFC, | registry require a specification, potentially a Standards Track RFC, | |||
| be supplied as well. | be supplied as well. | |||
| skipping to change at page 51, line 5 ¶ | skipping to change at page 51, line 5 ¶ | |||
| Value Type The CBOR data types allowable for the values of this | Value Type The CBOR data types allowable for the values of this | |||
| parameter. | parameter. | |||
| Reference This contains a pointer to the public specification of the | Reference This contains a pointer to the public specification of the | |||
| request creation hint abbreviation, if one exists. | request creation hint abbreviation, if one exists. | |||
| This registry will be initially populated by the values in Figure 2. | This registry will be initially populated by the values in Figure 2. | |||
| The Reference column for all of these entries will be this document. | The Reference column for all of these entries will be this document. | |||
| 8.2. OAuth Extensions Error Registration | 8.2. CoRE Resource Type registry | |||
| IANA is requested to register a new Resource Type (rt=) Link Target | ||||
| Attribute in the "Resource Type (rt=) Link Target Attribute Values" | ||||
| subregistry under the "Constrained RESTful Environments (CoRE) | ||||
| Parameters" [IANA.CoreParameters] registry: | ||||
| rt="ace.ai". This resource type describes an ACE-OAuth authz-info | ||||
| endpoint resource. | ||||
| Specific ACE-OAuth profiles can use this common resource type for | ||||
| defining their profile-specific discovery processes. | ||||
| 8.3. OAuth Extensions Error Registration | ||||
| This specification registers the following error values in the OAuth | This specification registers the following error values in the OAuth | |||
| Extensions Error registry [IANA.OAuthExtensionsErrorRegistry]. | Extensions Error registry [IANA.OAuthExtensionsErrorRegistry]. | |||
| o Error name: "unsupported_pop_key" | o Error name: "unsupported_pop_key" | |||
| o Error usage location: token error response | o Error usage location: token error response | |||
| o Related protocol extension: [this document] | o Related protocol extension: [this document] | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification document(s): Section 5.6.3 of [this document] | o Specification document(s): Section 5.6.3 of [this document] | |||
| o Error name: "incompatible_ace_profiles" | o Error name: "incompatible_ace_profiles" | |||
| o Error usage location: token error response | o Error usage location: token error response | |||
| o Related protocol extension: [this document] | o Related protocol extension: [this document] | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification document(s): Section 5.6.3 of [this document] | o Specification document(s): Section 5.6.3 of [this document] | |||
| 8.3. OAuth Error Code CBOR Mappings Registry | 8.4. OAuth Error Code CBOR Mappings Registry | |||
| This specification establishes the IANA "OAuth Error Code CBOR | This specification establishes the IANA "OAuth Error Code CBOR | |||
| Mappings" registry. The registry has been created to use the "Expert | Mappings" registry. The registry has been created to use the "Expert | |||
| Review" registration procedure [RFC8126], except for the value range | Review" registration procedure [RFC8126], except for the value range | |||
| designated for private use. | designated for private use. | |||
| The columns of the registry are: | The columns of the registry are: | |||
| Name The OAuth Error Code name, refers to the name in Section 5.2. | Name The OAuth Error Code name, refers to the name in Section 5.2. | |||
| of [RFC6749], e.g., "invalid_request". | of [RFC6749], e.g., "invalid_request". | |||
| CBOR Value CBOR abbreviation for this error code. Integer values | CBOR Value CBOR abbreviation for this error code. Integer values | |||
| less than -65536 are marked as "Private Use", all other values use | less than -65536 are marked as "Private Use", all other values use | |||
| the registration policy "Expert Review" [RFC8126]. | the registration policy "Expert Review" [RFC8126]. | |||
| Reference This contains a pointer to the public specification of the | Reference This contains a pointer to the public specification of the | |||
| error code abbreviation, if one exists. | error code abbreviation, if one exists. | |||
| This registry will be initially populated by the values in Figure 10. | This registry will be initially populated by the values in Figure 10. | |||
| The Reference column for all of these entries will be this document. | The Reference column for all of these entries will be this document. | |||
| 8.4. OAuth Grant Type CBOR Mappings | 8.5. OAuth Grant Type CBOR Mappings | |||
| This specification establishes the IANA "OAuth Grant Type CBOR | This specification establishes the IANA "OAuth Grant Type CBOR | |||
| Mappings" registry. The registry has been created to use the "Expert | Mappings" registry. The registry has been created to use the "Expert | |||
| Review" registration procedure [RFC8126], except for the value range | Review" registration procedure [RFC8126], except for the value range | |||
| designated for private use. | designated for private use. | |||
| The columns of this registry are: | The columns of this registry are: | |||
| Name The name of the grant type as specified in Section 1.3 of | Name The name of the grant type as specified in Section 1.3 of | |||
| [RFC6749]. | [RFC6749]. | |||
| skipping to change at page 52, line 4 ¶ | skipping to change at page 52, line 19 ¶ | |||
| This specification establishes the IANA "OAuth Grant Type CBOR | This specification establishes the IANA "OAuth Grant Type CBOR | |||
| Mappings" registry. The registry has been created to use the "Expert | Mappings" registry. The registry has been created to use the "Expert | |||
| Review" registration procedure [RFC8126], except for the value range | Review" registration procedure [RFC8126], except for the value range | |||
| designated for private use. | designated for private use. | |||
| The columns of this registry are: | The columns of this registry are: | |||
| Name The name of the grant type as specified in Section 1.3 of | Name The name of the grant type as specified in Section 1.3 of | |||
| [RFC6749]. | [RFC6749]. | |||
| CBOR Value CBOR abbreviation for this grant type. Integer values | CBOR Value CBOR abbreviation for this grant type. Integer values | |||
| less than -65536 are marked as "Private Use", all other values use | less than -65536 are marked as "Private Use", all other values use | |||
| the registration policy "Expert Review" [RFC8126]. | the registration policy "Expert Review" [RFC8126]. | |||
| Reference This contains a pointer to the public specification of the | Reference This contains a pointer to the public specification of the | |||
| grant type abbreviation, if one exists. | grant type abbreviation, if one exists. | |||
| Original Specification This contains a pointer to the public | Original Specification This contains a pointer to the public | |||
| specification of the grant type, if one exists. | specification of the grant type, if one exists. | |||
| This registry will be initially populated by the values in Figure 11. | This registry will be initially populated by the values in Figure 11. | |||
| The Reference column for all of these entries will be this document. | The Reference column for all of these entries will be this document. | |||
| 8.5. OAuth Access Token Types | 8.6. OAuth Access Token Types | |||
| This section registers the following new token type in the "OAuth | This section registers the following new token type in the "OAuth | |||
| Access Token Types" registry [IANA.OAuthAccessTokenTypes]. | Access Token Types" registry [IANA.OAuthAccessTokenTypes]. | |||
| o Type name: "PoP" | o Type name: "PoP" | |||
| o Additional Token Endpoint Response Parameters: "cnf", "rs_cnf" see | o Additional Token Endpoint Response Parameters: "cnf", "rs_cnf" see | |||
| section 3.3 of [I-D.ietf-ace-oauth-params]. | section 3.3 of [I-D.ietf-ace-oauth-params]. | |||
| o HTTP Authentication Scheme(s): N/A | o HTTP Authentication Scheme(s): N/A | |||
| o Change Controller: IETF | o Change Controller: IETF | |||
| o Specification document(s): [this document] | o Specification document(s): [this document] | |||
| 8.6. OAuth Access Token Type CBOR Mappings | 8.7. OAuth Access Token Type CBOR Mappings | |||
| This specification established the IANA "OAuth Access Token Type CBOR | This specification established the IANA "OAuth Access Token Type CBOR | |||
| Mappings" registry. The registry has been created to use the "Expert | Mappings" registry. The registry has been created to use the "Expert | |||
| Review" registration procedure [RFC8126], except for the value range | Review" registration procedure [RFC8126], except for the value range | |||
| designated for private use. | designated for private use. | |||
| The columns of this registry are: | The columns of this registry are: | |||
| Name The name of token type as registered in the OAuth Access Token | Name The name of token type as registered in the OAuth Access Token | |||
| Types registry, e.g., "Bearer". | Types registry, e.g., "Bearer". | |||
| skipping to change at page 52, line 39 ¶ | skipping to change at page 53, line 4 ¶ | |||
| This specification established the IANA "OAuth Access Token Type CBOR | This specification established the IANA "OAuth Access Token Type CBOR | |||
| Mappings" registry. The registry has been created to use the "Expert | Mappings" registry. The registry has been created to use the "Expert | |||
| Review" registration procedure [RFC8126], except for the value range | Review" registration procedure [RFC8126], except for the value range | |||
| designated for private use. | designated for private use. | |||
| The columns of this registry are: | The columns of this registry are: | |||
| Name The name of token type as registered in the OAuth Access Token | Name The name of token type as registered in the OAuth Access Token | |||
| Types registry, e.g., "Bearer". | Types registry, e.g., "Bearer". | |||
| CBOR Value CBOR abbreviation for this token type. Integer values | CBOR Value CBOR abbreviation for this token type. Integer values | |||
| less than -65536 are marked as "Private Use", all other values use | less than -65536 are marked as "Private Use", all other values use | |||
| the registration policy "Expert Review" [RFC8126]. | the registration policy "Expert Review" [RFC8126]. | |||
| Reference This contains a pointer to the public specification of the | Reference This contains a pointer to the public specification of the | |||
| OAuth token type abbreviation, if one exists. | OAuth token type abbreviation, if one exists. | |||
| Original Specification This contains a pointer to the public | Original Specification This contains a pointer to the public | |||
| specification of the OAuth token type, if one exists. | specification of the OAuth token type, if one exists. | |||
| 8.6.1. Initial Registry Contents | 8.7.1. Initial Registry Contents | |||
| o Name: "Bearer" | o Name: "Bearer" | |||
| o Value: 1 | o Value: 1 | |||
| o Reference: [this document] | o Reference: [this document] | |||
| o Original Specification: [RFC6749] | o Original Specification: [RFC6749] | |||
| o Name: "PoP" | o Name: "PoP" | |||
| o Value: 2 | o Value: 2 | |||
| o Reference: [this document] | o Reference: [this document] | |||
| o Original Specification: [this document] | o Original Specification: [this document] | |||
| 8.7. ACE Profile Registry | 8.8. ACE Profile Registry | |||
| This specification establishes the IANA "ACE Profile" registry. The | This specification establishes the IANA "ACE Profile" registry. The | |||
| registry has been created to use the "Expert Review" registration | registry has been created to use the "Expert Review" registration | |||
| procedure [RFC8126]. It should be noted that, in addition to the | procedure [RFC8126]. It should be noted that, in addition to the | |||
| expert review, some portions of the registry require a specification, | expert review, some portions of the registry require a specification, | |||
| potentially a Standards Track RFC, be supplied as well. | potentially a Standards Track RFC, be supplied as well. | |||
| The columns of this registry are: | The columns of this registry are: | |||
| Name The name of the profile, to be used as value of the profile | Name The name of the profile, to be used as value of the profile | |||
| skipping to change at page 53, line 36 ¶ | skipping to change at page 54, line 5 ¶ | |||
| Action. Integer values from -65536 to -257 and from 256 to 65535 | Action. Integer values from -65536 to -257 and from 256 to 65535 | |||
| are designated as Specification Required. Integer values greater | are designated as Specification Required. Integer values greater | |||
| than 65535 are designated as "Expert Review". Integer values less | than 65535 are designated as "Expert Review". Integer values less | |||
| than -65536 are marked as Private Use. | than -65536 are marked as Private Use. | |||
| Reference This contains a pointer to the public specification of the | Reference This contains a pointer to the public specification of the | |||
| profile abbreviation, if one exists. | profile abbreviation, if one exists. | |||
| This registry will be initially empty and will be populated by the | This registry will be initially empty and will be populated by the | |||
| registrations from the ACE framework profiles. | registrations from the ACE framework profiles. | |||
| 8.8. OAuth Parameter Registration | 8.9. OAuth Parameter Registration | |||
| This specification registers the following parameter in the "OAuth | This specification registers the following parameter in the "OAuth | |||
| Parameters" registry [IANA.OAuthParameters]: | Parameters" registry [IANA.OAuthParameters]: | |||
| o Name: "ace_profile" | o Name: "ace_profile" | |||
| o Parameter Usage Location: token response | o Parameter Usage Location: token response | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Reference: Section 5.6.2 and Section 5.6.4.3 of [this document] | o Reference: Section 5.6.2 and Section 5.6.4.3 of [this document] | |||
| 8.9. OAuth Parameters CBOR Mappings Registry | 8.10. OAuth Parameters CBOR Mappings Registry | |||
| This specification establishes the IANA "OAuth Parameters CBOR | This specification establishes the IANA "OAuth Parameters CBOR | |||
| Mappings" registry. The registry has been created to use the "Expert | Mappings" registry. The registry has been created to use the "Expert | |||
| Review" registration procedure [RFC8126], except for the value range | Review" registration procedure [RFC8126], except for the value range | |||
| designated for private use. | designated for private use. | |||
| The columns of this registry are: | The columns of this registry are: | |||
| Name The OAuth Parameter name, refers to the name in the OAuth | Name The OAuth Parameter name, refers to the name in the OAuth | |||
| parameter registry, e.g., "client_id". | parameter registry, e.g., "client_id". | |||
| skipping to change at page 54, line 20 ¶ | skipping to change at page 54, line 37 ¶ | |||
| -65536 are marked as "Private Use", all other values use the | -65536 are marked as "Private Use", all other values use the | |||
| registration policy "Expert Review" [RFC8126]. | registration policy "Expert Review" [RFC8126]. | |||
| Value Type The allowable CBOR data types for values of this | Value Type The allowable CBOR data types for values of this | |||
| parameter. | parameter. | |||
| Reference This contains a pointer to the public specification of the | Reference This contains a pointer to the public specification of the | |||
| OAuth parameter abbreviation, if one exists. | OAuth parameter abbreviation, if one exists. | |||
| This registry will be initially populated by the values in Figure 12. | This registry will be initially populated by the values in Figure 12. | |||
| The Reference column for all of these entries will be this document. | The Reference column for all of these entries will be this document. | |||
| 8.10. OAuth Introspection Response Parameter Registration | 8.11. OAuth Introspection Response Parameter Registration | |||
| This specification registers the following parameters in the OAuth | This specification registers the following parameters in the OAuth | |||
| Token Introspection Response registry | Token Introspection Response registry | |||
| [IANA.TokenIntrospectionResponse]. | [IANA.TokenIntrospectionResponse]. | |||
| o Name: "ace_profile" | o Name: "ace_profile" | |||
| o Description: The ACE profile used between client and RS. | o Description: The ACE profile used between client and RS. | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Reference: Section 5.7.2 of [this document] | o Reference: Section 5.7.2 of [this document] | |||
| skipping to change at page 54, line 46 ¶ | skipping to change at page 55, line 14 ¶ | |||
| o Reference: Section 5.7.2 of [this document] | o Reference: Section 5.7.2 of [this document] | |||
| o Name: "exi" | o Name: "exi" | |||
| o Description: "Expires in". Lifetime of the token in seconds from | o Description: "Expires in". Lifetime of the token in seconds from | |||
| the time the RS first sees it. Used to implement a weaker from of | the time the RS first sees it. Used to implement a weaker from of | |||
| token expiration for devices that cannot synchronize their | token expiration for devices that cannot synchronize their | |||
| internal clocks. | internal clocks. | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Reference: Section 5.7.2 of [this document] | o Reference: Section 5.7.2 of [this document] | |||
| 8.11. OAuth Token Introspection Response CBOR Mappings Registry | 8.12. OAuth Token Introspection Response CBOR Mappings Registry | |||
| This specification establishes the IANA "OAuth Token Introspection | This specification establishes the IANA "OAuth Token Introspection | |||
| Response CBOR Mappings" registry. The registry has been created to | Response CBOR Mappings" registry. The registry has been created to | |||
| use the "Expert Review" registration procedure [RFC8126], except for | use the "Expert Review" registration procedure [RFC8126], except for | |||
| the value range designated for private use. | the value range designated for private use. | |||
| The columns of this registry are: | The columns of this registry are: | |||
| Name The OAuth Parameter name, refers to the name in the OAuth | Name The OAuth Parameter name, refers to the name in the OAuth | |||
| parameter registry, e.g., "client_id". | parameter registry, e.g., "client_id". | |||
| skipping to change at page 55, line 24 ¶ | skipping to change at page 55, line 40 ¶ | |||
| Reference This contains a pointer to the public specification of the | Reference This contains a pointer to the public specification of the | |||
| introspection response parameter abbreviation, if one exists. | introspection response parameter abbreviation, if one exists. | |||
| This registry will be initially populated by the values in Figure 16. | This registry will be initially populated by the values in Figure 16. | |||
| The Reference column for all of these entries will be this document. | The Reference column for all of these entries will be this document. | |||
| Note that the mappings of parameters corresponding to claim names | Note that the mappings of parameters corresponding to claim names | |||
| intentionally coincide with the CWT claim name mappings from | intentionally coincide with the CWT claim name mappings from | |||
| [RFC8392]. | [RFC8392]. | |||
| 8.12. JSON Web Token Claims | 8.13. JSON Web Token Claims | |||
| This specification registers the following new claims in the JSON Web | This specification registers the following new claims in the JSON Web | |||
| Token (JWT) registry of JSON Web Token Claims | Token (JWT) registry of JSON Web Token Claims | |||
| [IANA.JsonWebTokenClaims]: | [IANA.JsonWebTokenClaims]: | |||
| o Claim Name: "ace_profile" | o Claim Name: "ace_profile" | |||
| o Claim Description: The ACE profile a token is supposed to be used | o Claim Description: The ACE profile a token is supposed to be used | |||
| with. | with. | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Reference: Section 5.8 of [this document] | o Reference: Section 5.8 of [this document] | |||
| skipping to change at page 55, line 35 ¶ | skipping to change at page 56, line 4 ¶ | |||
| This specification registers the following new claims in the JSON Web | This specification registers the following new claims in the JSON Web | |||
| Token (JWT) registry of JSON Web Token Claims | Token (JWT) registry of JSON Web Token Claims | |||
| [IANA.JsonWebTokenClaims]: | [IANA.JsonWebTokenClaims]: | |||
| o Claim Name: "ace_profile" | o Claim Name: "ace_profile" | |||
| o Claim Description: The ACE profile a token is supposed to be used | o Claim Description: The ACE profile a token is supposed to be used | |||
| with. | with. | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Reference: Section 5.8 of [this document] | o Reference: Section 5.8 of [this document] | |||
| o Claim Name: "cnonce" | o Claim Name: "cnonce" | |||
| o Claim Description: "client-nonce". A nonce previously provided to | o Claim Description: "client-nonce". A nonce previously provided to | |||
| the AS by the RS via the client. Used to verify token freshness | the AS by the RS via the client. Used to verify token freshness | |||
| when the RS cannot synchronize its clock with the AS. | when the RS cannot synchronize its clock with the AS. | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Reference: Section 5.8 of [this document] | o Reference: Section 5.8 of [this document] | |||
| o Claim Name: "exi" | o Claim Name: "exi" | |||
| o Claim Description: "Expires in". Lifetime of the token in seconds | o Claim Description: "Expires in". Lifetime of the token in seconds | |||
| from the time the RS first sees it. Used to implement a weaker | from the time the RS first sees it. Used to implement a weaker | |||
| from of token expiration for devices that cannot synchronize their | from of token expiration for devices that cannot synchronize their | |||
| internal clocks. | internal clocks. | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Reference: Section 5.8.3 of [this document] | o Reference: Section 5.8.3 of [this document] | |||
| 8.13. CBOR Web Token Claims | 8.14. CBOR Web Token Claims | |||
| This specification registers the following new claims in the "CBOR | This specification registers the following new claims in the "CBOR | |||
| Web Token (CWT) Claims" registry [IANA.CborWebTokenClaims]. | Web Token (CWT) Claims" registry [IANA.CborWebTokenClaims]. | |||
| o Claim Name: "ace_profile" | o Claim Name: "ace_profile" | |||
| o Claim Description: The ACE profile a token is supposed to be used | o Claim Description: The ACE profile a token is supposed to be used | |||
| with. | with. | |||
| o JWT Claim Name: ace_profile | o JWT Claim Name: ace_profile | |||
| o Claim Key: TBD (suggested: 38) | o Claim Key: TBD (suggested: 38) | |||
| o Claim Value Type(s): integer | o Claim Value Type(s): integer | |||
| skipping to change at page 56, line 41 ¶ | skipping to change at page 57, line 7 ¶ | |||
| o JWT Claim Name: exi | o JWT Claim Name: exi | |||
| o Claim Key: TBD (suggested: 40) | o Claim Key: TBD (suggested: 40) | |||
| o Claim Value Type(s): integer | o Claim Value Type(s): integer | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 5.8.3 of [this document] | o Specification Document(s): Section 5.8.3 of [this document] | |||
| o Claim Name: "scope" | o Claim Name: "scope" | |||
| o Claim Description: The scope of an access token as defined in | o Claim Description: The scope of an access token as defined in | |||
| [RFC6749]. | [RFC6749]. | |||
| o JWT Claim Name: scope | o JWT Claim Name: scope | |||
| o Claim Key: TBD (suggested: 9) | o Claim Key: TBD (suggested: 42) | |||
| o Claim Value Type(s): byte string or text string | o Claim Value Type(s): byte string or text string | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 4.2 of [RFC8693] | o Specification Document(s): Section 4.2 of [RFC8693] | |||
| 8.14. Media Type Registrations | 8.15. Media Type Registrations | |||
| This specification registers the 'application/ace+cbor' media type | This specification registers the 'application/ace+cbor' media type | |||
| for messages of the protocols defined in this document carrying | for messages of the protocols defined in this document carrying | |||
| parameters encoded in CBOR. This registration follows the procedures | parameters encoded in CBOR. This registration follows the procedures | |||
| specified in [RFC6838]. | specified in [RFC6838]. | |||
| Type name: application | Type name: application | |||
| Subtype name: ace+cbor | Subtype name: ace+cbor | |||
| skipping to change at page 57, line 38 ¶ | skipping to change at page 58, line 4 ¶ | |||
| Additional information: N/A | Additional information: N/A | |||
| Person & email address to contact for further information: | Person & email address to contact for further information: | |||
| <iesg@ietf.org> | <iesg@ietf.org> | |||
| Intended usage: COMMON | Intended usage: COMMON | |||
| Restrictions on usage: none | Restrictions on usage: none | |||
| Author: Ludwig Seitz <ludwig.seitz@combitech.se> | Author: Ludwig Seitz <ludwig.seitz@combitech.se> | |||
| Change controller: IESG | Change controller: IESG | |||
| 8.15. CoAP Content-Format Registry | 8.16. CoAP Content-Format Registry | |||
| This specification registers the following entry to the "CoAP | This specification registers the following entry to the "CoAP | |||
| Content-Formats" registry: | Content-Formats" registry: | |||
| Media Type: application/ace+cbor | Media Type: application/ace+cbor | |||
| Encoding: - | Encoding: - | |||
| ID: TBD (suggested: 19) | ID: TBD (suggested: 19) | |||
| Reference: [this document] | Reference: [this document] | |||
| 8.16. Expert Review Instructions | 8.17. Expert Review Instructions | |||
| All of the IANA registries established in this document are defined | All of the IANA registries established in this document are defined | |||
| to use a registration policy of Expert Review. This section gives | to use a registration policy of Expert Review. This section gives | |||
| some general guidelines for what the experts should be looking for, | some general guidelines for what the experts should be looking for, | |||
| but they are being designated as experts for a reason, so they should | but they are being designated as experts for a reason, so they should | |||
| be given substantial latitude. | be given substantial latitude. | |||
| Expert reviewers should take into consideration the following points: | Expert reviewers should take into consideration the following points: | |||
| o Point squatting should be discouraged. Reviewers are encouraged | o Point squatting should be discouraged. Reviewers are encouraged | |||
| skipping to change at page 59, line 16 ¶ | skipping to change at page 59, line 31 ¶ | |||
| contributing their work on AS discovery from draft-gerdes-ace-dcaf- | contributing their work on AS discovery from draft-gerdes-ace-dcaf- | |||
| authorize (see Section 5.1). | authorize (see Section 5.1). | |||
| Thanks to Jim Schaad and Mike Jones for their comprehensive reviews. | Thanks to Jim Schaad and Mike Jones for their comprehensive reviews. | |||
| Thanks to Benjamin Kaduk for his input on various questions related | Thanks to Benjamin Kaduk for his input on various questions related | |||
| to this work. | to this work. | |||
| Thanks to Cigdem Sengul for some very useful review comments. | Thanks to Cigdem Sengul for some very useful review comments. | |||
| Thanks to Carsten Bormann for contributing the text for the CoRE | ||||
| Resource Type registry. | ||||
| Ludwig Seitz and Goeran Selander worked on this document as part of | Ludwig Seitz and Goeran Selander worked on this document as part of | |||
| the CelticPlus project CyberWI, with funding from Vinnova. Ludwig | the CelticPlus project CyberWI, with funding from Vinnova. Ludwig | |||
| Seitz was also received further funding for this work by Vinnova in | Seitz was also received further funding for this work by Vinnova in | |||
| the context of the CelticNext project Critisec. | the context of the CelticNext project Critisec. | |||
| 10. References | 10. References | |||
| 10.1. Normative References | 10.1. Normative References | |||
| [I-D.ietf-ace-cwt-proof-of-possession] | ||||
| Jones, M., Seitz, L., Selander, G., Erdtman, S., and H. | ||||
| Tschofenig, "Proof-of-Possession Key Semantics for CBOR | ||||
| Web Tokens (CWTs)", draft-ietf-ace-cwt-proof-of- | ||||
| possession-11 (work in progress), October 2019. | ||||
| [I-D.ietf-ace-oauth-params] | [I-D.ietf-ace-oauth-params] | |||
| Seitz, L., "Additional OAuth Parameters for Authorization | Seitz, L., "Additional OAuth Parameters for Authorization | |||
| in Constrained Environments (ACE)", draft-ietf-ace-oauth- | in Constrained Environments (ACE)", draft-ietf-ace-oauth- | |||
| params-11 (work in progress), January 2020. | params-13 (work in progress), April 2020. | |||
| [IANA.CborWebTokenClaims] | [IANA.CborWebTokenClaims] | |||
| IANA, "CBOR Web Token (CWT) Claims", | IANA, "CBOR Web Token (CWT) Claims", | |||
| <https://www.iana.org/assignments/cwt/cwt.xhtml#claims- | <https://www.iana.org/assignments/cwt/cwt.xhtml#claims- | |||
| registry>. | registry>. | |||
| [IANA.CoreParameters] | ||||
| IANA, "Constrained RESTful Environments (CoRE) | ||||
| Parameters", <https://www.iana.org/assignments/core- | ||||
| parameters/core-parameters.xhtml>. | ||||
| [IANA.JsonWebTokenClaims] | [IANA.JsonWebTokenClaims] | |||
| IANA, "JSON Web Token Claims", | IANA, "JSON Web Token Claims", | |||
| <https://www.iana.org/assignments/jwt/jwt.xhtml#claims>. | <https://www.iana.org/assignments/jwt/jwt.xhtml#claims>. | |||
| [IANA.OAuthAccessTokenTypes] | [IANA.OAuthAccessTokenTypes] | |||
| IANA, "OAuth Access Token Types", | IANA, "OAuth Access Token Types", | |||
| <https://www.iana.org/assignments/oauth-parameters/oauth- | <https://www.iana.org/assignments/oauth-parameters/oauth- | |||
| parameters.xhtml#token-types>. | parameters.xhtml#token-types>. | |||
| [IANA.OAuthExtensionsErrorRegistry] | [IANA.OAuthExtensionsErrorRegistry] | |||
| skipping to change at page 62, line 5 ¶ | skipping to change at page 62, line 14 ¶ | |||
| [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, | [RFC8392] Jones, M., Wahlstroem, E., Erdtman, S., and H. Tschofenig, | |||
| "CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392, | "CBOR Web Token (CWT)", RFC 8392, DOI 10.17487/RFC8392, | |||
| May 2018, <https://www.rfc-editor.org/info/rfc8392>. | May 2018, <https://www.rfc-editor.org/info/rfc8392>. | |||
| [RFC8693] Jones, M., Nadalin, A., Campbell, B., Ed., Bradley, J., | [RFC8693] Jones, M., Nadalin, A., Campbell, B., Ed., Bradley, J., | |||
| and C. Mortimore, "OAuth 2.0 Token Exchange", RFC 8693, | and C. Mortimore, "OAuth 2.0 Token Exchange", RFC 8693, | |||
| DOI 10.17487/RFC8693, January 2020, | DOI 10.17487/RFC8693, January 2020, | |||
| <https://www.rfc-editor.org/info/rfc8693>. | <https://www.rfc-editor.org/info/rfc8693>. | |||
| [RFC8747] Jones, M., Seitz, L., Selander, G., Erdtman, S., and H. | ||||
| Tschofenig, "Proof-of-Possession Key Semantics for CBOR | ||||
| Web Tokens (CWTs)", RFC 8747, DOI 10.17487/RFC8747, March | ||||
| 2020, <https://www.rfc-editor.org/info/rfc8747>. | ||||
| 10.2. Informative References | 10.2. Informative References | |||
| [BLE] Bluetooth SIG, "Bluetooth Core Specification v5.1", | [BLE] Bluetooth SIG, "Bluetooth Core Specification v5.1", | |||
| Section 4.4, January 2019, | Section 4.4, January 2019, | |||
| <https://www.bluetooth.com/specifications/bluetooth-core- | <https://www.bluetooth.com/specifications/bluetooth-core- | |||
| specification/>. | specification/>. | |||
| [I-D.erdtman-ace-rpcc] | [I-D.erdtman-ace-rpcc] | |||
| Seitz, L. and S. Erdtman, "Raw-Public-Key and Pre-Shared- | Seitz, L. and S. Erdtman, "Raw-Public-Key and Pre-Shared- | |||
| Key as OAuth client credentials", draft-erdtman-ace- | Key as OAuth client credentials", draft-erdtman-ace- | |||
| rpcc-02 (work in progress), October 2017. | rpcc-02 (work in progress), October 2017. | |||
| [I-D.ietf-quic-transport] | [I-D.ietf-quic-transport] | |||
| Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed | Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed | |||
| and Secure Transport", draft-ietf-quic-transport-25 (work | and Secure Transport", draft-ietf-quic-transport-29 (work | |||
| in progress), January 2020. | in progress), June 2020. | |||
| [I-D.ietf-tls-dtls13] | [I-D.ietf-tls-dtls13] | |||
| Rescorla, E., Tschofenig, H., and N. Modadugu, "The | Rescorla, E., Tschofenig, H., and N. Modadugu, "The | |||
| Datagram Transport Layer Security (DTLS) Protocol Version | Datagram Transport Layer Security (DTLS) Protocol Version | |||
| 1.3", draft-ietf-tls-dtls13-34 (work in progress), | 1.3", draft-ietf-tls-dtls13-38 (work in progress), May | |||
| November 2019. | 2020. | |||
| [Margi10impact] | [Margi10impact] | |||
| Margi, C., de Oliveira, B., de Sousa, G., Simplicio Jr, | Margi, C., de Oliveira, B., de Sousa, G., Simplicio Jr, | |||
| M., Barreto, P., Carvalho, T., Naeslund, M., and R. Gold, | M., Barreto, P., Carvalho, T., Naeslund, M., and R. Gold, | |||
| "Impact of Operating Systems on Wireless Sensor Networks | "Impact of Operating Systems on Wireless Sensor Networks | |||
| (Security) Applications and Testbeds", Proceedings of | (Security) Applications and Testbeds", Proceedings of | |||
| the 19th International Conference on Computer | the 19th International Conference on Computer | |||
| Communications and Networks (ICCCN), August 2010. | Communications and Networks (ICCCN), August 2010. | |||
| [MQTT5.0] Banks, A., Briggs, E., Borgendale, K., and R. Gupta, "MQTT | [MQTT5.0] Banks, A., Briggs, E., Borgendale, K., and R. Gupta, "MQTT | |||
| skipping to change at page 67, line 10 ¶ | skipping to change at page 67, line 29 ¶ | |||
| This framework defines the name "Access Information" for data | This framework defines the name "Access Information" for data | |||
| concerning the RS that the AS returns to the client in an access | concerning the RS that the AS returns to the client in an access | |||
| token response (see Section 5.6.2). This aims at enabling | token response (see Section 5.6.2). This aims at enabling | |||
| scenarios where a powerful client, supporting multiple profiles, | scenarios where a powerful client, supporting multiple profiles, | |||
| needs to interact with an RS for which it does not know the | needs to interact with an RS for which it does not know the | |||
| supported profiles and the raw public key. | supported profiles and the raw public key. | |||
| Proof-of-Possession: | Proof-of-Possession: | |||
| This framework makes use of proof-of-possession tokens, using the | This framework makes use of proof-of-possession tokens, using the | |||
| "cnf" claim [I-D.ietf-ace-cwt-proof-of-possession]. A request | "cnf" claim [RFC8747]. A request parameter "cnf" and a Response | |||
| parameter "cnf" and a Response parameter "cnf", both having a | parameter "cnf", both having a value space semantically and | |||
| value space semantically and syntactically identical to the "cnf" | syntactically identical to the "cnf" claim, are defined for the | |||
| claim, are defined for the token endpoint, to allow requesting and | token endpoint, to allow requesting and stating confirmation keys. | |||
| stating confirmation keys. This aims at making token theft | This aims at making token theft harder. Token theft is | |||
| harder. Token theft is specifically relevant in constrained use | specifically relevant in constrained use cases, as communication | |||
| cases, as communication often passes through middle-boxes, which | often passes through middle-boxes, which could be able to steal | |||
| could be able to steal bearer tokens and use them to gain | bearer tokens and use them to gain unauthorized access. | |||
| unauthorized access. | ||||
| Authz-Info endpoint: | Authz-Info endpoint: | |||
| This framework introduces a new way of providing access tokens to | This framework introduces a new way of providing access tokens to | |||
| an RS by exposing a authz-info endpoint, to which access tokens | an RS by exposing a authz-info endpoint, to which access tokens | |||
| can be POSTed. This aims at reducing the size of the request | can be POSTed. This aims at reducing the size of the request | |||
| message and the code complexity at the RS. The size of the | message and the code complexity at the RS. The size of the | |||
| request message is problematic, since many constrained protocols | request message is problematic, since many constrained protocols | |||
| have severe message size limitations at the physical layer (e.g., | have severe message size limitations at the physical layer (e.g., | |||
| in the order of 100 bytes). This means that larger packets get | in the order of 100 bytes). This means that larger packets get | |||
| skipping to change at page 84, line 22 ¶ | skipping to change at page 84, line 22 ¶ | |||
| o Added privacy considerations about leakage through unprotected AS | o Added privacy considerations about leakage through unprotected AS | |||
| discovery. | discovery. | |||
| o Added text that clarifies that introspection is optional. | o Added text that clarifies that introspection is optional. | |||
| o Made profile parameter optional since it can be implicit. | o Made profile parameter optional since it can be implicit. | |||
| o Clarified that CoAP is not mandatory and other protocols can be | o Clarified that CoAP is not mandatory and other protocols can be | |||
| used. | used. | |||
| o Clarified the design justification for specific features of the | o Clarified the design justification for specific features of the | |||
| framework in appendix A. | framework in appendix A. | |||
| o Clarified appendix E.2. | o Clarified appendix E.2. | |||
| o Removed specification of the "cnf" claim for CBOR/COSE, and | o Removed specification of the "cnf" claim for CBOR/COSE, and | |||
| replaced with references to [I-D.ietf-ace-cwt-proof-of-possession] | replaced with references to [RFC8747] | |||
| F.16. Version -06 to -07 | F.16. Version -06 to -07 | |||
| o Various clarifications added. | o Various clarifications added. | |||
| o Fixed erroneous author email. | o Fixed erroneous author email. | |||
| F.17. Version -05 to -06 | F.17. Version -05 to -06 | |||
| o Moved sections that define the ACE framework into a subsection of | o Moved sections that define the ACE framework into a subsection of | |||
| the framework Section 5. | the framework Section 5. | |||
| End of changes. 50 change blocks. | ||||
| 87 lines changed or deleted | 103 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/ | ||||