summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9237.txt
blob: 4d1dc1e7a7739b293d0bf963c46f2903d0b8c4f2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
Internet Engineering Task Force (IETF)                        C. Bormann
Request for Comments: 9237                        Universität Bremen TZI
Category: Standards Track                                    August 2022
ISSN: 2070-1721


    An Authorization Information Format (AIF) for Authentication and
            Authorization for Constrained Environments (ACE)

Abstract

   Information about which entities are authorized to perform what
   operations on which constituents of other entities is a crucial
   component of producing an overall system that is secure.  Conveying
   precise authorization information is especially critical in highly
   automated systems with large numbers of entities, such as the
   Internet of Things.

   This specification provides a generic information model and format
   for representing such authorization information, as well as two
   variants of a specific instantiation of that format for use with
   Representational State Transfer (REST) resources identified by URI
   path.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc9237.

Copyright Notice

   Copyright (c) 2022 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Revised BSD License text as described in Section 4.e of the
   Trust Legal Provisions and are provided without warranty as described
   in the Revised BSD License.

Table of Contents

   1.  Introduction
     1.1.  Terminology
   2.  Information Model
     2.1.  REST-Specific Model
     2.2.  Limitations
     2.3.  REST-Specific Model with Dynamic Resource Creation
   3.  Data Model
   4.  Media Types
   5.  IANA Considerations
     5.1.  Media Types
       5.1.1.  application/aif+cbor
       5.1.2.  application/aif+json
     5.2.  Registries
     5.3.  Content-Format
   6.  Security Considerations
   7.  References
     7.1.  Normative References
     7.2.  Informative References
   Acknowledgements
   Author's Address

1.  Introduction

   Constrained devices, as they are used in the Internet of Things, need
   security in order to operate correctly and prevent misuse.  One
   important element of this security is that devices in the Internet of
   Things need to be able to decide which operations requested of them
   should be considered authorized, ascertain that the authorization to
   request the operation does apply to the actual requester as
   authenticated, and ascertain that other devices they make requests of
   are the ones they intended.

   To transfer detailed authorization information from an authorization
   manager (such as an ACE-OAuth authorization server [RFC9200]) to a
   device, a compact representation format is needed.  This document
   defines such a format -- the Authorization Information Format (AIF).
   AIF is defined both as a general structure that can be used for many
   different applications and as a specific instantiation tailored to
   REST resources and the permissions on them, including some provision
   for dynamically created resources.

1.1.  Terminology

   This memo uses terms from the Constrained Application Protocol (CoAP)
   [RFC7252] and the Internet Security Glossary [RFC4949]; CoAP is used
   for the explanatory examples as it is a good fit for constrained
   devices.

   The shape of data is specified in Concise Data Definition Language
   (CDDL) [RFC8610] [RFC9165].  Terminology for constrained devices is
   defined in [RFC7228].

   The term "byte", abbreviated by "B", is used in its now customary
   sense as a synonym for "octet".

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

2.  Information Model

   Authorizations are generally expressed through some data structures
   that are cryptographically secured (or transmitted in a secure way).
   This section discusses the information model underlying the payload
   of that data (as opposed to the cryptographic armor around it).

   The semantics of the authorization information defined in this
   document are that of an _allow-list_: everything is denied until it
   is explicitly allowed.

   For the purposes of this specification, the underlying access control
   model will be that of an access matrix, which gives a set of
   permissions for each possible combination of a subject and an object.
   We are focusing the AIF data item on a single row in the access
   matrix (such a row has often been called a "capability list") without
   concern to the subject for which the data item is issued.  As a
   consequence, AIF MUST be used in a way that the subject of the
   authorizations is unambiguously identified (e.g., as part of the
   armor around it).

   The generic model of such a capability list is a list of pairs of
   object identifiers (of type Toid) and the permissions (of type Tperm)
   that the subject has on the object(s) identified.

   AIF-Generic<Toid, Tperm> = [* [Toid, Tperm]]

                    Figure 1: Definition of Generic AIF

   In a specific data model (such as the one specified in this
   document), the object identifier (Toid) will often be a text string,
   and the set of permissions (Tperm) will be represented by a bit set,
   which in turn is represented as a number (see Section 3).

   AIF-Specific = AIF-Generic<tstr, uint>

              Figure 2: Commonly Used Shape of a Specific AIF

