<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-wendt-acme-authority-token-jwtclaimcon-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="ACME JWTClaimConstraints Auth Token">JWTClaimConstraints profile of ACME Authority Token</title>

    <author initials="C." surname="Wendt" fullname="Chris Wendt">
      <organization>Somos Inc.</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>chris@appliedbits.com</email>
      </address>
    </author>
    <author initials="D." surname="Hancock" fullname="David Hancock">
      <organization>Somos Inc.</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>davidhancock.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2025" month="July" day="07"/>

    <area>sec</area>
    
    <keyword>acme, STIR</keyword>

    <abstract>


<?line 46?>

<t>This document defines an authority token profile for handling the validation of JWTClaimConstraints and EnhancedJWTClaimConstraints. This profile follows the model established in Authority Token for the validation of TNAuthList but is specifically tailored for the JWTClaimConstraints certificate extensions. The profile enables validation and challenge processes necessary to support certificates containing both TNAuthList and JWTClaimConstraints, particularly in the context of Secure Telephone Identity (STI).</t>



    </abstract>



  </front>

  <middle>


<?line 50?>

<section anchor="introduction"><name>Introduction</name>

<t>The validation of JWTClaimConstraints as part of an STI certificate defined in <xref target="RFC8226"/> is critical for ensuring the integrity and scope of claims used in PASSporTs. This document specifies an authority token profile for validating JWTClaimConstraints, modeled after the authority token framework established in <xref target="RFC9447"/> and the TNAuthList validation defined in <xref target="RFC9448"/>. This profile facilitates proper delegation and authorization for entities requesting certificates under ACME <xref target="RFC8555"/> and similar frameworks.</t>

<t>This Authority Token profile specifically addresses the inclusions of the STI certificate extensions JWTClaimConstraints, as defined in <xref target="RFC8226"/>, and EnhancedJWTClaimConstraints, as defined in <xref target="RFC9118"/>. The STI certificate credentials are used to sign PASSporTs <xref target="RFC8225"/>, which can be carried in using protocols such as SIP <xref target="RFC8224"/>. This document defines the use of the JWTClaimConstraints Authority Token in the ACME challenge to prove an authoritative or trusted use of the contents of the JWTClaimConstraints based on the issuer of the token. The Certification Authority (CA) issuing the STI Certificate can be informed of the proper use and contents of the JWTClaimConstraints extension based on the STI eco-system policies, best practices, or authoritative information which is out of scope of this document and will be defined by the STI eco-system.</t>

<t>This document also discusses the ability for a telephone authority to authorize the creation of CA types of certificates for delegation as defined in <xref target="RFC9060"/>.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

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

</section>
<section anchor="acme-new-order-identifiers-for-jwtclaimconstraints"><name>ACME new-order Identifiers for JWTClaimConstraints</name>

<t>In <xref target="RFC8555"/>, Section 7 defines the procedure that an ACME client uses to order a new certificate from a Certification Authority (CA). The new-order request contains an "identifiers" field that specifies the identifier objects the order corresponds to.  This draft defines a new type of identifier object called JWTClaimConstraints. A JWTClaimConstraints identifier contains the Token Claim Constraints information to be populated in the JWTClaimConstraints or EnhancedJWTClaimConstraints of the new certificate. For the JWTClaimConstraints identifier, the new-order request includes a type set to the string "JWTClaimConstraints". The value of the JWTClaimConstraints identifier MUST be set to the details of the JWTClaimConstraints requested.</t>

<t>The format of the string that represents the JWTClaimConstraints MUST be constructed using base64url encoding, as per <xref target="RFC8555"/> base64url encoding described in Section 5 of <xref target="RFC4648"/> according to the profile specified in JSON Web Signature in Section 2 of <xref target="RFC7515"/>. The base64url encoding MUST NOT include any padding characters and the JWTClaimConstraints ASN.1 object MUST be encoded using DER encoding rules.</t>

<t>An example of an ACME order object "identifiers" field containing a JWTClaimConstraints certificate would look as follows,</t>

<figure><artwork><![CDATA[
 "identifiers": [{"type":"JWTClaimConstraints",
   "value":"F83n2a...avn27DN3"}]
]]></artwork></figure>

<t>where the "value" object string represents the arbitrary length base64url encoded string.</t>

<t>A full new-order request would look as follows,</t>

<figure><artwork><![CDATA[
POST /acme/new-order HTTP/1.1
Host: example.com
Content-Type: application/jose+json

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "5XJ1L3lEkMG7tR6pA00clA",
    "url": "https://example.com/acme/new-order"
  }),
  "payload": base64url({
    "identifiers": [{"type":"JWTClaimConstraints",
      "value":"F83n...n27DN3"}],
    "notBefore": "2025-01-01T00:00:00Z",
    "notAfter": "2025-01-08T00:00:00Z"
  }),
  "signature": "H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g"
}
]]></artwork></figure>

