<?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.34 (Ruby 4.0.2) -->


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

]>


<rfc ipr="trust200902" docName="draft-ietf-acme-authority-token-jwtclaimcon-01" 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="2026" month="March" 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 a certificate's credentials, such as the JWTClaimConstraints extension defined in <xref target="RFC8226"/> and the EnhancedJWTClaimConstraints extension 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 <xref target="RFC9447"/> and the TNAuthList validation defined in <xref target="RFC9448"/>.</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 and EnhancedJWTClaimConstraints extensions based on the issuer of the token.</t>

<t>This document is intended for use by Secure Telephone Identity (STI) Certification Authorities. In this ecosystem, certificates contain telephone-number-related (TNAuthList) extensions and JWTClaimConstraints extensions defined in <xref target="RFC8226"/> and <xref target="RFC9118"/>, and certificate issuance is governed by a set of STI-specific Token Authorities. The TNAuthList Authority Token profile (<xref target="RFC9448"/>) is the parallel specification for telephone number authorization in this ecosystem and is already widely deployed. This document follows the same pattern to address authorization of the JWTClaimConstraints and EnhancedJWTClaimConstraints extensions. ACME implementers unfamiliar with the STIR ecosystem can treat the validation of the JWTClaimConstraints token value as a domain-specific authorization step analogous to TNAuthList validation: the ACME wire protocol mechanics are identical, and the Token Authority is responsible for the domain-specific semantic validation described in <xref target="RFC8226"/> and <xref target="RFC9118"/>.</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 or EnhancedJWTClaimConstraints extension 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: example.com
Content-Type: application/jose+json

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "Q_s3MWoqT05TrdkM2MTDcw",
    "url": "https://example.com/acme/chall/prV_B7yEyA4"
  }),
  "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 fingerprint 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". Note that this account identifier refers to the ACME client's account with the Token Authority, and is distinct from the ACME account used with the CA. 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>The ACME client then uses the value of the "token" field as the "tkauth" field in the challenge response POST to the ACME challenge URL, as described in Section 4.</t>

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

<t>The "value" field of the JWTClaimConstraints identifier, and the corresponding "tkvalue" in the "atc" claim, is a base64url-encoded DER representation of a JWTClaimConstraints or EnhancedJWTClaimConstraints ASN.1 object as defined in <xref target="RFC8226"/> and <xref target="RFC9118"/>. From the ACME server's perspective this value is opaque: validation step 5 in Section 6 requires only that the value in the token matches the value in the order. The semantic content of the extension — which claims are permitted or excluded, and for which telephone numbers — is a STIR ecosystem concern governed by <xref target="RFC8226"/> and <xref target="RFC9118"/>, and is validated by the Token Authority prior to token issuance (see Section 5.3). Informative examples of JWTClaimConstraints ASN.1 structures, their DER encodings, and corresponding base64url values are provided in <xref target="appendix-examples"/>.</t>

<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. Steps 1 through 3 and steps 6 through 8 are general ACME authority token validation steps applicable to any Authority Token profile. Steps 4 and 5 are specific to the JWTClaimConstraints profile. The semantic validation of whether the JWTClaimConstraints or EnhancedJWTClaimConstraints content accurately reflects the requesting party's authorized resources is the responsibility of the Token Authority prior to issuing the token (see Section 5.3), and is governed by <xref target="RFC8226"/> and <xref target="RFC9118"/>.</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).</t>
  <t>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>




<?line 433?>

<section anchor="appendix-examples"><name>JWTClaimConstraints Identifier Value Examples</name>

<t>This appendix provides informative examples of JWTClaimConstraints and EnhancedJWTClaimConstraints ASN.1 structures as defined in <xref target="RFC8226"/> and <xref target="RFC9118"/>, along with their DER encodings and base64url values as used in the ACME identifier "value" field and the "tkvalue" of the "atc" claim. These examples are intended for implementers of STI Token Authorities and certificate requestors in the STIR/SHAKEN ecosystem. ACME server implementations treat the identifier value as opaque and are not required to parse or validate its internal structure.</t>