2.1.  REST-Specific Model

   In the specific instantiation of the REST resources and the
   permissions on them, we use the URI of a resource on a CoAP server
   for the object identifier (Toid).  More specifically, since the parts
   of the URI that identify the server ("authority" in [RFC3986]) are
   authenticated during REST resource access (Section 4.2.2 of [RFC9110]
   and Section 6.2 of [RFC7252]), they naturally fall into the realm
   handled by the cryptographic armor; we therefore focus on the "path"
   ("path-abempty") and "query" parts of the URI (_URI-local-part_ in
   this specification, as expressed by the Uri-Path and Uri-Query
   options in CoAP).  As a consequence, AIF MUST be used in a way that
   it is clear who is the target (enforcement point) of these
   authorizations (note that there may be more than one target that the
   same authorization applies to, e.g., in a situation with homogeneous
   devices).

   For the permissions (Tperm), we use a simple permissions model that
   lists the subset of the REST (CoAP or HTTP) methods permitted.  This
   model is summarized in Table 1.

                    +================+================+
                    | URI-local-part | Permission Set |
                    +================+================+
                    | /s/temp        | GET            |
                    +----------------+----------------+
                    | /a/led         | PUT, GET       |
                    +----------------+----------------+
                    | /dtls          | POST           |
                    +----------------+----------------+

                         Table 1: An Authorization
                       Instance in the REST-Specific
                           AIF Information Model

   In this example, a device offers a temperature sensor /s/temp for
   read-only access, a LED actuator /a/led for read/write, and a /dtls
   resource for POST access.

   As shown in the data model (Section 3), the representations of REST
   methods provided are limited to those that have a CoAP method number
   assigned; an extension to the model may be necessary to represent
   permissions for exotic HTTP methods.

2.2.  Limitations

   This simple information model only allows granting permissions for
   statically identifiable objects, e.g., URIs for the REST-specific
   instantiation.  One might be tempted to extend the model towards URI
   templates [RFC6570] (for instance, to open up an authorization for
   many parameter values as in /s/temp{?any*}).  However, that requires
   some considerations of the ease and unambiguity of matching a given
   URI against a set of templates in an AIF data item.

   This simple information model also does not allow expressing
   conditionalized access based on state outside the identification of
   objects (e.g., "opening a door is allowed if it is not locked").

   Finally, the model does not provide any special access for a set of
   resources that are specific to a subject, e.g., that the subject
   created itself by previous operations (PUT, POST, or PATCH/iPATCH
   [RFC8132]) or that were specifically created for the subject by
   others.

2.3.  REST-Specific Model with Dynamic Resource Creation

   The _REST-specific model with dynamic resource creation_ addresses
   the need to provide defined access to dynamic resources that were
   created by the subject itself, specifically, a resource that is made
   known to the subject by providing Location-* options in a CoAP
   response or using the Location header field in HTTP [RFC9110] (the
   Location-indicating mechanisms).  (The concept is somewhat comparable
   to "Access Control List (ACL) inheritance" in the Network File System
   version 4 (NFSv4) protocol [RFC8881], except that it does not use a
   containment relationship but rather the fact that the dynamic
   resource was created from a resource to which the subject had
   access.)  In other words, it addresses an important subset of the
   third limitation mentioned in Section 2.2.

          +================+===================================+
          | URI-local-part | Permission Set                    |
          +================+===================================+
          | /a/make-coffee | POST, Dynamic-GET, Dynamic-DELETE |
          +----------------+-----------------------------------+

             Table 2: An Authorization Instance in the REST-
               Specific AIF Information Model with Dynamic
                            Resource Creation

   For a method X, the presence of a Dynamic-X permission means that the
   subject holds permission to exercise the method X on resources that
   have been returned in a 2.01 (201 Created) response by a Location-
   indicating mechanism to a request that the subject made to the
   resource listed.  In the example shown in Table 2, POST operations on
   /a/make-coffee might return the location of a resource dynamically
   created on the coffee machine that allows GET to find out about the
   status of, and DELETE to cancel, the coffee-making operation.

   Since the use of the extension defined in this section can be
   detected by the mentioning of the Dynamic-X permissions, there is no
   need for another explicit switch between the basic and the model
   extended by dynamic resource creation; the extended model is always
   presumed once a Dynamic-X permission is present.

