<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.8 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY I-D.ietf-ace-oauth-authz SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oauth-authz.xml">
<!ENTITY I-D.ietf-ace-oscore-profile SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ace-oscore-profile.xml">
<!ENTITY RFC8613 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8613.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC6749 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
<!ENTITY RFC8747 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8747.xml">
<!ENTITY I-D.ietf-lake-edhoc SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-lake-edhoc.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc tocdepth="2"?>

<rfc ipr="trust200902" docName="draft-palombini-ace-oscore-profile-v2-00" category="std">

  <front>
    <title abbrev="OSCORE Profile of ACE v2">OSCORE Profile of ACE v2</title>

    <author initials="F." surname="Palombini" fullname="Francesca Palombini">
      <organization>Ericsson AB</organization>
      <address>
        <postal>
          <street>Torshamnsgatan 23</street>
          <city>Kista</city>
          <code>SE-16440 Stockholm</code>
          <country>Sweden</country>
        </postal>
        <email>francesca.palombini@ericsson.com</email>
      </address>
    </author>

    <date year="2020" month="September" day="21"/>

    
    <workgroup>ACE Working Group</workgroup>
    

    <abstract>


<t>This document specifies a profile for the Authentication and Authorization for Constrained Environments (ACE) framework.  It utilizes Object Security for Constrained RESTful Environments (OSCORE) to provide communication security and proof-of-possession for a key owned by the client and bound to an OAuth 2.0 access token. Additionally, this profile provides OSCORE identifiers negotiation between Client and Resource Server.</t>



    </abstract>


  </front>

  <middle>


<section anchor="intro" title="Introduction">

<t>An OSCORE profile of ACE is defined in <xref target="I-D.ietf-ace-oscore-profile"/>. That profiles describes how to set up OSCORE between nodes, while the OSCORE Sender and Recipient Identifiers, i.e. the identifiers of the OSCORE keying material, are assigned by the Authorization Server. This has some limitations, especially if the OSCORE profile is used in conjuction with other mechamisms that also derive identifiers, in which case there needs to be a mechanism in place to avoid  collisions.</t>

<t>This document describes a new OSCORE profile that builds on <xref target="I-D.ietf-ace-oscore-profile"/>, and adds a mechanism for negotiating identifiers between Client and Resource Server.</t>

<section anchor="terminology" title="Terminology">

<t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

<t>Readers are expected to be familiar with the terms and concepts described in  <xref target="I-D.ietf-ace-oauth-authz"/> <xref target="I-D.ietf-ace-oscore-profile"/>, such as Authorization Server (AS) and Resource Server (RS).</t>

<t>Readers are expected to be familiar with the terms and concepts described in <xref target="RFC8613"/>, especially on the use of Sender, Recipient and Context Identifiers.</t>

</section>
<section anchor="background" title="Background">

<t>TODO: introduce OSCORE Sender and Recipient Identifiers and how they are used in OSCORE.</t>

<t>The OSCORE profile defined in <xref target="I-D.ietf-ace-oscore-profile"/> specifies that the AS assigns and sends the OSCORE Sender and Recipient Identifiers to both Client and RS, together with the rest of the input material to derive the complete OSCORE Security Context. That is done by including these identifiers in the Access Token and Access Information response to the Client. The access token containing these identifiers is also forwarded to the RS by the Client.</t>

<t>This works with a number of requirements: the OSCORE profile states that 
<!-- a resource is associated to one single AS, which makes it possible for the AS to enforce uniqueness of identifiers for each client requesting a particular resource to a RS.  If this is not the case, collisions of identifiers may occur at the RS, in which case the RS needs to have a mechanism in place to disambiguate identifiers or mitigate the effect of the collisions. -->
if other authentication mechanisms are used to set up OSCORE between the same client and RS, that do not rely on an AS assigning identifiers, collisions may happen and need to be mitigated.
Such mitigation mechanisms also need to be used if a different AS (which does not synchronize identifiers with the first AS) or authentication protocol is used to set up OSCORE between the same RS and other clients. A mitigation example would be to use distinct namespaces of context identifiers for different authentication mechanisms or authentication servers. Another solution would be to use longer random identifiers. A third possible solution, acceptable if collisions are not expected to be numerous, would be to rely on trial and error of security contexts when receiving a message.</t>