<t>On receiving a valid new-order request, the ACME server creates an authorization object, <xref target="RFC8555"/> Section 7.1.4, containing the challenge that the ACME client must satisfy to demonstrate authority for the identifiers specified by the new order (in this case, the JWTClaimConstraints identifier). The CA adds the authorization object URL to the "authorizations" field of the order object, and returns the order object to the ACME client in the body of a 201 (Created) response.</t>

<figure><artwork><![CDATA[
HTTP/1.1 201 Created
Content-Type: application/json
Replay-Nonce: MYAuvOpaoIiywTezizk5vw
Location: https://example.com/acme/order/1234

{
  "status": "pending",
  "expires": "2025-01-08T00:00:00Z",

  "notBefore": "2025-01-01T00:00:00Z",
  "notAfter": "2025-01-08T00:00:00Z",
  "identifiers":[{"type":"JWTClaimConstraints",
                 "value":"F83n2a...avn27DN3"}],

  "authorizations": [
   "https://example.com/acme/authz/1234"
  ],
  "finalize": "https://example.com/acme/order/1234/finalize"
}
]]></artwork></figure>

</section>
<section anchor="jwtclaimconstraints-authorization"><name>JWTClaimConstraints Authorization</name>

<t>On receiving the new-order response, the ACME client queries the referenced authorization object to obtain the challenges for the identifier contained in the new-order request as shown in the following example request and response.</t>

<figure><artwork><![CDATA[
POST /acme/authz/1234 HTTP/1.1
    Host: example.com
    Content-Type: application/jose+json

    {
      "protected": base64url({
        "alg": "ES256",
        "kid": " https://example.com/acme/acct/evOfKhNU60wg",
        "nonce": "uQpSjlRb4vQVCjVYAyyUWg",
        "url": "https://example.com/acme/authz/1234"
      }),
      "payload": "",
      "signature": "nuSDISbWG8mMgE7H...QyVUL68yzf3Zawps"
    }
]]></artwork></figure>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Link: <https://example.com/acme/some-directory>;rel="index"

{
  "status": "pending",
  "expires": "2025-01-08T00:00:00Z",

  "identifier": {
    "type:"JWTClaimConstraints",
    "value":"F83n2a...avn27DN3"
  },

  "challenges": [
    {
      "type": "tkauth-01",
      "tkauth-type": "atc",
      "token-authority": "https://authority.example.org",
      "url": "https://boulder.example.com/acme/chall/prV_B7yEyA4",
      "token": "IlirfxKKXAsHtmzK29Pj8A"
    }
  ]
}
]]></artwork></figure>

<t>When processing a certificate order containing an identifier of type "JWTClaimConstraints", a CA uses the Authority Token challenge type of "tkauth-01" with a "tkauth-type" of "atc" in <xref target="RFC9447"/> to verify that the requesting ACME client has authenticated and authorized control over the requested resources represented by the "JWTClaimConstraints" value.</t>

<t>The challenge "token-authority" parameter is optional and is only used in cases where the VoIP telephone network requires the CA to identify the Token Authority. If a "token-authority" parameter is present, then the ACME client MAY use the "token-authority" value to identify the URL representing the Token Authority that will provide the JWTClaimConstraints Authority Token response to the challenge. If the "token-authority" parameter is not present, then the ACME client MUST identify the Token Authority based on locally configured information or local policies.</t>

<t>The ACME client responds to the challenge by posting the JWTClaimConstraints Authority Token to the challenge URL identified in the returned ACME authorization object, an example of which follows.</t>

<figure><artwork><![CDATA[
POST /acme/chall/prV_B7yEyA4 HTTP/1.1
Host: boulder.example.com
Content-Type: application/jose+json

{
  "protected": base64url({
  "alg": "ES256",
  "kid": "https://example.com/acme/acct/evOfKhNU60wg",
  "nonce": "Q_s3MWoqT05TrdkM2MTDcw",
  "url": "https://boulder.example.com/acme/authz/asdf/0"
  }),
  "payload": base64url({
  "tkauth": "DGyRejmCefe7v4N...vb29HhjjLPSggwiE"
  }),
  "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ"
}
]]></artwork></figure>

<t>The "tkauth" field in the challenge object is defined in <xref target="RFC9448"></xref>. It is specific to the tkauth-01 challenge type, and when responding to a challenge for a JWTClaimConstraints identifier, that should contain the JWTClaimConstraints Authority Token defined in the next section.</t>

</section>
<section anchor="jwtclaimconstraints-authority-token"><name>JWTClaimConstraints Authority Token</name>

<t>The JWTClaimConstraints Authority Token is a profile instance of the ACME Authority Token defined in <xref target="RFC9447"/>.</t>