3.  Data Model

   Different data model specializations can be defined for the generic
   information model given above.

   In this section, we will give the data model for simple REST
   authorization as per Sections 2.1 and 2.3.  As discussed, in this
   case the object identifier is specialized as a text string giving a
   relative URI (URI-local-part as the absolute path on the server
   serving as the enforcement point).  The permission set is specialized
   to a single number _REST-method-set_ by the following steps:

   *  The entries in the table that specify the same URI-local-part are
      merged into a single entry that specifies the union of the
      permission sets.

   *  The (non-dynamic) methods in the permission sets are converted
      into their CoAP method numbers, minus 1.

   *  Dynamic-X permissions are converted into what the number would
      have been for X, plus a Dynamic-Offset that has been chosen as 32
      (e.g., 35 is the number for Dynamic-DELETE as the number for
      DELETE is 3).

   *  The set of numbers is converted into a single number REST-method-
      set by taking two to the power of each (decremented) method number
      and computing the inclusive OR of the binary representations of
      all the power values.

   This data model could be interchanged in the JSON [RFC8259]
   representation given in Figure 3.

   [["/s/temp",1],["/a/led",5],["/dtls",2]]

       Figure 3: An Authorization Instance Encoded in JSON (40 Bytes)

   In Figure 4, a straightforward specification of the data model
   (including both the methods from [RFC7252] and the new ones from
   [RFC8132], identified by the method code minus 1) is shown in CDDL
   [RFC8610] [RFC9165]:

   AIF-REST = AIF-Generic<local-path, REST-method-set>
   local-path = tstr   ; URI relative to enforcement point
   REST-method-set = uint .bits methods
   methods = &(
     GET: 0
     POST: 1
     PUT: 2
     DELETE: 3
     FETCH: 4
     PATCH: 5
     iPATCH: 6
     Dynamic-GET: 32; 0 .plus Dynamic-Offset
     Dynamic-POST: 33; 1 .plus Dynamic-Offset
     Dynamic-PUT: 34; 2 .plus Dynamic-Offset
     Dynamic-DELETE: 35; 3 .plus Dynamic-Offset
     Dynamic-FETCH: 36; 4 .plus Dynamic-Offset
     Dynamic-PATCH: 37; 5 .plus Dynamic-Offset
     Dynamic-iPATCH: 38; 6 .plus Dynamic-Offset
   )
   Dynamic-Offset = 32

                           Figure 4: AIF in CDDL

   For the information shown in Table 1 and Figure 3, a representation
   in Concise Binary Object Representation (CBOR) [RFC8949] is given in
   Figure 5; again, several optimizations and improvements are possible.

   83                        # array(3)
      82                     # array(2)
         67                  # text(7)
            2f732f74656d70   # "/s/temp"
         01                  # unsigned(1)
      82                     # array(2)
         66                  # text(6)
            2f612f6c6564     # "/a/led"
         05                  # unsigned(5)
      82                     # array(2)
         65                  # text(5)
            2f64746c73       # "/dtls"
         02                  # unsigned(2)

       Figure 5: An Authorization Instance Encoded in CBOR (28 Bytes)

   Note that having chosen 32 as Dynamic-Offset means that all future
   CoAP methods that are registered can be represented both as
   themselves and in the Dynamic-X variant, but that only the dynamic
   forms of methods 1 to 21 are typically usable in a JSON form
   [RFC7493].

4.  Media Types

   This specification defines media types for the generic information
   model, expressed in JSON (application/aif+json) or in CBOR
   (application/aif+cbor).  These media types have parameters for
   specifying Toid and Tperm; default values are the values "URI-local-
   part" for Toid and "REST-method-set" for Tperm, as per Section 3 of
   the present specification.

   A specification that wants to use generic AIF with different Toid
   and/or Tperm is expected to request these as media type parameters
   (Section 5.2) and register a corresponding Content-Format
   (Section 5.3).

