rfc9200v6.txt   rfc9200.txt 
skipping to change at line 12 skipping to change at line 12
Internet Engineering Task Force (IETF) L. Seitz Internet Engineering Task Force (IETF) L. Seitz
Request for Comments: 9200 Combitech Request for Comments: 9200 Combitech
Category: Standards Track G. Selander Category: Standards Track G. Selander
ISSN: 2070-1721 Ericsson ISSN: 2070-1721 Ericsson
E. Wahlstroem E. Wahlstroem
S. Erdtman S. Erdtman
Spotify AB Spotify AB
H. Tschofenig H. Tschofenig
Arm Ltd. Arm Ltd.
June 2022 August 2022
Authentication and Authorization for Constrained Environments Using the Authentication and Authorization for Constrained Environments Using the
OAuth 2.0 Framework (ACE-OAuth) OAuth 2.0 Framework (ACE-OAuth)
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 authorization in Internet of Things (IoT) environments called
ACE-OAuth. The framework is based on a set of building blocks ACE-OAuth. The framework is based on a set of building blocks
including OAuth 2.0 and the Constrained Application Protocol (CoAP), including OAuth 2.0 and the Constrained Application Protocol (CoAP),
skipping to change at line 196 skipping to change at line 196
phones and tablets, may implement multiple profiles and will phones and tablets, may implement multiple profiles and will
therefore be able to interact with a wider range of constrained therefore be able to interact with a wider range of constrained
devices. Requirements on profiles are described at contextually devices. Requirements on profiles are described at contextually
appropriate places throughout this specification and also summarized appropriate places throughout this specification and also summarized
in Appendix C. in Appendix C.
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in
14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
Certain security-related terms, such as "authentication", Certain security-related terms, such as "authentication",
"authorization", "confidentiality", "(data) integrity", "message "authorization", "confidentiality", "(data) integrity", "message
authentication code", and "verify", are taken from [RFC4949]. authentication code", and "verify", are taken from [RFC4949].
Since exchanges in this specification are described as RESTful Since exchanges in this specification are described as RESTful
protocol interactions, HTTP [RFC7231] offers useful terminology. protocol interactions, HTTP [RFC9110] offers useful terminology.
(Note that "RESTful" refers to the Representational State Transfer (Note that "RESTful" refers to the Representational State Transfer
(REST) architecture.) (REST) architecture.)
Terminology for entities in the architecture is defined in OAuth 2.0 Terminology for entities in the architecture is defined in OAuth 2.0
[RFC6749], such as client (C), resource server (RS), and [RFC6749], such as client (C), resource server (RS), and
authorization server (AS). authorization server (AS).
Note that the term "endpoint" is used here following its OAuth Note that the term "endpoint" is used here following its OAuth
definition, which is to denote resources, such as token and definition, which is to denote resources, such as token and
introspection at the AS and authz-info at the RS (see Section 5.10.1 introspection at the AS and authz-info at the RS (see Section 5.10.1
skipping to change at line 258 skipping to change at line 258
widespread deployment. Many IoT devices can support OAuth 2.0 widespread deployment. Many IoT devices can support OAuth 2.0
without any additional extensions, but for certain constrained without any additional extensions, but for certain constrained
settings, additional profiling is needed. settings, additional profiling is needed.
Another building block is the lightweight web transfer protocol CoAP Another building block is the lightweight web transfer protocol CoAP
[RFC7252], for those communication environments where HTTP is not [RFC7252], for those communication environments where HTTP is not
appropriate. CoAP typically runs on top of UDP, which further appropriate. CoAP typically runs on top of UDP, which further
reduces overhead and message exchanges. While this specification reduces overhead and message exchanges. While this specification
defines extensions for the use of OAuth over CoAP, other underlying defines extensions for the use of OAuth over CoAP, other underlying
protocols are not prohibited from being supported in the future, such protocols are not prohibited from being supported in the future, such
as HTTP/2 [RFC7540], Message Queuing Telemetry Transport (MQTT) as HTTP/2 [RFC9113], Message Queuing Telemetry Transport (MQTT)
[MQTT5.0], Bluetooth Low Energy (BLE) [BLE], and QUIC [RFC9000]. [MQTT5.0], Bluetooth Low Energy (BLE) [BLE], and QUIC [RFC9000].
Note that this document specifies protocol exchanges in terms of Note that this document specifies protocol exchanges in terms of
RESTful verbs, such as GET and POST. Future profiles using protocols RESTful verbs, such as GET and POST. Future profiles using protocols
that do not support these verbs MUST specify how the corresponding that do not support these verbs MUST specify how the corresponding
protocol messages are transmitted instead. protocol messages are transmitted instead.
A third building block is the Concise Binary Object Representation A third building block is the Concise Binary Object Representation
(CBOR) [RFC8949], for encodings where JSON [RFC8259] is not (CBOR) [RFC8949], for encodings where JSON [RFC8259] is not
sufficiently compact. CBOR is a binary encoding designed for small sufficiently compact. CBOR is a binary encoding designed for small
code and message size. Self-contained tokens and protocol message code and message size. Self-contained tokens and protocol message
payloads are encoded in CBOR when CoAP is used. When CoAP is not payloads are encoded in CBOR when CoAP is used. When CoAP is not
used, the use of CBOR remains RECOMMENDED. used, the use of CBOR remains RECOMMENDED.
A fourth building block is CBOR Object Signing and Encryption (COSE) A fourth building block is CBOR Object Signing and Encryption (COSE)
[RFC8152], which enables object-level layer security as an [RFC8152], which enables object-level layer security as an
alternative or complement to transport layer security (DTLS [RFC6347] alternative or complement to transport layer security (DTLS [RFC6347]
or TLS [RFC8446]). COSE is used to secure self-contained tokens, [RFC9147] or TLS [RFC8446]). COSE is used to secure self-contained
such as proof-of-possession (PoP) tokens, which are an extension to tokens, such as proof-of-possession (PoP) tokens, which are an
the OAuth bearer tokens. The default token format is defined in CBOR extension to the OAuth bearer tokens. The default token format is
Web Token (CWT) [RFC8392]. Application-layer security for CoAP using defined in CBOR Web Token (CWT) [RFC8392]. Application-layer
COSE can be provided with Object Security for Constrained RESTful security for CoAP using COSE can be provided with Object Security for
Environments (OSCORE) [RFC8613]. Constrained RESTful Environments (OSCORE) [RFC8613].
With the building blocks listed above, solutions satisfying various With the building blocks listed above, solutions satisfying various
IoT device and network constraints are possible. A list of IoT device and network constraints are possible. A list of
constraints is described in detail in [RFC7228], and a description of constraints is described in detail in [RFC7228], and a description of
how the building blocks mentioned above relate to the various how the building blocks mentioned above relate to the various
constraints can be found in Appendix A. constraints can be found in Appendix A.
Luckily, not every IoT device suffers from all constraints. Luckily, not every IoT device suffers from all constraints.
Nevertheless, the ACE framework takes all these aspects into account Nevertheless, the ACE framework takes all these aspects into account
and allows several different deployment variants to coexist, rather and allows several different deployment variants to coexist, rather
skipping to change at line 535 skipping to change at line 535
the response parameters defined by OAuth 2.0 and the PoP access the response parameters defined by OAuth 2.0 and the PoP access
token extension, this framework defines parameters that can be token extension, this framework defines parameters that can be
used to inform the client about capabilities of the RS, e.g., the used to inform the client about capabilities of the RS, e.g., the
profile the RS supports. More information about these parameters profile the RS supports. More information about these parameters
can be found in Section 5.8.4. can be found in Section 5.8.4.
Resource Request (C): Resource Request (C):
The client interacts with the RS to request access to the The client interacts with the RS to request access to the
protected resource and provides the access token. The protocol to protected resource and provides the access token. The protocol to
use between the client and the RS is not restricted to CoAP. use between the client and the RS is not restricted to CoAP.
HTTP, HTTP/2 [RFC7540], QUIC [RFC9000], MQTT [MQTT5.0], Bluetooth HTTP, HTTP/2 [RFC9113], QUIC [RFC9000], MQTT [MQTT5.0], Bluetooth
Low Energy [BLE], etc., are also viable candidates. Low Energy [BLE], etc., are also viable candidates.
Depending on the device limitations and the selected protocol, Depending on the device limitations and the selected protocol,
this exchange may be split up into two parts: this exchange may be split up into two parts:
(1) the client sends the access token containing, or referencing, (1) the client sends the access token containing, or referencing,
the authorization information to the RS that will be used for the authorization information to the RS that will be used for
subsequent resource requests by the client, and subsequent resource requests by the client, and
(2) the client makes the resource access request using the (2) the client makes the resource access request using the
skipping to change at line 2947 skipping to change at line 2947
Web Tokens (CWTs)", RFC 8747, DOI 10.17487/RFC8747, March Web Tokens (CWTs)", RFC 8747, DOI 10.17487/RFC8747, March
2020, <https://www.rfc-editor.org/info/rfc8747>. 2020, <https://www.rfc-editor.org/info/rfc8747>.
[RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object [RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object
Representation (CBOR)", STD 94, RFC 8949, Representation (CBOR)", STD 94, RFC 8949,
DOI 10.17487/RFC8949, December 2020, DOI 10.17487/RFC8949, December 2020,
<https://www.rfc-editor.org/info/rfc8949>. <https://www.rfc-editor.org/info/rfc8949>.
[RFC9201] Seitz, L., "Additional OAuth Parameters for Authentication [RFC9201] Seitz, L., "Additional OAuth Parameters for Authentication
and Authorization in Constrained Environments (ACE)", and Authorization in Constrained Environments (ACE)",
RFC 9201, DOI 10.17487/RFC9201, June 2022, RFC 9201, DOI 10.17487/RFC9201, August 2022,
<https://www.rfc-editor.org/info/rfc9201>. <https://www.rfc-editor.org/info/rfc9201>.
9.2. Informative References 9.2. Informative References
[BLE] Bluetooth Special Interest Group, "Core Specification [BLE] Bluetooth Special Interest Group, "Core Specification
5.3", Section 4.4, July 2021, 5.3", Section 4.4, July 2021,
<https://www.bluetooth.com/specifications/bluetooth-core- <https://www.bluetooth.com/specifications/bluetooth-core-
specification/>. specification/>.
[DCAF] Gerdes, S., Bergmann, O., and C. Bormann, "Delegated CoAP [DCAF] Gerdes, S., Bergmann, O., and C. Bormann, "Delegated CoAP
skipping to change at line 3015 skipping to change at line 3015
[RFC7009] Lodderstedt, T., Ed., Dronia, S., and M. Scurtescu, "OAuth [RFC7009] Lodderstedt, T., Ed., Dronia, S., and M. Scurtescu, "OAuth
2.0 Token Revocation", RFC 7009, DOI 10.17487/RFC7009, 2.0 Token Revocation", RFC 7009, DOI 10.17487/RFC7009,
August 2013, <https://www.rfc-editor.org/info/rfc7009>. August 2013, <https://www.rfc-editor.org/info/rfc7009>.
[RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for
Constrained-Node Networks", RFC 7228, Constrained-Node Networks", RFC 7228,
DOI 10.17487/RFC7228, May 2014, DOI 10.17487/RFC7228, May 2014,
<https://www.rfc-editor.org/info/rfc7228>. <https://www.rfc-editor.org/info/rfc7228>.
[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
Protocol (HTTP/1.1): Semantics and Content", RFC 7231,
DOI 10.17487/RFC7231, June 2014,
<https://www.rfc-editor.org/info/rfc7231>.
[RFC7521] Campbell, B., Mortimore, C., Jones, M., and Y. Goland, [RFC7521] Campbell, B., Mortimore, C., Jones, M., and Y. Goland,
"Assertion Framework for OAuth 2.0 Client Authentication "Assertion Framework for OAuth 2.0 Client Authentication
and Authorization Grants", RFC 7521, DOI 10.17487/RFC7521, and Authorization Grants", RFC 7521, DOI 10.17487/RFC7521,
May 2015, <https://www.rfc-editor.org/info/rfc7521>. May 2015, <https://www.rfc-editor.org/info/rfc7521>.
[RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext
Transfer Protocol Version 2 (HTTP/2)", RFC 7540,
DOI 10.17487/RFC7540, May 2015,
<https://www.rfc-editor.org/info/rfc7540>.
[RFC7591] Richer, J., Ed., Jones, M., Bradley, J., Machulak, M., and [RFC7591] Richer, J., Ed., Jones, M., Bradley, J., Machulak, M., and
P. Hunt, "OAuth 2.0 Dynamic Client Registration Protocol", P. Hunt, "OAuth 2.0 Dynamic Client Registration Protocol",
RFC 7591, DOI 10.17487/RFC7591, July 2015, RFC 7591, DOI 10.17487/RFC7591, July 2015,
<https://www.rfc-editor.org/info/rfc7591>. <https://www.rfc-editor.org/info/rfc7591>.
[RFC7641] Hartke, K., "Observing Resources in the Constrained [RFC7641] Hartke, K., "Observing Resources in the Constrained
Application Protocol (CoAP)", RFC 7641, Application Protocol (CoAP)", RFC 7641,
DOI 10.17487/RFC7641, September 2015, DOI 10.17487/RFC7641, September 2015,
<https://www.rfc-editor.org/info/rfc7641>. <https://www.rfc-editor.org/info/rfc7641>.
skipping to change at line 3089 skipping to change at line 3079
[RFC8628] Denniss, W., Bradley, J., Jones, M., and H. Tschofenig, [RFC8628] Denniss, W., Bradley, J., Jones, M., and H. Tschofenig,
"OAuth 2.0 Device Authorization Grant", RFC 8628, "OAuth 2.0 Device Authorization Grant", RFC 8628,
DOI 10.17487/RFC8628, August 2019, DOI 10.17487/RFC8628, August 2019,
<https://www.rfc-editor.org/info/rfc8628>. <https://www.rfc-editor.org/info/rfc8628>.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000, Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021, DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/info/rfc9000>. <https://www.rfc-editor.org/info/rfc9000>.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/info/rfc9110>.
[RFC9113] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113,
DOI 10.17487/RFC9113, June 2022,
<https://www.rfc-editor.org/info/rfc9113>.
[RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The [RFC9147] Rescorla, E., Tschofenig, H., and N. Modadugu, "The
Datagram Transport Layer Security (DTLS) Protocol Version Datagram Transport Layer Security (DTLS) Protocol Version
1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, 1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022,
<https://www.rfc-editor.org/info/rfc9147>. <https://www.rfc-editor.org/info/rfc9147>.
[RFC9202] Gerdes, S., Bergmann, O., Bormann, C., Selander, G., and [RFC9202] Gerdes, S., Bergmann, O., Bormann, C., Selander, G., and
L. Seitz, "Datagram Transport Layer Security (DTLS) L. Seitz, "Datagram Transport Layer Security (DTLS)
Profile for Authentication and Authorization for Profile for Authentication and Authorization for
Constrained Environments (ACE)", RFC 9202, Constrained Environments (ACE)", RFC 9202,
DOI 10.17487/RFC9202, June 2022, DOI 10.17487/RFC9202, August 2022,
<https://www.rfc-editor.org/info/rfc9202>. <https://www.rfc-editor.org/info/rfc9202>.
[RFC9203] Palombini, F., Seitz, L., Selander, G., and M. Gunnarsson, [RFC9203] Palombini, F., Seitz, L., Selander, G., and M. Gunnarsson,
"The Object Security for Constrained RESTful Environments "The Object Security for Constrained RESTful Environments
(OSCORE) Profile of the Authentication and Authorization (OSCORE) Profile of the Authentication and Authorization
for Constrained Environments (ACE) Framework", RFC 9203, for Constrained Environments (ACE) Framework", RFC 9203,
DOI 10.17487/RFC9203, June 2022, DOI 10.17487/RFC9203, August 2022,
<https://www.rfc-editor.org/info/rfc9203>. <https://www.rfc-editor.org/info/rfc9203>.
Appendix A. Design Justification Appendix A. Design Justification
This section provides further insight into the design decisions of This section provides further insight into the design decisions of
the solution documented in this document. Section 3 lists several the solution documented in this document. Section 3 lists several
building blocks and briefly summarizes their importance. The building blocks and briefly summarizes their importance. The
justification for offering some of those building blocks, as opposed justification for offering some of those building blocks, as opposed
to using OAuth 2.0 as is, is given below. to using OAuth 2.0 as is, is given below.
 End of changes. 12 change blocks. 
25 lines changed or deleted 24 lines changed or added

This html diff was produced by rfcdiff 1.48.