<?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-ietf-acme-authority-token-jwtclaimcon-00" 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="November" day="24"/>

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

    <abstract>


<?line 44?>

<t>This document defines an authority token profile for the validation of JWTClaimConstraints and EnhancedJWTClaimConstraints certificate extensions within the Automated Certificate Management Environment (ACME) protocol. This profile is based on the Authority Token framework and establishes the specific ACME identifier type, challenge mechanism, and token format necessary to authorize a client to request a certificate containing these constraints.</t>



    </abstract>



  </front>

  <middle>


<?line 48?>

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

<t>The validation of certificate extensions that constrain the use of credentials, such as JWTClaimConstraints defined in <xref target="RFC8226"/> and EnhancedJWTClaimConstraints defined in <xref target="RFC9118"/>, is critical for defining the scope of an issued certificate. This document specifies an authority token profile for validating these constraints, modeled after the authority token framework established in and the TNAuthList validation defined in.</t>

<t>This profile facilitates proper delegation and authorization for entities requesting certificates under ACME and similar frameworks. It 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.</t>

<t>This document also discusses the ability for an 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). 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.</t>

<t>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:</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.</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", defined 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. If a "token-authority" parameter is present, the ACME client MAY use this 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, 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.</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 response object is specific to the tkauth-01 challenge type. When responding to a challenge for a JWTClaimConstraints identifier, this field SHALL 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.</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 EnhancedJWTClaimConstraints 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 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". There is assumed to 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.</t>

<t>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.</t>

<t>The fingerprint in the token request is not meant to be verified by the Token Authority. Rather, it 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 that 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 involves the JWTClaimConstraints and EnhancedJWTClaimConstraints extensions, the client MAY request an Authority Token with some subset of its own authority as the JWTClaimConstraints provided in the "tkvalue" element of the "atc" JSON object. JWTClaimConstraints can be constructed to define a limited scope of claims and claim values the client has authority over.</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"/>, a certificate order may require two Authority Token identifier types:</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 specifications 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.</t>

<t>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. Since these two certificate extensions constrain the resources and claims available to the certificate, 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 is authorized to assert various claims and claim values. 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 examples illustrate how the two types of Authority Tokens are used. The TNAuthList Authority Token specifies the authorized TNs. The content of the JWTClaimConstraints Authority Token varies based on the user's authority to assert claims and values.</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 optional claim information. Accordingly, the JWTClaimConstraints Authority Token contains an EnhancedJWTClaimConstraints extension that prohibits all optional claims relevant to the application (e.g., using a mustExclude constraint).</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>A simpler alternative for users not authorized to include optional claims is to submit a new-order request containing only a TNAuthList identifier. In this case, the absence of a JWTClaimConstraints identifier MAY trigger local policy in the CA to include a restrictive EnhancedJWTClaimConstraints extension in the issued certificate.</t>

</section>
<section anchor="extended-claims-authorized-uniform-constraints"><name>Extended Claims Authorized (Uniform Constraints)</name>

<t>In the second case, the user is authorized to assert a specific set of claim information, and these constraints apply uniformly to all TN(s) the user is authorized to use. The corresponding JWTClaimConstraints Authority Token contains a JWTClaimConstraints or EnhancedJWTClaimConstraints extension that permits a specific set of claim values (e.g., using a permittedValues constraint) that applies across the user's authorized TNs.</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 'rcdi'
      }
    }
  }
]]></artwork></figure>

</section>
<section anchor="extended-claims-authorized-per-tn-subset-constraints"><name>Extended Claims Authorized (Per-TN Subset Constraints)</name>

<t>In the third case, the user is permitted to assert different sets of claims for distinct subsets of the user's authorized TNs. To manage this, the JWTClaimConstraints Authority Token includes permitted values for the claims that are explicitly associated with a specific set of TN(s). This association is achieved by including an EnhancedJWTClaimConstraints permitted value(s) entry for the "orig" claim which identifies the relevant TN(s) to which the other claim values apply.</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>

</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 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 includes both identifier types:</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, one for each identifier:</t>

<figure><artwork><![CDATA[
     "authorizations": [
        "https://example.com/acme/authz/1234",
        "https://example.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="numbers" type="1">
  <t>Verify that the value of the "atc" claim is a well-formed JSON object containing the mandatory key values ("tktype", "tkvalue", "fingerprint").</t>
  <t>Verify Token Issuer: If there is an "x5u" parameter, verify the "x5u" parameter is an HTTPS URL with a reference to a certificate representing the trusted issuer of authority tokens. If there is an "x5c" parameter, verify the certificate array contains a certificate representing the trusted issuer of authority tokens.</t>
  <t>Verify Signature: 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 Token Type: Verify that the "atc" claim contains a "tktype" identifier with the value "JWTClaimConstraints".</t>
  <t>Verify Constraints Match: 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 Claims: Verify that the remaining claims are valid (e.g., verify that the token has not expired using the "exp" claim).
7.Verify Account Control: Verify that the "atc" claim "fingerprint" is valid and matches the account key of the client making the request.</t>
  <t>Verify CA Flag: Verify that the "atc" claim "ca" identifier boolean corresponds to the CA boolean in the Basic Constraints extension in the Certificate Signing Request (CSR) for either a CA certificate or an 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) objects can include an "x5u" header parameter to refer to a certificate for signature validation. In order to support this usage, the Certificate Authority (CA) MAY host the newly issued certificate and provide a URL that the ACME client owner can directly reference in the "x5u" header parameter of their signed JWS objects.</t>

<t>To facilitate this, the CA MAY add a newly defined field called "x5u" to the 200 (OK) order object response when the certificate is ready for the finalize request:</t>

<t>x5u (optional, string): A URL that can be used to reference the certificate in the "x5u" parameter of a JWS object.</t>

<t>An example of a 200 (OK) response containing the new "x5u" field:</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://example.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 JWTClaimConstraints and EnhancedJWTClaimConstraints, which constrain the resources and claims a certificate holder can assert. 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 or misuse the constrained resources.</t>

<t>This document inherits the security properties of <xref target="RFC9447"/>. Implementations SHOULD follow the best practices identified in <xref target="RFC8725"/> for cryptographic security.</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='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>





  </back>

<!-- ##markdown-source:
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
Kn2TxaX9ZIVVpZD+FxYGQfjQ+B9Ji3oMIGYAAA==

-->

</rfc>