5.  IANA Considerations

5.1.  Media Types

   IANA has added the following media types to the "Media Types"
   registry.  The registration entries are in the following subsections.

   +==========+======================+=====================+
   | Name     | Template             | Reference           |
   +==========+======================+=====================+
   | aif+cbor | application/aif+cbor | RFC 9237, Section 4 |
   +----------+----------------------+---------------------+
   | aif+json | application/aif+json | RFC 9237, Section 4 |
   +----------+----------------------+---------------------+

                    Table 3: New Media Types

5.1.1.  application/aif+cbor

   Type name:  application

   Subtype name:  aif+cbor

   Required parameters:  N/A

   Optional parameters:

      Toid:
         the identifier for the object for which permissions are
         supplied.  A value from the "Sub-Parameter Registry for
         application/aif+cbor and application/aif+json" subregistry for
         Toid.  Default value: "URI-local-part" (RFC 9237).

      Tperm:
         the data type of a permission set for the object identified via
         a Toid.  A value from the "Sub-Parameter Registry for
         application/aif+cbor and application/aif+json" subregistry for
         Tperm.  Default value: "REST-method-set" (RFC 9237).

   Encoding considerations:  binary (CBOR)

   Security considerations:  Section 6 of RFC 9237

   Interoperability considerations:  N/A

   Published specification:  Section 4 of RFC 9237

   Applications that use this media type:  Applications that need to
      convey structured authorization data for identified resources,
      conveying sets of permissions.

   Fragment identifier considerations:  The syntax and semantics of
      fragment identifiers is as specified for "application/cbor".  (At
      publication of RFC 9237, there is no fragment identification
      syntax defined for "application/cbor".)

   Person & email address to contact for further information:  ACE WG
      mailing list (ace@ietf.org) or IETF Applications and Real-Time
      Area (art@ietf.org)

   Intended usage:  COMMON

   Restrictions on usage:  N/A

   Author/Change controller:  IETF

   Provisional registration:  no

5.1.2.  application/aif+json

   Type name:  application

   Subtype name:  aif+json

   Required parameters:  N/A

   Optional parameters:

      Toid:
         the identifier for the object for which permissions are
         supplied.  A value from the media-type parameter subregistry
         for Toid.  Default value: "URI-local-part" (RFC 9237).

      Tperm:
         the data type of a permission set for the object identified via
         a Toid.  A value from the media-type parameter subregistry for
         Tperm.  Default value: "REST-method-set" (RFC 9237).

   Encoding considerations:  binary (JSON is UTF-8-encoded text)

   Security considerations:  Section 6 of RFC 9237

   Interoperability considerations:  N/A

   Published specification:  Section 4 of RFC 9237

   Applications that use this media type:  Applications that need to
      convey structured authorization data for identified resources,
      conveying sets of permissions.

   Fragment identifier considerations:  The syntax and semantics of
      fragment identifiers is as specified for "application/json".  (At
      publication of RFC 9237, there is no fragment identification
      syntax defined for "application/json".)

   Person & email address to contact for further information:  ACE WG
      mailing list (ace@ietf.org) or IETF Applications and Real-Time
      Area (art@ietf.org)

   Intended usage:  COMMON

   Restrictions on usage:  N/A

   Author/Change controller:  IETF

   Provisional registration:  no

5.2.  Registries

   For the media types application/aif+cbor and application/aif+json,
   IANA has created a subregistry within
   [IANA.media-type-sub-parameters] for the media-type parameters Toid
   and Tperm, populated with the following:

   +===========+=================+=====================+===========+
   | Parameter | name            | Description/        | Reference |
   |           |                 | Specification       |           |
   +===========+=================+=====================+===========+
   | Toid      | URI-local-part  | local-part of URI   | RFC 9237  |
   +-----------+-----------------+---------------------+-----------+
   | Tperm     | REST-method-set | set of REST methods | RFC 9237  |
   |           |                 | represented         |           |
   +-----------+-----------------+---------------------+-----------+

                   Table 4: New Media Type Parameters

   The registration policy is Specification Required [RFC8126].  The
   designated expert will engage with the submitter to ascertain whether
   the requirements of this document are addressed:

   *  The specifications for Toid and Tperm need to realize the general
      ideas of unambiguous object identifiers and permission lists in
      the context where the AIF data item is intended to be used, and
      their structure needs to be usable with the intended media types
      (application/aif+cbor and application/aif+json) as identified in
      the specification.

   *  The parameter names need to conform to Section 4.3 of [RFC6838],
      but preferably they are in [KebabCase] so they can be easily
      translated into names used in APIs with popular programming
      languages.

   The designated experts will develop further criteria and guidelines
   as needed.