<t>The JWTClaimConstraints Authority Token Protected header MUST comply with the Authority Token Protected header as defined in <xref target="RFC9447"/>.</t>

<section anchor="jwtclaimconstraints-authority-token-payload"><name>JWTClaimConstraints Authority Token Payload</name>

<t>The JWTClaimConstraints Authority Token Payload MUST include the mandatory claims "exp", "jti", and "atc", and MAY include the optional claims defined for the Authority Token detailed in the next subsections.</t>

<section anchor="iss-claim"><name>"iss" claim</name>

<t>The "iss" claim is an optional claim defined in <xref target="RFC7519"/> Section 4.1.1.  It can be used as a URL identifying the Token Authority that issued the JWTClaimConstraints Authority Token beyond the "x5u" or other Header claims that identify the location of the certificate or certificate chain of the Token Authority used to validate the JWTClaimConstraints Authority Token.</t>

</section>
<section anchor="exp-claim"><name>"exp" claim</name>

<t>The "exp" claim, defined in <xref target="RFC7519"/> Section 4.1.4, MUST be included and contains the DateTime value of the ending date and time that the JWTClaimConstraints Authority Token expires.</t>

</section>
<section anchor="jti-claim"><name>"jti" claim</name>

<t>The "jti" claim, defined in <xref target="RFC7519"/> Section 4.1.7, MUST be included and contains a unique identifier for this JWTClaimConstraints Authority Token transaction.</t>

</section>
<section anchor="atc-claim"><name>"atc" claim</name>

<t>The "atc" claim MUST be included and is defined in <xref target="RFC9447"/>.  It contains a JSON object with the following elements:</t>

<t><list style="symbols">
  <t>a "tktype" key with a string value equal to "JWTClaimConstraints" to represent a JWTClaimConstraints profile of the authority token <xref target="RFC9447"/> defined by this document. "tktype" is a required key and MUST be included.</t>
  <t>a "tkvalue" key with a string value equal to the base64url encoding of the JWTClaimConstraints or EnhancedJWTClaimConstaints certificate extension ASN.1 object using DER encoding rules. "tkvalue" is a required key and MUST be included.</t>
  <t>a "ca" key with a boolean value set to false (since per <xref target="RFC8226"/> the JWTClaimConstraints extension is applicable only to end-entity certificates). "ca" is an optional key, if not included the "ca" value is considered false by default.</t>
  <t>a "fingerprint" key is constructed as defined in <xref target="RFC8555"/> Section 8.1 corresponding to the computation of the "Thumbprint" step using the ACME account key credentials. "fingerprint" is a required key and MUST be included.</t>
</list></t>

<t>An example of the JWTClaimConstraints Authority Token is as follows:</t>

<figure><artwork><![CDATA[
{
  "protected": base64url({
    "typ":"JWT",
    "alg":"ES256",
    "x5u":"https://authority.example.org/cert"
  }),
  "payload": base64url({
    "iss":"https://authority.example.org",
    "exp":1640995200,
    "jti":"id6098364921",
    "atc":{"tktype":"JWTClaimConstraints",
      "tkvalue":"F83n2a...avn27DN3",
      "ca":false,
      "fingerprint":"SHA256 56:3E:CF:AE:83:CA:4D:15:B0:29:FF:1B:71:
       D3:BA:B9:19:81:F8:50:9B:DF:4A:D4:39:72:E2:B1:F0:B9:38:E3"}
  }),
  "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ"
}
]]></artwork></figure>

</section>
</section>
<section anchor="acquiring-the-token-from-the-token-authority"><name>Acquiring the token from the Token Authority</name>

<t>Following <xref target="RFC9447"/> Section 5, the authority token should be acquired using a RESTful HTTP POST transaction as follows:</t>

<figure><artwork><![CDATA[
  POST /at/account/:id/token HTTP/1.1
  Host: authority.example.org
  Content-Type: application/json
]]></artwork></figure>

<t>The request will pass the account id as a string in the request parameter "id".  This string will be managed as an identifier specific to the Token Authority's relationship with the entity that is creating and signing a PASSporT <xref target="RFC8225"/> and making the Certificate Signing Request via ACME. There is assumed to also be a corresponding authentication procedure that can be verified for the success of this transaction. For example, an HTTP Authorization header field containing valid authorization credentials as defined in <xref target="RFC7231"/> Section 14.8.</t>

<t>The body of the POST request MUST contain a JSON object with key value pairs corresponding to values that are requested as the content of the claims in the issued token. As an example, the body SHOULD contain a JSON object as follows:</t>

<figure><artwork><![CDATA[
 {
   "atc": {
     "tktype":"JWTClaimConstraints",
     "tkvalue":"F83n2a...avn27DN3",
     "ca":false,
     "fingerprint":"SHA256 56:3E:CF:AE:83:CA:4D:15:B0:29:FF:1B:71:D3
       :BA:B9:19:81:F8:50:9B:DF:4A:D4:39:72:E2:B1:F0:B9:38:E3"
   }
 }
]]></artwork></figure>

<t>The response to the POST request if successful returns a 200 OK with a JSON body that contains, at a minimum, the JWTClaimConstraints Authority Token as a JSON object with a key of "token" and the base64url encoded string representing the atc token. JSON is easily extensible, so users of this specification may want to pass other pieces of information relevant to a specific application.</t>

<t>An example successful response would be as follows:</t>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{"token": "DGyRejmCefe7v4N...vb29HhjjLPSggwiE"}
]]></artwork></figure>