<t>Note: single-quote delimiters in the ASN.1 notation below denote string values; inner double quotes are part of the JSON-formatted claim values as defined in <xref target="RFC8226"/>.</t>

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

<t>In this case, the requestor is authorized to use a set of telephone numbers but no optional claim information. The EnhancedJWTClaimConstraints extension uses a mustExclude constraint to prohibit all optional claims relevant to the application.</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>DER encoding (51 bytes, hex):</t>

<figure><artwork><![CDATA[
30 31 a2 2f 16 06 61 74 74 65 73 74 16 06 6f 72
69 67 69 64 16 03 64 69 76 16 03 72 70 68 16 03
73 70 68 16 03 72 63 64 16 04 72 63 64 69 16 03
63 72 6e
]]></artwork></figure>

<t>base64url value:</t>

<figure><artwork><![CDATA[
MDGiLxYGYXR0ZXN0FgZvcmlnaWQWA2RpdhYDcnBoFgNzcGgWA3JjZBYEcmNkaRYDY3Ju
]]></artwork></figure>

<t>A simpler alternative for requestors 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 this case, the requestor is authorized to assert a specific set of claim information that applies uniformly across all authorized telephone numbers. The extension uses a permittedValues constraint for the authorized claims and a mustExclude constraint for the remainder.</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>

<t>DER encoding (104 bytes, hex):</t>

<figure><artwork><![CDATA[
30 66 a1 3d 30 3b 30 39 16 03 72 63 64 30 15 0c
13 22 6e 61 6d 22 3a 20 22 4a 61 6d 65 73 20 42
6f 6e 64 22 16 03 63 72 6e 30 16 0c 14 22 46 6f
72 20 79 6f 75 72 20 65 61 72 73 20 6f 6e 6c 79
22 a2 25 16 06 61 74 74 65 73 74 16 06 6f 72 69
67 69 64 16 03 64 69 76 16 03 72 70 68 16 03 73
70 68 16 04 72 63 64 69
]]></artwork></figure>

<t>base64url value:</t>

<figure><artwork><![CDATA[
MGahPTA7MDkWA3JjZDAVDBMibmFtIjogIkphbWVzIEJvbmQiFgNjcm4wFgwUIkZv
ciB5b3VyIGVhcnMgb25seSKiJRYGYXR0ZXN0FgZvcmlnaWQWA2RpdhYDcnBoFgNz
cGgWBHJjZGk
]]></artwork></figure>

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

<t>In this case, the requestor is authorized to assert different sets of claims for distinct subsets of telephone numbers. This is expressed by including an "orig" claim in the permittedValues entry to associate specific claim values with a particular set of telephone numbers.</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>DER encoding (143 bytes, hex):</t>

<figure><artwork><![CDATA[
30 81 8c a1 63 30 61 30 5f 16 03 72 63 64 30 15
0c 13 22 6e 61 6d 22 3a 20 22 4a 61 6d 65 73 20
42 6f 6e 64 22 16 03 63 72 6e 30 16 0c 14 22 46
6f 72 20 79 6f 75 72 20 65 61 72 73 20 6f 6e 6c
79 22 16 04 6f 72 69 67 30 1e 0c 0d 22 31 32 30
32 35 35 35 31 30 30 30 22 0c 0d 22 31 32 30 32
35 35 35 31 30 30 31 22 a2 25 16 06 61 74 74 65
73 74 16 06 6f 72 69 67 69 64 16 03 64 69 76 16
03 72 70 68 16 03 73 70 68 16 04 72 63 64 69
]]></artwork></figure>

<t>base64url value:</t>

<figure><artwork><![CDATA[
MIGMoWMwYTBfFgNyY2QwFQwTIm5hbSI6ICJKYW1lcyBCb25kIhYDY3JuMBYMFCJG
b3IgeW91ciBlYXJzIG9ubHkiFgRvcmlnMB4MDSIxMjAyNTU1MTAwMCIMDSIxMjAy
NTU1MTAwMSKiJRYGYXR0ZXN0FgZvcmlnaWQWA2RpdhYDcnBoFgNzcGgWBHJjZGk
]]></artwork></figure>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
sLo8Gepnln74Hdppk3L6f1FhJ4DGdQAA

-->

</rfc>