5.3.  Content-Format

   IANA has registered Content-Format numbers in the "CoAP Content-
   Formats" subregistry, within the "Constrained RESTful Environments
   (CoRE) Parameters" registry [IANA.core-parameters], as follows:

   +======================+==========+=====+===========+
   | Media Type           | Encoding | ID  | Reference |
   +======================+==========+=====+===========+
   | application/aif+cbor | -        | 290 | RFC 9237  |
   +----------------------+----------+-----+-----------+
   | application/aif+json | -        | 291 | RFC 9237  |
   +----------------------+----------+-----+-----------+

                Table 5: New Content-Formats

   Note that applications that register Toid and Tperm values are
   encouraged to also register Content-Formats for the relevant
   combinations.

6.  Security Considerations

   The security considerations of [RFC7252] apply when AIF is used with
   CoAP; Section 11.1 of [RFC7252] specifically applies if complex
   formats such as URIs are used for Toid or Tperm.  Some wider issues
   are discussed in [RFC8576].

   When applying these formats, the referencing specification needs to
   be careful to ensure:

   *  that the cryptographic armor employed around this format fulfills
      the referencing specification's security objectives and that the
      armor or some additional information included in it with the AIF
      data item (1) unambiguously identifies the subject to which the
      authorizations shall apply and (2) provides any context
      information needed to derive the identity of the object to which
      authorization is being granted from the object identifiers (such
      as, for the data models defined in the present specification, the
      scheme and authority information that is used to construct the
      full URI), and

   *  that the types used for Toid and Tperm provide the appropriate
      granularity and precision so that application requirements on the
      precision of the authorization information are fulfilled and that
      all parties have the same understanding of each Toid/Tperm pair in
      terms of specified objects (resources) and operations on those.

   For the data formats, the security considerations of [RFC8259] and
   [RFC8949] apply.

   A plain implementation of AIF might implement just the basic REST
   model as per Section 2.1.  If it receives authorizations that include
   permissions that use the REST-specific model with dynamic resource
   creation (Section 2.3), it needs to either reject the AIF data item
   entirely or act only on the permissions that it does understand.  In
   other words, the semantics underlying an allow-list as discussed
   above need to hold here as well.

   An implementation of the REST-specific model with dynamic resource
   creation (Section 2.3) needs to carefully keep track of the
   dynamically created objects and the subjects to which the Dynamic-X
   permissions apply -- both on the server side to enforce the
   permissions and on the client side to know which permissions are
   available.

7.  References