<t>If the request is not successful, the response should indicate the error condition.  Specifically, for the case that the authorization credentials are invalid or if the Account ID provided does not exist, the response code MUST be 403 - Forbidden. Other 4xx and 5xx responses MUST follow standard <xref target="RFC7231"/> HTTP error condition conventions.</t>

</section>
<section anchor="token-authority-responsibilities"><name>Token Authority Responsibilities</name>

<t>When creating the JWTClaimConstraints Authority Token, the Token Authority MUST validate that the information contained in the ASN.1 JWTClaimConstraints accurately represents the corresponding JWTClaimConstraint resources the requesting party is authorized to represent based on their pre-established and verified secure relationship between the Token Authority and the requesting party. Note that the fingerprint in the token request is not meant to be verified by the Token Authority, but rather is meant to be signed as part of the token so that the party that requests the token can, as part of the challenge response, allow the ACME server to validate the token requested and used came from the same party that controls the ACME client.</t>

</section>
<section anchor="scope-of-the-jwtclaimconstraints"><name>Scope of the JWTClaimConstraints</name>

<t>Because this specification specifically involves the JWTClaimConstraints and EnhancedJWTClaimConstraints defined in <xref target="RFC8226"/> and <xref target="RFC9118"/> which involves the required or disallowed different claim types or claim values, the client may also request an Authority Token with some subset of its own authority as the JWTClaimConstraints provided in the "tkvalue" element in the "atc" JSON object. JWTClaimConstraints can be constructed to define a limited scope of claims and claim values the client has authority over.</t>

<t>As recommended in <xref target="RFC9447"/> security considerations, an Authority Token can either have a scope that attests all of the resources which a client is eligible to receive certificates for, or potentially a more limited scope that is intended to capture only those resources for which a client will receive a certificate from a particular certification authority.  Any certification authority that sees an Authority Token can learn information about the resources a client can claim.  In cases where this incurs a privacy risk, Authority Token scopes should be limited to only the resources that will be attested by the requested ACME certificate.</t>

</section>
<section anchor="acme-challenges-requiring-multiple-authority-tokens"><name>ACME Challenges requiring multiple Authority Tokens</name>

<t>The ACME new-order request may include multiple identifiers, each of which is authorized separately. With the introduction of this specification, for STIR certificates <xref target="RFC8226"/> two identifier types are authorized using Authority Tokens:</t>

<t><list style="symbols">
  <t>The JWTClaimConstraints identifier defined in this document, and</t>
  <t>The TNAuthList identifier defined in <xref target="RFC9448"/>.</t>
</list></t>

<t>Other Authority Token types may be introduced in future Authority Token profile specificiations with similar requirements.</t>

<t>This section describes scenarios where a new-order request contains both of these identifier types. In such cases, the CA requires the ACME client to provide both a JWTClaimConstraints Authority Token and a TNAuthList Authority Token as part of the challenge response.</t>

<t>The TNAuthList Authority Token authorizes the token holder to obtain certificates containing a TNAuthList extension whose scope is less than or equal to the scope of the TNAuthList identifier in the token. The issued certificate then bestows on the holder the authority to sign PASSporTs containing an "orig" claim that is within the scope of the certificate's TNAuthList extension.</t>

<t>As described in section 5, the JWTClaimConstraints Authority Token authorizes the token holder to obtain a certificate containing a JWTClaimConstraints or EnhancedJWTClaimConstraints extension, provided that the extension is within the scope of the JWTClaimConstraints identifier in the token. These two certificate extensions constrain the claims and claim values that may appear in PASSporTs signed using the certificate's credentials. In particular, claim-constraints extensions can restrict the values of the PASSporT "orig" claim, which is also governed by the TNAuthList Authority Token. Accordingly, there is an inherent interaction between these two types of Authority Tokens.</t>

<section anchor="examples-of-acme-challenges-requiring-two-authority-tokens"><name>Examples of ACME Challenges requiring two Authority Tokens</name>