<t>These solutions have the drawback of requiring either some sort of agreement between different authentication mechanisms using disjoint namespaces for the identifiers, and/or longer identifiers to be used, which leads to larger message sizes, or additional processing on the RS.</t>

<t>This document specifies an OSCORE profile that adds a mechanism to assign identifiers on top of the current OSCORE profile, and that allows to set up identifiers without collisions, even when other authentication mechanisms or non-syncrhonized AS are used. What specified in <xref target="I-D.ietf-ace-oscore-profile"/> applies to this profile as well, with the modifications reported in the following sections. Although defining a separate profile, the reader is advised that the <xref target="I-D.ietf-ace-oscore-profile"/> needs to be read side by side with this specification, to understand it.</t>

</section>
</section>
<section anchor="protocol-overview" title="Protocol Overview">

<t>This section defines the additions to Section 2 of <xref target="I-D.ietf-ace-oscore-profile"/>.</t>

<t>Once the client has retrieved the access token, and generated the nonce N1, the Client also generates a Recipient Identifier ID1 for use with the keying material associated to the RS. The client posts the token, N1 and its Recipient ID to the RS using the authz-info endpoint and mechanisms specified in section 5.8 of <xref target="I-D.ietf-ace-oauth-authz"/> and Content-Format = application/ace+cbor.</t>

<t>If the access token is valid, the RS replies to this request with a 2.01 (Created) response with Content-Format = application/ace+cbor, which contains a nonce N2 and a newly generated Recipient Identifier ID2 for use with the keying material associated to the Client in a CBOR map.  Moreover, the server concatenates the input salt, N1, and N2 to obtain the Master Salt of the OSCORE Security Context (see section 3 of <xref target="RFC8613"/>).  The RS then derives the complete Security Context associated with the received token from the Master Salt, the Recipient ID generated by the Client (set as its OSCORE Sender Id), the Recipient ID generated by itself (set as its OSCORE Recipient Id), plus the parameters received in the access token from the AS, following section 3.2 of <xref target="RFC8613"/>.</t>

<t>In a similar way, after receiving the nonce N2, the client concatenates the input salt, N1 and N2 to obtain the Master Salt of the OSCORE Security Context. The client then derives the complete Security Context from the Master Salt, the Recipient ID generated by the RS (set as its OSCORE Sender Id), the Recipient ID generated by itself (set as its OSCORE Recipient Id), plus the parameters received from the AS.</t>

<t>After the whole message exchange has taken place, the client can contact the AS to request an update of its access rights, sending a similar request to the token endpoint that also includes an identifier so that the AS can find the correct OSCORE security material it has previously shared with the Client.  This specific identifier, encoded as a byte string, is set by the AS to be unique in the sets of its OSCORE Security Contexts, and is not used as input material to derive the full OSCORE Security Context.</t>

<figure title="OSCORE Profile v2 Overview" anchor="fig1"><artwork align="center"><![CDATA[
   C                            RS                   AS
   |                            |                     |
   | ----- POST /token  ----------------------------> |
   |                            |                     |
   | <---------------------------- Access Token ----- |
   |                           + Access Information   |
   | ---- POST /authz-info ---> |                     |
   |  (access_token, N1, Id1)   |                     |
   |                            |                     |
   | <- 2.01 Created (N2, Id2)- |                     |
   |                            |                     |
 /Sec Context             /Sec Context                |
   Derivation/              Derivation/               |
   |                            |                     |
   | ---- OSCORE Request -----> |                     |
   |                            |                     |
   |                    /proof-of-possession          |
   |                    Sec Context storage/          |
   |                            |                     |
   | <--- OSCORE Response ----- |                     |
   |                            |                     |
/proof-of-possession            |                     |
Sec Context storage/            |                     |
   |                            |                     |
   | ---- OSCORE Request -----> |                     |
   |           ...              |                     |
]]></artwork></figure>

</section>
<section anchor="client-as-communication" title="Client-AS Communication">

<t>The following subsections apply modifications to what specified in Section 3 of <xref target="I-D.ietf-ace-oscore-profile"/>.</t>