7.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax", STD 66,
              RFC 3986, DOI 10.17487/RFC3986, January 2005,
              <https://www.rfc-editor.org/info/rfc3986>.

   [RFC6838]  Freed, N., Klensin, J., and T. Hansen, "Media Type
              Specifications and Registration Procedures", BCP 13,
              RFC 6838, DOI 10.17487/RFC6838, January 2013,
              <https://www.rfc-editor.org/info/rfc6838>.

   [RFC7252]  Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
              Application Protocol (CoAP)", RFC 7252,
              DOI 10.17487/RFC7252, June 2014,
              <https://www.rfc-editor.org/info/rfc7252>.

   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
              Writing an IANA Considerations Section in RFCs", BCP 26,
              RFC 8126, DOI 10.17487/RFC8126, June 2017,
              <https://www.rfc-editor.org/info/rfc8126>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC8610]  Birkholz, H., Vigano, C., and C. Bormann, "Concise Data
              Definition Language (CDDL): A Notational Convention to
              Express Concise Binary Object Representation (CBOR) and
              JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610,
              June 2019, <https://www.rfc-editor.org/info/rfc8610>.

   [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>.

   [RFC9165]  Bormann, C., "Additional Control Operators for the Concise
              Data Definition Language (CDDL)", RFC 9165,
              DOI 10.17487/RFC9165, December 2021,
              <https://www.rfc-editor.org/info/rfc9165>.

7.2.  Informative References

   [IANA.core-parameters]
              IANA, "Constrained RESTful Environments (CoRE)
              Parameters",
              <https://www.iana.org/assignments/core-parameters>.

   [IANA.media-type-sub-parameters]
              IANA, "MIME Media Type Sub-Parameter Registries",
              <https://www.iana.org/assignments/media-type-sub-
              parameters>.

   [KebabCase]
              "Kebab Case", 29 August 2014,
              <http://wiki.c2.com/?KebabCase>.

   [RFC4949]  Shirey, R., "Internet Security Glossary, Version 2",
              FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007,
              <https://www.rfc-editor.org/info/rfc4949>.

   [RFC6570]  Gregorio, J., Fielding, R., Hadley, M., Nottingham, M.,
              and D. Orchard, "URI Template", RFC 6570,
              DOI 10.17487/RFC6570, March 2012,
              <https://www.rfc-editor.org/info/rfc6570>.

   [RFC7228]  Bormann, C., Ersue, M., and A. Keranen, "Terminology for
              Constrained-Node Networks", RFC 7228,
              DOI 10.17487/RFC7228, May 2014,
              <https://www.rfc-editor.org/info/rfc7228>.

   [RFC7493]  Bray, T., Ed., "The I-JSON Message Format", RFC 7493,
              DOI 10.17487/RFC7493, March 2015,
              <https://www.rfc-editor.org/info/rfc7493>.

   [RFC8132]  van der Stok, P., Bormann, C., and A. Sehgal, "PATCH and
              FETCH Methods for the Constrained Application Protocol
              (CoAP)", RFC 8132, DOI 10.17487/RFC8132, April 2017,
              <https://www.rfc-editor.org/info/rfc8132>.

   [RFC8259]  Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
              Interchange Format", STD 90, RFC 8259,
              DOI 10.17487/RFC8259, December 2017,
              <https://www.rfc-editor.org/info/rfc8259>.

   [RFC8576]  Garcia-Morchon, O., Kumar, S., and M. Sethi, "Internet of
              Things (IoT) Security: State of the Art and Challenges",
              RFC 8576, DOI 10.17487/RFC8576, April 2019,
              <https://www.rfc-editor.org/info/rfc8576>.

   [RFC8881]  Noveck, D., Ed. and C. Lever, "Network File System (NFS)
              Version 4 Minor Version 1 Protocol", RFC 8881,
              DOI 10.17487/RFC8881, August 2020,
              <https://www.rfc-editor.org/info/rfc8881>.

   [RFC8949]  Bormann, C. and P. Hoffman, "Concise Binary Object
              Representation (CBOR)", STD 94, RFC 8949,
              DOI 10.17487/RFC8949, December 2020,
              <https://www.rfc-editor.org/info/rfc8949>.

   [RFC9200]  Seitz, L., Selander, G., Wahlstroem, E., Erdtman, S., and
              H. Tschofenig, "Authentication and Authorization for
              Constrained Environments Using the OAuth 2.0 Framework
              (ACE-OAuth)", RFC 9200, DOI 10.17487/RFC9200, August 2022,
              <https://www.rfc-editor.org/info/rfc9200>.

Acknowledgements

   Jim Schaad, Francesca Palombini, Olaf Bergmann, Marco Tiloca, and
   Christian Amsüss provided comments that shaped the direction of this
   document.  Alexey Melnikov pointed out that there were gaps in the
   media type specifications, and Loganaden Velvindron provided a
   shepherd review with further comments.  Many thanks also to the IESG
   reviewers, who provided several small but significant observations.
   Benjamin Kaduk provided an extensive review as Responsible Area
   Director and indeed is responsible for much improvement in the
   document.

Author's Address

   Carsten Bormann
   Universität Bremen TZI
   Postfach 330440
   D-28359 Bremen
   Germany
   Phone: +49-421-218-63921
   Email: cabo@tzi.org