<t>In the examples that follow, the requesting user is authorized to use a set of telephone numbers (TNs) and may, depending on the specific case, be authorized to assert additional claims and claim values such as Rich Call Data (RCD) items within signed PASSporTs. To support these capabilities, the user obtains both a TNAuthList Authority Token and a JWTClaimConstraints Authority Token from the appropriate Token Authority. These two tokens may be issued by the same Token Authority or by distinct entities.</t>

<t>The following sub-sections describe three use-cases that illustrate how the two types of Authority Tokens can be used to form the ACME challenge response to the issuing CA. In all three cases, the TNAuthList Authority Token specifies the TNs, or a subset thereof, for which the user is authorized. The content of the JWTClaimConstraints Authority Token varies per use case based on the user's authority to assert extended PASSporT claims in addition to the authorization provided by the TNAuthList Authority Token.</t>

<section anchor="no-extended-claims-authorized"><name>No Extended Claims Authorized</name>

<t>In the first case, the requesting user is authorized to use a set of TN(s), but no other information conveyed in extended PASSporT claims. Accordingly, the JWTClaimConstraints Authority Token contains an EnhancedJWTClaimConstraints extension that prohibits all claims defined by PASSporT extensions, as shown in the following example:</t>

<figure><artwork><![CDATA[
SEQUENCE {
  mustExclude [2] {
    SEQUENCE {
      IA5String 'attest'
      IA5String 'origid'
      IA5String 'div'
      IA5String 'rph'
      IA5String 'sph'
      IA5String 'rcd'
      IA5String 'rcdi'
      IA5String 'crn'
      }
    }
  }
]]></artwork></figure>

<t>As described in Section 5.5.2, the CA requires two Authority Tokens in the ACME challenge response because the ACME client included both a TNAuthList identifier and a JWTClaimConstraints identifier in the new-order request.</t>

<t>A simpler alternative for users not authorized to include extended claims in PASSporTs is to submit a new-order request containing only a TNAuthList identifier. In this case, the absence of a JWTClaimConstraints identifier could trigger local policy in the CA to include the above EnhancedJWTClaimConstraints extension in the issued certificate.</t>

</section>
<section anchor="extended-claims-authorized-same-claims-for-all-tns"><name>Extended Claims Authorized (same claims for all TNs)</name>

<t>In the second case, the user is authorized to assert extended PASSporT claim information, and the additional claim information applies to all TN(s) the user is authorized to use. For example, the user could be authorized to use a single set of rich call data elements such as a company name and call reason for all authorized TNs. In this case, the corresponding JWTClaimConstraints Authority Token contains an EnhancedJWTClaimConstraints extension that permits RCD claim values associated with the authorized name and call reason, and applies these constraints uniformly across the user's authorized TNs, as shown in the following example:</t>

<figure><artwork><![CDATA[
SEQUENCE {
  permittedValues [1] {
    SEQUENCE {
      SEQUENCE {
        IA5String 'rcd'
        SEQUENCE {
          UTF8String '"nam": "James Bond"'
          }
        IA5String 'crn'
        SEQUENCE {
          UTF8String '"For your ears only"'
          }
        }
      }
    }
  mustExclude [2] {
    SEQUENCE {
      IA5String 'attest'
      IA5String 'origid'
      IA5String 'div'
      IA5String 'rph'
      IA5String 'sph'
      IA5String 'rcd'
      IA5String 'rcdi'
      IA5String 'crn'
      }
    }
  }
]]></artwork></figure>

</section>
<section anchor="extended-claims-authorized-different-claims-per-subset-of-tns"><name>Extended Claims Authorized (different claims per subset of TNs)</name>

<t>In the third case, the user is permitted to assert different sets of extended PASSporT claims for distinct subsets of the user's authorized TNs. For example, the user may be authorized to use a calling name and call reason for one subset of authorized TN(s), and a different calling name and call reason for a different subset of authorized TN(s). In this example, the JWTClaimConstraints Authority Token includes permitted values for the RCD claims that are associated with a specific set of TN(s). Additionally, to ensure that the correct set of RCD claims is used with the correct set of TNs, the token includes an EnhancedJWTClaimConstraints permitted value(s) entry for the "orig" claim which identifies the relevant TN(s) to which the RCD claim values apply, as shown in the following example:</t>

<figure><artwork><![CDATA[
SEQUENCE {
  permittedValues [1] {
    SEQUENCE {
      SEQUENCE {
        IA5String 'rcd'
        SEQUENCE {
          UTF8String '"nam": "James Bond"'
          }
        IA5String 'crn'
        SEQUENCE {
          UTF8String '"For your ears only"'
          }
        IA5String 'orig'
        SEQUENCE {
          UTF8String '"12025551000"'
          UTF8String '"12025551001"'
          }
        }
      }
    }
  mustExclude [2] {
    SEQUENCE {
      IA5String 'attest'
      IA5String 'origid'
      IA5String 'div'
      IA5String 'rph'
      IA5String 'sph'
      IA5String 'rcdi'
      }
    }
  }
]]></artwork></figure>