<section anchor="c-to-as-post-to-token-endpoint" title="C-to-AS: POST to token endpoint">

<t>If the client wants to update its access rights without changing an existing OSCORE Security Context, it MUST include in its POST request to the token endpoint a req_cnf object.  The req_cnf MUST include a kid field carrying a CBOR byte string containing the OSCORE_Input_Material Identifier (assigned as discussed in <xref target="as-c"/>).</t>

<t>An example of an update of access rights request, with payload in CBOR diagnostic notation without the tag and value abbreviations is reported in <xref target="fig2"/>.</t>

<figure title="Example C-to-AS POST /token request for updating rights to an access token bound to a symmetric key." anchor="fig2"><artwork><![CDATA[
Header: POST (Code=0.02)
Uri-Host: "as.example.com"
Uri-Path: "token"
Content-Format: "application/ace+cbor"
Payload:
{
 "req_aud" : "tempSensor4711",
 "scope" : "write",
 "req_cnf" : {
   "kid" : h'01'
}
]]></artwork></figure>

</section>
<section anchor="as-c" title="AS-to-C: Access Token">

<t>The AS can signal that the use of OSCORE is REQUIRED for a specific access token by including the “profile” parameter with the value “coap_oscore_2” in the access token response.</t>

<t>The AS MUST send the following data:</t>

<t><list style="symbols">
  <t>a master secret</t>
  <t>an identifier of the OSCORE_Input_Material</t>
</list></t>

<t>The AS MUST NOT include clientId or serverId, in the OSCORE_Input_Material, neither in the ‘cnf’ nor in the claims sets associated with the access token.</t>

<t>The identifier of the OSCORE_Input_Material MUST be communicated as the ‘id’ field in the ‘osc’ field in the ‘cnf’ parameter of the access token response (and therefore included in the claims associated with the access token).</t>

<t>We don’t assume in this document that a resource is associated to one single AS, since the AS is not tasked with enforcing uniqueness of identifiers for each client requesting a particular resource to a RS. This profile can also be used together with other authentication mechanisms such as EDHOC, see <xref target="I-D.ietf-lake-edhoc"/>.</t>

<t><xref target="fig3"/> shows an example of an AS response, with payload in CBOR diagnostic notation without the tag and value abbreviations.  The access token has been truncated for readability.</t>

<figure title="Example AS-to-C Access Token response with OSCORE profile 2." anchor="fig3"><artwork><![CDATA[
Header: Created (Code=2.01)
Content-Type: "application/ace+cbor"
Payload:
{
 "access_token" : h'8343a1010aa2044c53 ...
  (remainder of access token (CWT) omitted for brevity)',
 "profile" : "coap_oscore_2",
 "expires_in" : "3600",
 "cnf" : {
   "osc" : {
     "ms" : h'f9af838368e353e78888e1426bd94e6f',
     "id" : h'01'
   }
 }
}
]]></artwork></figure>

<t><xref target="fig4"/> shows an example CWT Claims Set, including the relevant
   OSCORE parameters in the ‘cnf’ claim, in CBOR diagnostic notation
   without tag and value abbreviations.</t>

<figure title="Example CWT Claims Set with OSCORE parameters." anchor="fig4"><artwork><![CDATA[
{
 "aud" : "tempSensorInLivingRoom",
 "iat" : "1360189224",
 "exp" : "1360289224",
 "scope" :  "temperature_g firmware_p",
 "cnf" : {
   "osc" : {
     "ms" : h'f9af838368e353e78888e1426bd94e6f',
     "id" : h'01'
   }
 }
}
]]></artwork></figure>

<t>The same CWT Claims Set as in <xref target="fig4"/>, using the value abbreviations defined in <xref target="I-D.ietf-ace-oauth-authz"/> and <xref target="RFC8747"/> and encoded in CBOR is shown in <xref target="fig5"/>.  The bytes in hexadecimal are reported in the first column, while their corresponding CBOR meaning is reported after the ‘#’ sign on the second column, for easiness of readability.</t>

<figure title="Example CWT Claims Set with OSCORE parameters, CBOR encoded" anchor="fig5"><artwork><![CDATA[
A5                                      # map(5)
   63                                   # text(3)
      617564                            # "aud"
   76                                   # text(22)
      74656D7053656E736F72496E4C6976696E67526F6F6D 
                                        # "tempSensorInLivingRoom"
   63                                   # text(3)
      696174                            # "iat"
   6A                                   # text(10)
      31333630313839323234              # "1360189224"
   63                                   # text(3)
      657870                            # "exp"
   6A                                   # text(10)
      31333630323839323234              # "1360289224"
   65                                   # text(5)
      73636F7065                        # "scope"
   78 18                                # text(24)
      74656D70657261747572655F67206669726D776172655F70 
                                        # "temperature_g firmware_p"
   63                                   # text(3)
      636E66                            # "cnf"
   A1                                   # map(1)
      63                                # text(3)
         6F7363                         # "osc"
      A2                                # map(2)
         62                             # text(2)
            6D73                        # "ms"
         50                             # bytes(16)
            F9AF838368E353E78888E1426BD94E6F 
                                        # "\xF9\xAF\x83\x83h\xE3S\xE7
                                        \x88\x88\xE1Bk\xD9No"
         62                             # text(2)
            6964                        # "id"
         41                             # bytes(1)
            01                          # "\x01"

]]></artwork></figure>

<t>If the client has requested an update to its access rights using the same OSCORE_Input_Material, which is valid and authorized, the AS MUST omit the ‘cnf’ parameter in the response, and MUST carry the OSCORE_Input_Material Identifier in the ‘kid’ field in the ‘cnf’ parameter of the token. This identifier needs to be included in the token in order for the RS to identify the correct OSCORE Input Material.</t>

<t><xref target="fig6"/> shows an example of such an AS response, with payload in CBOR diagnostic notation without the tag and value abbreviations. The access token has been truncated for readability.</t>

<figure title="Example AS-to-C Access Token response with OSCORE profile, for update of access rights." anchor="fig6"><artwork><![CDATA[
Header: Created (Code=2.01)
Content-Type: "application/ace+cbor"
Payload:
{
 "access_token" : h'8343a1010aa2044c53 ...
  (remainder of access token (CWT) omitted for brevity)',
 "profile" : "coap_oscore_2",
 "expires_in" : "3600"
}
]]></artwork></figure>

<t><xref target="fig7"/> shows an example CWT Claims Set, containing the necessary OSCORE parameters in the ‘cnf’ claim for update of access rights, in CBOR diagnostic notation without tag and value abbreviations.</t>

<figure anchor="fig7"><artwork><![CDATA[
{
 "aud" : "tempSensorInLivingRoom",
 "iat" : "1360189224",
 "exp" : "1360289224",
 "scope" :  "temperature_h",
 "cnf" : {
   "kid" : h'01'
 }
}
]]></artwork></figure>

<section anchor="oscoreinputmaterial-object" title="OSCORE_Input_Material Object">

<t>The following parameter is added to the OSCORE_Input_Material object defined in Section 3.2.1 of <xref target="I-D.ietf-ace-oscore-profile"/>.</t>

<figure title="OSCORE_Input_Material Additional Parameters" anchor="fig8"><artwork><![CDATA[
+------------+-------+-------------+------------+--------------+
| name       | CBOR  | CBOR type   | registry   | description  |
|            | label |             |            |              |
+------------+-------+-------------+------------+--------------+
| identifier | 8     | byte string |            | OSCORE Input |
|            |       |             |            | Material     |
|            |       |             |            | Identifier   |
+------------+-------+-------------+------------+--------------+
]]></artwork></figure>

<t>
    <list style="hanging">
        <t hangText="id:">
                This parameter identifies the OSCORE_Input_Material and is encoded as a byte string.
                In JSON, the "id" value is a Base64 encoded byte string.
                In CBOR, the "id" type is byte string, and has label 8.
    </t>
      
  </list>

</t>

</section>
</section>
</section>
<section anchor="client-rs-communication" title="Client-RS Communication">

<t>Additionally to what specified in Section 4 of <xref target="I-D.ietf-ace-oscore-profile"/>, the client also generates an identifier id1, unique in the sets of its own Recipient Ids, and posts it together with the token and nonce N1 to the RS. The RS also generates an identifier id2, unique in the sets of its own Recipient Ids, and uses it together with the rest of the input material to derive a security context.  Both the nonces and identifiers are encoded as CBOR bstr if CBOR is used, and as Base64 string if JSON is used.</t>

<section anchor="c-to-rs" title="C-to-RS: POST to authz-info endpoint">

<t>Additionally to what specified in Section 4.1 of <xref target="I-D.ietf-ace-oscore-profile"/>, the following applies.</t>

<t>The client generates its own Recipient Id for the OSCORE Security Context that it is establishing with the RS. By generating its own Recipient Id, the client makes sure that it does not collide with any of its Recipient Identifiers. The client posts it to the RS together with what is described in Section 4.1 of <xref target="I-D.ietf-ace-oscore-profile"/>: the client includes the Recipient Id in the POST to authz-info request, as an ace_client_recipientid parameter, registered in <xref target="iana-oauth"/> and <xref target="iana-oauth-map"/>.</t>

<t>When receiving the POST to authz-info request including the ace_client_recipientid parameter, the RS MUST set its own Sender Identifier to the value of the ace_client_recipientid. If the ace_client_recipientid parameter is not included in the request, the RS MUST stop processing the request and interrupt the Ace exchange, and MAY reply with a 4.00 (Bad Request) error message.</t>

<t>If the access token received contains either the clientId or serverId parameters, the server SHOULD stop processing the message, and MAY reply with a 4.00 (Bad Request) error message.</t>

<t><xref target="fig9"/> shows an example of the request sent from the client to the RS, with payload in CBOR diagnostic notation without the tag and value abbreviations.  The access token has been truncated for readability.</t>

<figure anchor="fig9"><artwork><![CDATA[
Header: POST (Code=0.02)
Uri-Host: "rs.example.com"
Uri-Path: "authz-info"
Content-Format: "application/ace+cbor"
Payload:
 {
   "access_token": h'8343a1010aa2044c53 ...
(remainder of access token (CWT) omitted for brevity)',
   "nonce1": h'018a278f7faab55a',
   "ace_client_recipientid" : h'11'
 }
]]></artwork></figure>

<section anchor="the-aceclientrecipientid-parameter" title="The ace_client_recipientid Parameter">

<t>This parameter MUST be sent from the client to the RS, together with
the access token and the nonce, if the ace profile used is coap_oscore_2.  The
parameter is encoded as a byte string for CBOR-based interactions,
and as a string (Base64 encoded binary) for JSON-based interactions.
This parameter is registered in <xref target="iana-oauth"/> and <xref target="iana-oauth-map"/>.</t>

</section>
</section>
<section anchor="rs-to-c" title="RS-to-C: 2.01 (Created)">

<t>Additionally to what specified in Section 4.2 of <xref target="I-D.ietf-ace-oscore-profile"/>, the following applies.</t>

<t>The RS generates its own Recipient Id for the OSCORE Security Context that it is establishing with the client. By generating its own Recipient Id, the RS makes sure that it does not collide with any of its Recipient Identifiers. The RS MUST ensure that id2 is different from the ace_client_recipientid. The RS sends it to the Client together with what is described in Section 4.2 of <xref target="I-D.ietf-ace-oscore-profile"/>: the RS includes the Recipient Id in the 2.01 (Created) response, as a ace_server_recipientid parameter, as registered in <xref target="iana-oauth"/> and <xref target="iana-oauth-map"/>.</t>

<t>When receiving the response including the ace_server_recipientid parameter, the Client MUST set its own Sender Identifier to the value of the ace_server_recipientid and discard any ClientId present in the access token.  If the ace_server_recipientid parameter is not included in the response, the client MUST stop processing the response and interrupt the Ace exchange.</t>

<t><xref target="fig10"/> shows an example of the response sent from the RS to the
client, with payload in CBOR diagnostic notation without the tag and
value abbreviations.</t>

<figure anchor="fig10"><artwork><![CDATA[
Header: Created (Code=2.01)
Content-Format: "application/ace+cbor"
Payload:
 {
   "nonce2": h'25a8991cd700ac01',
   "ace_server_recipientid" : h'22'
 }
]]></artwork></figure>

<section anchor="the-aceserverrecipientid-parameter" title="The ace_server_recipientid Parameter">

<t>This parameter MUST be sent from the RS to the client, together with
the access token and nonce, if the ace profile used is coap_oscore_2.  The
parameter is encoded as a byte string for CBOR-based interactions,
and as a string (Base64 encoded binary) for JSON-based interactions.
This parameter is registered in Section <xref target="iana-oauth"/> and <xref target="iana-oauth-map"/>.</t>

</section>
</section>
<section anchor="oscore-setup" title="OSCORE Setup">

<t>Differently than what defined in Section 4.3 of <xref target="I-D.ietf-ace-oscore-profile"/>, the client and RS do not set the Sender ID and Recipient ID from the parameters received from the AS in Section 3.2.</t>

<t>Instead, the client MUST set the Sender ID from the ace_server_recipientid received in <xref target="rs-to-c"/>, and the Recipient ID from its own generated ace_client_recipientid. Conversely, the server MUST set the Sender ID from the ace_client_recipientid received in <xref target="c-to-rs"/>, and the Recipient ID from its own generated ace_server_recipientid.</t>

</section>
</section>
<section anchor="sec-cons" title="Security Considerations">

<t>TODO</t>

<t>TBD: How do this profile and the v1 OSCORE profile work together? can the AS send a v1 profile + token and the c and RS try to run a v2? how does c react if it tries to run v2 and get reverted to v1? How do the 2 profiles work together?</t>

<!--
Only after the first OSCORE request verified between C and RS that the PoP is confirmed and that the client identity have not been tampered with.

For server authentication the OSCORE response needs to be verified.
-->

</section>
<section anchor="privacy-considerations" title="Privacy Considerations">

<t>TODO</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has the following actions for IANA.</t>

<section anchor="ace-profile-registry" title="ACE Profile Registry">

<t>The following registration is done for the ACE Profile Registry
   following the procedure specified in section 8.8 of
   <xref target="I-D.ietf-ace-oauth-authz"/>:</t>

<t><list style="symbols">
  <t>Name: coap_oscore_2</t>
  <t>Description: Profile for using OSCORE to secure communication between constrained nodes using the Authentication and Authorization for Constrained Environments framework.</t>
  <t>CBOR Value: TBD (value between 1 and 255)</t>
  <t>Reference: [[This specification]]</t>
</list></t>

</section>
<section anchor="iana-oauth" title="OAuth Parameters Registry">

<t>The following registrations are done for the OAuth ParametersRegistry following the procedure specified in section 11.2 of <xref target="RFC6749"/>:</t>

<t>  <?rfc subcompact="yes"?>
  <list style="symbols">
    <t>Parameter name: ace_client_recipientid</t>


    <t>Parameter usage location: client request</t>


    <t>Change Controller: IESG</t>


    <t>Specification Document(s): [[This specification]]</t>

</list>
</t>
<t>  <?rfc subcompact="yes"?>
  <list style="symbols">
    <t>Parameter name: ace_server_recipientid</t>


    <t>Parameter usage location: token response</t>


    <t>Change Controller: IESG</t>


    <t>Specification Document(s): [[This specification]]</t>

</list>
</t>

</section>
<section anchor="iana-oauth-map" title="OAuth Parameters CBOR Mappings Registry">

<t>The following registrations are done for the OAuth Parameters CBOR
   Mappings Registry following the procedure specified in section 8.9 of
   <xref target="I-D.ietf-ace-oauth-authz"/>:</t>

<figure><artwork><![CDATA[
* Name: ace_client_recipientid
* CBOR Key: TBD (range -256 to 255)
* Value Type: byte string
* Reference: \[\[This specification\]\]
]]></artwork></figure>

<t> </t>

<figure><artwork><![CDATA[
* Name: ace_server_recipientid
* CBOR Key: TBD (range -256 to 255)
* Value Type: byte string
* Reference: \[\[This specification\]\]
]]></artwork></figure>

</section>
<section anchor="oscore-security-context-parameters-registry" title="OSCORE Security Context Parameters Registry">

<t>The following registration is done for the ACE Profile Registry
   following the procedure specified in section 9.4 of
   <xref target="I-D.ietf-ace-oscore-profile"/>:</t>

<t>This registry will be populated by the values in <xref target="fig8"/>.
   The specification column for all of these entries will be this
   document.</t>

</section>
</section>
<section numbered="no" anchor="acknowledgments" title="Acknowledgments">

<t>This document was started from comments and discussion with the following individuals: John Mattsson, Jim Schaad, Göran Selander.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&I-D.ietf-ace-oauth-authz;
&I-D.ietf-ace-oscore-profile;
&RFC8613;
&RFC2119;
&RFC8174;
&RFC6749;
&RFC8747;


    </references>

    <references title='Informative References'>

&I-D.ietf-lake-edhoc;


    </references>



  </back>

<!-- ##markdown-source:
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
v/zw7uPZ8Zu49qVsPN7sKPYIgOSPd7drnGFjsYfWlreIL612zanCNIePwjR1
6dIVpkCAU8w+ypIbCvTQy5sEGsR264nIHPMQQtqQD5BVHLp+RJZuqEp8ocpJ
dOoBY4zKOFzBljx4w1boFUoy7pZD1Oj6w3omoDrsV9ulKJy1UhB2aVU56FfF
MoCGEgyldPnfNS2WqjZuq1ZziWymydaxbG9DLCuj4j89oP3/eHaneLY66Oh9
caxZzzOj6ynsPAzt7xKGlhLukcCmOEydXaLQbXRsjVD/5uHpdD0mLaS2N8WT
/UfZ3q3SpBT23gYjJrebltevLPOIBaLWho/qVuTqjR2LDvOip2Z7twUtmxvf
2lUH35b+Vvwq3mp863yiUmnl7T5JLdJ/M7AKdDURkyDNQFPxh9xONZfVCZ+c
wqLiJxbykQhLK42fNv7ABr7CECzP8IkdqW7sta4SBQWDvzaEKjpLjxiByiE8
vAHLJ34VHlTMkKPiEm5ZFfMdyOytmR9o0J5lL2AaPgtB4sC+W2xBrXLWXhBu
eoYYJZrcAFh7DvhroC7bH5l+zieHHm26ZW6ogqRNxU/NtU4uI/bD8OqNxC+U
iZKmDacie8lTAcBRt3ZfQ6jvVkOk+dBOofiKdugBWVLFj2Q7z55mL2QryLSn
yLUXDl60VsGv11bB7e3f2xe5uzvYhEI1XbnUurAEFfjt+pZqMUxp2UWAqkxM
VlQjLlzb2JeZPXW67rtclY37c7aT5D6CpEUqNlC001ZDvrarpcnYy1g1QUOR
eyLt1Rjaf5prp1xQB+XAfTc6LSj3jRDATrUOKhsET6G66qesyoRrqzKhqgD9
bs/Dx5L084M0Zyd/Ui+tZ6pdF2rVT+lULrsqkRiIval2mpbOAtq1CcLhI5gk
U+zLyAx15aUpIydmVfRTUHO5ezFdJMI0b7ag0RYWvcWCR7dalyo3sVbsHQiy
XIlLGrbSu0/tPcUP4/jAHoapQS3V7JpopkIvTOEET+UCvXgvW3uf6AYgyDPW
t67ct0h09jvgEZdZb5Pvzi81ZnxOMOPn4i6v7cSU1ljup0lxVy2rZ0bgpo7Z
GAglCmnbzWpwVftNdrntdhGtoaKUQ0fD2QJ1uMXK2tZlPShNBFY9JYu5qhj2
8qpnFSOf/JN2atzqfRndZqvF9l9yX9d1HajNdvk2uqrtH6b02uzGUKv8uToV
qwQKOYcs3yuhTj2oGpei4PGEUzR0vCFktjmXopqbInJdPa9n3d98aXhbyVCy
uWQonzYPrxtSsVEh/N4SfT869oY+yP21azICO+Ju/2jcH3M+Ojzk6onq+SWD
trYM2ioA6bEEpINiQdL1cL2qWSuJzG4BvTUVm91sntwGxKqdcflk1yUp96lc
wdI7a/NPlZpIdFDXJ7/gZnK9Li13SKeskLKQiucUbM8mjCsPMQJNb4y4rK2D
F7isj6w7ClVw/fB+GeMGEU9uD6gRRBoVjTTLvKEFxcd4BxDGtS72Km00u9tL
UrzjPRCu7LJFcTtcAV36s6GKp7Zv7ApXgKSvDFW0XxKR1aTvEioxG6WNmm/y
lKoleeZHDnhO9ax4AOjZRW4DzYx7Ac+GXYsS7dBwpBvbBCz4YzW6Au+YzOA6
utlOhMXKL0A4FX0g9Vh7yxOf1OVU+/050Kp2S65V8DEbF20jfDMu0kKwLOcW
cKS4th0dabTQbm2FC6qtovGWyXz45khivgwvOJV44eFZ9Af6cnIkLvlZ95Af
HR+3Pb/fanGv1bb87Lq8pJ913U1+tt0qO1plqTfNrbJ3rVCRh3pXIyCmBbSD
d/2/7Vm1wXyAhzVeKlvMHedMW3d0pTCFpF2uyCV3m7tsjShmjejAGX3UDJor
vKlN1Vn5DKizXNL3bA4t57gZbuUFpnC/wpisdVtwYxVqaW8zvrvTsONz3YC1
dZq1Gc73xG5ykTCt8eQWIU9oNOHTLqRW4NMiqTqh8whS19lAJ0TYUAYPmEhU
3dvdXiq8BsSMmD3Cw8ng/y/PBuxVvEJxF4/WUKQs2+WSS9znY6bwd1RRrORL
NfEcX9HPflsCzJ7WLlxBwJ29C9zLvXS/o/POCAp5GHR5GU59xCKJOtUAn1y6
6pAJLH+Ggatq62X7u3wIgBrycyeLpDp0OpZzhYfo5RVzsvhOjVFHG9C4RKXm
aEJDuN6l8DZ+K81QhNU0ws/PVrFzOuTZs1t5+A3OJxlkclz1UuXfILILE6qX
a68tgGr8n73irQltOngAFZ0OEiy5Vxa9Fvceuzx5c7J+s1DePlU1+ha0Vvuy
0OhhA9Ik4bGgejPYtVoWwqNjWXFhTK0YyfHo09rM+WJVbUAT+etkWBBV+Ahx
K0/cOKITN/C1beWcdKwt+4a9obODC+5D3jjLV7MGhih5WIW1l4uOzPGQluJp
sVpTPOvgWTrQ1CrM+LJDcPPjbyW9hGv+E/HKgME8ZvsSu2hC5GkG7qGsYvsG
2Esuw4On3/3y7pebtfNm3v367lfpa+ik2nwpyEgGD4rNHdY9spZZ8oK0yw2b
dh8k7nbbOhUCTzIm2T7LXjz7Lhl7uJEQT1oAnX1euxVp7bsX9gLWk/R2NorD
9MkLfMOQok6UrjbYcg2n8PiCzjQIY8m5QWlXhnnhVB55gKgwgSEiarw8H35v
7g9t/rMzNQP304MB+6VCQr/+Sm+qtSX5/WsNe92X7DDs4h6c/8VhV6opTYjX
gLhBkTYoLUGqL1dc6gpbWe/tgZbreGfLZUxXtZKqR4gH/xC3yiQkJIiGe9hD
w6WNATxHdoPJYh8LHKu7O9oKECWT4ijTt65NfwV9Nm4uZXcqrNtf4ruOm90N
GlBOmyjyTDCRYDI+DBEFzOP5IrQPhiFPkO+JOMIoQg2uwCa1MUBurIS2ZKid
4uKmRF66B8SG2IIGCYQzT7wPUbwKhT8hB4VBpzy3VPjPIaSVGzZsZLHCg4kz
TsCNYC26UPJtOpmxkDvx8xMiDS+DyA+Wgb/gYTpgP8TTCCsvMjw/v85+CGZs
6E05RhLf//d/gVKBwEOOeFwdfD4OF+Ox8z8rDXRQXWEAAA==

-->

</rfc>