<t>In this case, the CA will verify that the TNAuthList extension of the requested certificate is within the scope of both tokens provided in the ACME challenge response.</t>

</section>
</section>
<section anchor="acme-procedures-when-challenge-requires-two-authority-tokens"><name>ACME Procedures when Challenge requires two Authority Tokens</name>

<t>Sections 3 and 4 describe the ACME procedures for issuing a certificate based on receiving a new-order request with an "identifier" field containing a single JWTClaimConstraints identifier. This section describes how these procedures are modified to support the case where the new-order request contains both a TNAuthList and JWTClaimConstraints identifier.</t>

<t>First, the "identifiers" field in the new-order request is as shown in section 3 with the exception that a TNAuthList identifier is added to the new-order "identifiers" field, as follows:</t>

<figure><artwork><![CDATA[
     "identifiers": [
       {"type":"TNAuthList",
        "value":"KHn6xf...jw4A1vgh"}
       {"type":"JWTClaimConstraints",
        "value":"F83n2a...avn27DN3"}]
]]></artwork></figure>

<t>The CA includes two "authorizations" URLs in the 201 (Created) response to the new-order request, as follows:</t>

<figure><artwork><![CDATA[
     "authorizations": [
        "https://sti-ca.com/acme/authz/1234",
        "https://sti-ca.com/acme/authz/5678"]
]]></artwork></figure>

<t>The ACME client then queries each "authorizations" URL as shown in section 4. The CA returns the Authority Token challenge for each identifier. The ACME client responds to each challenge by providing an Authority Token of the appropriate type.</t>

</section>
</section>
</section>
<section anchor="validating-the-jwtclaimconstraints-authority-token"><name>Validating the JWTClaimConstraints Authority Token</name>

<t>Upon receiving a response to the challenge, the ACME server MUST perform the following steps to determine the validity of the response.</t>

<t><list style="symbols">
  <t>Verify that the value of the "atc" claim is a well-formed JSON object containing the mandatory key values.</t>
  <t>If there is an "x5u" parameter verify the "x5u" parameter is a HTTPS URL with a reference to a certificate representing the trusted issuer of authority tokens for the eco-system.</t>
  <t>If there is an "x5c" parameter verify the certificate array contains a certificate representing the trusted issuer of authority tokens for the eco-system.</t>
  <t>Verify the JWTClaimConstraints Authority Token signature using the public key of the certificate referenced by the token's "x5u" or "x5c" parameter.</t>
  <t>Verify that "atc" claim contains a "tktype" identifier with the value "JWTClaimConstraints".</t>
  <t>Verify that the "atc" claim "tkvalue" identifier contains the equivalent base64url encoded JWTClaimConstraints or EnhancedJWTClaimConstraints certificate extension string value as the Identifier specified in the original challenge.</t>
  <t>Verify that the remaining claims are valid (e.g., verify that token has not expired)</t>
  <t>Verify that the "atc" claim "fingerprint" is valid and matches the account key of the client making the request</t>
  <t>Verify that the "atc" claim "ca" identifier boolean corresponds to the CA boolean in the Basic Constraints extension in the CSR for either CA certificate or end-entity certificate</t>
</list></t>

<t>If all steps in the token validation process pass, then the ACME server MUST set the challenge object "status" to "valid". If any step of the validation process fails, the "status" in the challenge object MUST be set to "invalid".</t>

</section>
<section anchor="using-acme-issued-certificates-with-json-web-signature"><name>Using ACME-issued Certificates with JSON Web Signature</name>

<t>JSON Web Signature (JWS, <xref target="RFC7515"/>) objects can include an "x5u" header parameter to refer to a certificate that is used to validate the JWS signature.  For example, the STIR PASSporT framework <xref target="RFC8225"/> uses "x5u" to indicate the STIR certificate used to validate the PASSporT JWS object.  The URLs used in "x5u" are expected to provide the required certificate in response to a GET request, not a POST-as-GET as required for the "certificate" URL in the ACME order object. Thus the current mechanism generally requires the ACME client to download the certificate and host it on a public URL to make it accessible to relying parties.  This section defines an optional mechanism for the Certificate Authority (CA) to host the certificate directly and provide a URL that the ACME client owner can directly reference in the "x5u" of their signed PASSporTs.</t>

<t>As described in Section 7.4 of <xref target="RFC8555"/> when the certificate is ready for making a finalize request, the server will return a 200 (OK) with the updated order object.  In this response, an ACME Server can add a newly defined field called "x5u" that can pass this URL to the ACME client for usage in generated PASSporTs as a publicly available URL for PASSporT validation.</t>

<dl>
  <dt>x5u (optional, string):</dt>
  <dd>
    <t>A URL that can be used to reference the certificate in the "x5u" parameter of a JWS object <xref target="RFC7515"/></t>
  </dd>
</dl>

<t>The publishing of the certificates at the new "x5u" URL should follow the GET request requirement as mentioned above and should be consistent with the timely publication according to the durations of the certificate lifecycle.</t>

<t>The following is an example of the use of "x5u" in the response when the certificate status is "valid".</t>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Replay-Nonce: CGf81JWBsq8QyIgPCi9Q9X
Link: <https://example.com/acme/directory>;rel="index"
Location: https://example.com/acme/order/TOlocE8rfgo

{
  "status": "valid",
  "expires": "2016-01-20T14:09:07.99Z",

  "notBefore": "2016-01-01T00:00:00Z",
  "notAfter": "2016-01-08T00:00:00Z",

  "identifiers": [
    "type":"JWTClaimConstraints",
    "value":"F83n2a...avn27DN3"
  ],

  "authorizations": ["https://sti-ca.com/acme/authz/1234"],

  "finalize": "https://example.com/acme/order/TOlocE8rfgo/finalize",

  "certificate": "https://example.com/acme/cert/mAt3xBGaobw",

  "x5u": "https://example.com/cert-repo/giJI53km23.pem"
}
]]></artwork></figure>

</section>
<section anchor="security_considerations"><name>Security Considerations</name>

<t>The token represented by this document has the credentials to represent PASSporT claims and claim values. The creation, transport, and any storage of this token MUST follow the strictest of security best practices beyond the recommendations of the use of encrypted transport protocols in this document to protect it from getting in the hands of bad actors with illegitimate intent to impersonate telephone numbers.</t>

<t>This document inherits the security properties of <xref target="RFC9447"/>. Implementations should follow the best practices identified in <xref target="RFC8725"/>.</t>

<t>This document only specifies SHA256 for the fingerprint hash. However, the syntax of the fingerprint object would permit other algorithms if, due to concerns about algorithmic agility, a more robust algorithm were required at a future time.  Future specifications can define new algorithms for the fingerprint object as needed.</t>

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

<t>This document requests the addition of a new identifier object type to the "ACME Identifier Types" registry defined in Section 9.7.7 of <xref target="RFC8555"/>.</t>

<figure><artwork><![CDATA[
+---------------------+-----------+
|        Label        | Reference |
+---------------------+-----------+
| JWTClaimConstraints |  RFCThis  |
+---------------------+-----------+
]]></artwork></figure>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>We would like to thank ACME and STIR working groups for valuable contributions to the authority token framework used in this document.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>
<reference anchor="RFC7231">
  <front>
    <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems. This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7231"/>
  <seriesInfo name="DOI" value="10.17487/RFC7231"/>
</reference>
<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>
<reference anchor="RFC7519">
  <front>
    <title>JSON Web Token (JWT)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7519"/>
  <seriesInfo name="DOI" value="10.17487/RFC7519"/>
</reference>
<reference anchor="RFC8226">
  <front>
    <title>Secure Telephone Identity Credentials: Certificates</title>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <author fullname="S. Turner" initials="S." surname="Turner"/>
    <date month="February" year="2018"/>
    <abstract>
      <t>In order to prevent the impersonation of telephone numbers on the Internet, some kind of credential system needs to exist that cryptographically asserts authority over telephone numbers. This document describes the use of certificates in establishing authority over telephone numbers, as a component of a broader architecture for managing telephone numbers as identities in protocols like SIP.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8226"/>
  <seriesInfo name="DOI" value="10.17487/RFC8226"/>
</reference>
<reference anchor="RFC8555">
  <front>
    <title>Automatic Certificate Management Environment (ACME)</title>
    <author fullname="R. Barnes" initials="R." surname="Barnes"/>
    <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
    <author fullname="D. McCarney" initials="D." surname="McCarney"/>
    <author fullname="J. Kasten" initials="J." surname="Kasten"/>
    <date month="March" year="2019"/>
    <abstract>
      <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8555"/>
  <seriesInfo name="DOI" value="10.17487/RFC8555"/>
</reference>
<reference anchor="RFC8725">
  <front>
    <title>JSON Web Token Best Current Practices</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="D. Hardt" initials="D." surname="Hardt"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="225"/>
  <seriesInfo name="RFC" value="8725"/>
  <seriesInfo name="DOI" value="10.17487/RFC8725"/>
</reference>
<reference anchor="RFC9060">
  <front>
    <title>Secure Telephone Identity Revisited (STIR) Certificate Delegation</title>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <date month="September" year="2021"/>
    <abstract>
      <t>The Secure Telephone Identity Revisited (STIR) certificate profile provides a way to attest authority over telephone numbers and related identifiers for the purpose of preventing telephone number spoofing. This specification details how that authority can be delegated from a parent certificate to a subordinate certificate. This supports a number of use cases, including those where service providers grant credentials to enterprises or other customers capable of signing calls with STIR.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9060"/>
  <seriesInfo name="DOI" value="10.17487/RFC9060"/>
</reference>
<reference anchor="RFC9118">
  <front>
    <title>Enhanced JSON Web Token (JWT) Claim Constraints for Secure Telephone Identity Revisited (STIR) Certificates</title>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <date month="August" year="2021"/>
    <abstract>
      <t>RFC 8226 specifies the use of certificates for Secure Telephone Identity Credentials; these certificates are often called "Secure Telephone Identity Revisited (STIR) Certificates". RFC 8226 provides a certificate extension to constrain the JSON Web Token (JWT) claims that can be included in the Personal Assertion Token (PASSporT), as defined in RFC 8225. If the PASSporT signer includes a JWT claim outside the constraint boundaries, then the PASSporT recipient will reject the entire PASSporT. This document updates RFC 8226; it provides all of the capabilities available in the original certificate extension as well as an additional way to constrain the allowable JWT claims. The enhanced extension can also provide a list of claims that are not allowed to be included in the PASSporT.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9118"/>
  <seriesInfo name="DOI" value="10.17487/RFC9118"/>
</reference>
<reference anchor="RFC9447">
  <front>
    <title>Automated Certificate Management Environment (ACME) Challenges Using an Authority Token</title>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <author fullname="M. Barnes" initials="M." surname="Barnes"/>
    <author fullname="D. Hancock" initials="D." surname="Hancock"/>
    <author fullname="C. Wendt" initials="C." surname="Wendt"/>
    <date month="September" year="2023"/>
    <abstract>
      <t>Some proposed extensions to the Automated Certificate Management Environment (ACME) rely on proving eligibility for certificates through consulting an external authority that issues a token according to a particular policy. This document specifies a generic Authority Token Challenge for ACME that supports subtype claims for different identifiers or namespaces that can be defined separately for specific applications.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9447"/>
  <seriesInfo name="DOI" value="10.17487/RFC9447"/>
</reference>
<reference anchor="RFC9448">
  <front>
    <title>TNAuthList Profile of Automated Certificate Management Environment (ACME) Authority Token</title>
    <author fullname="C. Wendt" initials="C." surname="Wendt"/>
    <author fullname="D. Hancock" initials="D." surname="Hancock"/>
    <author fullname="M. Barnes" initials="M." surname="Barnes"/>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <date month="September" year="2023"/>
    <abstract>
      <t>This document defines a profile of the Automated Certificate Management Environment (ACME) Authority Token for the automated and authorized creation of certificates for Voice over IP (VoIP) telephone providers to support Secure Telephone Identity (STI) using the TNAuthList defined by STI certificates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9448"/>
  <seriesInfo name="DOI" value="10.17487/RFC9448"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8224">
  <front>
    <title>Authenticated Identity Management in the Session Initiation Protocol (SIP)</title>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <author fullname="C. Jennings" initials="C." surname="Jennings"/>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <author fullname="C. Wendt" initials="C." surname="Wendt"/>
    <date month="February" year="2018"/>
    <abstract>
      <t>The baseline security mechanisms in the Session Initiation Protocol (SIP) are inadequate for cryptographically assuring the identity of the end users that originate SIP requests, especially in an interdomain context. This document defines a mechanism for securely identifying originators of SIP requests. It does so by defining a SIP header field for conveying a signature used for validating the identity and for conveying a reference to the credentials of the signer.</t>
      <t>This document obsoletes RFC 4474.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8224"/>
  <seriesInfo name="DOI" value="10.17487/RFC8224"/>
</reference>
<reference anchor="RFC8225">
  <front>
    <title>PASSporT: Personal Assertion Token</title>
    <author fullname="C. Wendt" initials="C." surname="Wendt"/>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <date month="February" year="2018"/>
    <abstract>
      <t>This document defines a method for creating and validating a token that cryptographically verifies an originating identity or, more generally, a URI or telephone number representing the originator of personal communications. The Personal Assertion Token, PASSporT, is cryptographically signed to protect the integrity of the identity of the originator and to verify the assertion of the identity information at the destination. The cryptographic signature is defined with the intention that it can confidently verify the originating persona even when the signature is sent to the destination party over an insecure channel. PASSporT is particularly useful for many personal-communications applications over IP networks and other multi-hop interconnection scenarios where the originating and destination parties may not have a direct trusted relationship.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8225"/>
  <seriesInfo name="DOI" value="10.17487/RFC8225"/>
</reference>



    </references>

</references>



  </back>

<!-- ##markdown-source:
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
4Xt4AAA=

-->

</rfc>

