<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcguinness-oauth-client-instance-id-01" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Client Instance Identifiers">OAuth 2.0 Client Instance Identifiers</title>
    <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-client-instance-id-01"/>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>OAuth</keyword>
    <keyword>client attestation</keyword>
    <keyword>instance identity</keyword>
    <abstract>
      <?line 50?>

<t>This specification defines an optional claims profile of OAuth 2.0
Attestation-Based Client Authentication. When selected, the profile
requires an attester-assigned client instance identifier, scoped by default to the server that validates it, that remains stable across verified key
changes, and adds continuity and privacy
rules for that identifier. Conveying instance context in tokens and
introspection responses remains optional within the profile.
Authentication and proof methods follow the base specification.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mcguinness.github.io/draft-mcguinness-oauth-client-instance-id/draft-mcguinness-oauth-client-instance-id.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mcguinness-oauth-client-instance-id/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mcguinness/draft-mcguinness-oauth-client-instance-id"/>.</t>
    </note>
  </front>
  <middle>
    <?line 60?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Attestation-Based Client Authentication <xref target="ATTEST"/> answers one
question: is this an authorized Client Instance in possession of this
key? This profile adds a second: is this the same Client Instance the
Receiver previously encountered? A new attestation alone cannot answer
it: <xref section="10.6" sectionFormat="of" target="ATTEST"/> requires one for every new key, and after
a key change a continuing installation is indistinguishable from a new
one.</t>
      <t>This question arises in deployments where one Logical Client has many
Client Instances, for example, an application on each managed laptop,
a container per replica, or an agent runtime per host. Each instance
presents a valid attestation for the same <tt>client_id</tt> and is
distinguishable only by its current key. After an instance rotates
that key, a Receiver cannot determine whether it is the instance the
Receiver suspended or a new one, and audit history and status
decisions tied to the old key do not carry over.</t>
      <t>This specification defines two claims:</t>
      <ul spacing="normal">
        <li>
          <t>The <tt>client_instance_id</tt> claim allows a Receiver to recognize a Client
Instance across key changes. Carried in the Client Attestation, it
identifies one installation or runtime. The attester assigns it,
retains it across verified key changes, and by default scopes it to
one Receiver, which reveals that Receiver to the attester.</t>
        </li>
        <li>
          <t>The <tt>client_instance</tt> claim, or introspection response member, allows
a resource server that does not
receive the attestation to correlate requests with the instance
validated at issuance. It carries a mapped reference to that instance
in a token or introspection response.</t>
        </li>
      </ul>
      <t>This specification establishes instance identity and its continuity,
not authority; instance evidence grants none. Authorization profiles
can use validated instance identity or Instance Context as a policy
input, subject to the prohibitions in <xref target="processing"/>.</t>
      <t><xref target="ATTEST"/> alone suffices when correlation is needed only for the
current key.</t>
      <t>Assigning each instance its own <tt>client_id</tt> with a shared <tt>software_id</tt>
client metadata value (<xref section="2" sectionFormat="of" target="RFC7591"/>) is an alternative.
This specification instead targets deployments that share one Logical
Client, one metadata URL when using <xref target="CIMD"/>, and authorization server
policy keyed by that client. The <tt>software_id</tt> value correlates
registrations but defines no shared grants or policy across separate
client identities.</t>
      <t><xref target="conformance"/> lists the five implementing roles and their
requirements.</t>
      <section anchor="identity-and-scope">
        <name>Identity and Scope</name>
        <table>
          <thead>
            <tr>
              <th align="left">Identity</th>
              <th align="left">Purpose</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Logical Client (<tt>client_id</tt>)</td>
              <td align="left">Identifies the OAuth client</td>
            </tr>
            <tr>
              <td align="left">Authorization principal</td>
              <td align="left">Identifies the subject or delegated actor</td>
            </tr>
            <tr>
              <td align="left">Client Instance</td>
              <td align="left">Identifies one installation or one execution of the client software</td>
            </tr>
          </tbody>
        </table>
        <t>The deployment chooses the instance granularity:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Installation:</strong> one installation, retaining its identity across
process restarts.</t>
          </li>
          <li>
            <t><strong>Execution:</strong> one unit the deployment names, such as a process,
container, or Kubernetes Pod, retaining its identity for that
unit's lifetime.</t>
          </li>
        </ul>
        <t>Enrollment records that choice.</t>
        <t>This specification addresses administratively configured deployments
such as workloads and managed desktop or mobile applications. Its
identifiers are not general-purpose device or wallet identifiers, and
it does not define an enrollment, key-rotation, or status-distribution
protocol. <xref target="ATTEST"/>
supplies the authentication and proof methods, including direct
resource-server presentation (<xref section="7" sectionFormat="of" target="ATTEST"/>). When selected
under <xref target="configuration"/>, this profile applies whether the Client
Attestation is the client authentication method or an additional
security signal (<xref section="7.6" sectionFormat="of" target="ATTEST"/>). It does not replace the
deployment's required client authentication.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The terms Client Attestation, Client Attester, Client Instance, and
Client Instance Key are used as defined in <xref target="ATTEST"/>.</t>
      <dl>
        <dt>Logical Client:</dt>
        <dd>
          <t>The OAuth client <xref target="RFC6749"/> identified by <tt>client_id</tt>. Several Client
Instances can authenticate as the same Logical Client.</t>
        </dd>
        <dt>Attester Issuer:</dt>
        <dd>
          <t>The <tt>iss</tt> claim value in the Client Attestation, which identifies
the Client Attester.</t>
        </dd>
        <dt>Instance Identifier:</dt>
        <dd>
          <t>The <tt>client_instance_id</tt> claim value, which a Client Attester assigns
to one Client Instance at the configured granularity and Receiver
Scope (<xref target="receiver-scope"/>).</t>
        </dd>
        <dt>Source Instance Identity:</dt>
        <dd>
          <t>The pair <tt>(iss, client_instance_id)</tt> from a validated Client
Attestation, that is, the Attester Issuer and the Instance
Identifier. This specification keeps it stable across verified key
changes, and Instance Context is mapped from it.</t>
        </dd>
        <dt>Instance Context:</dt>
        <dd>
          <t>The <tt>client_instance</tt> JSON object in a token or introspection
response. It grants no authority and does not prove current
possession.</t>
        </dd>
        <dt>Receiver:</dt>
        <dd>
          <t>A party that validates a Client Attestation under this profile, such
as an authorization server or resource server. A Receiver that issues
tokens carrying Instance Context is also a token issuer.</t>
        </dd>
        <dt>Context Consumer:</dt>
        <dd>
          <t>A party that consumes Instance Context from a token or introspection
response. It need not receive the Client Attestation.</t>
        </dd>
        <dt>Receiver Scope:</dt>
        <dd>
          <t>The Receiver, or explicitly configured set of Receivers, to which one
assignment of <tt>client_instance_id</tt> is scoped (<xref target="receiver-scope"/>).</t>
        </dd>
        <dt>Consumer Scope:</dt>
        <dd>
          <t>The Context Consumer, or explicitly configured set of Context
Consumers, to which one mapping of Instance Context is scoped. A
Consumer Scope is identified by a configured set of audience values
(<xref target="format-and-mapping"/>).</t>
        </dd>
        <dt>Instance Context Authority:</dt>
        <dd>
          <t>The token issuer identified by the <tt>iss</tt> member of Instance Context.
It assigned the current <tt>id</tt> value and is the enclosing token's
issuer unless the context was preserved from an upstream token. The
Client Attester remains the authority for the Source Instance
Identity.</t>
        </dd>
        <dt>Instance Context Identifier:</dt>
        <dd>
          <t>The pair <tt>(iss, id)</tt> in Instance Context. Like a pairwise subject
identifier, it is the Instance Context Authority's own correlator for
one Source Instance Identity within a Consumer Scope; its <tt>id</tt> need
not equal <tt>client_instance_id</tt>.</t>
        </dd>
        <dt>Consuming profile:</dt>
        <dd>
          <t>A specification or deployment profile that defines how a Context
Consumer, or an issuer conveying Instance Context through token
exchange, establishes the association between Instance Context and the
token's subject, actor, or presenter, and how the provenance of
preserved context is authenticated (<xref target="context-exchange"/>,
<xref target="context-consumer"/>). This specification acts as the consuming
profile only in the case described in <xref target="context-consumer"/>.</t>
        </dd>
        <dt>enrollment:</dt>
        <dd>
          <t>An attester-maintained record binding one instance, at the configured
granularity, to its verified keys and assigned identifiers, separate
from any user account, device registration, or Logical Client.</t>
        </dd>
      </dl>
      <t>Identifier values in this specification are opaque. Implementations <bcp14>MUST</bcp14>
compare <tt>iss</tt>, <tt>client_instance_id</tt>, <tt>client_instance.iss</tt>, and
<tt>client_instance.id</tt> as exact, case-sensitive strings without URI
normalization, and <bcp14>MUST NOT</bcp14> derive permissions, granularity, or key
locations by parsing them.</t>
    </section>
    <section anchor="configuration">
      <name>Profile Selection and Trust</name>
      <t>The client and Receiver administratively configure:</t>
      <ul spacing="normal">
        <li>
          <t>the Logical Client, authentication method, and attester trust policy;</t>
        </li>
        <li>
          <t>the instance granularity, continuity evidence, and freshness limits;</t>
        </li>
        <li>
          <t>the intended Receiver and any explicitly shared Receiver Scope
(<xref target="receiver-scope"/>).</t>
        </li>
      </ul>
      <t>A Context Consumer that requires context configures that requirement,
including whether it extends to attribution, with the issuers it accepts
context from. Claims <bcp14>MUST NOT</bcp14> select this profile or change
authentication methods; selection is part of the client-specific trust
agreement, and this profile adds no discovery or metadata parameter.
The error in <xref target="errors"/> reports rejection, not profile discovery.</t>
      <section anchor="attester-trust">
        <name>Attester Trust</name>
        <t>The Receiver <bcp14>MUST</bcp14> bind each approved Attester Issuer to its validation
keys and authorized Logical Clients through configured associations. An
authorization server can derive those associations from client
endorsements it accepts, for example under <xref target="ATTESTER-ENDORSEMENT"/>.
<xref target="ATTESTER-ENDORSEMENT"/> applies only to authorization server endpoints
(<xref section="2.3" sectionFormat="of" target="ATTESTER-ENDORSEMENT"/>);
a resource server validating attestations directly uses configured
associations. A credential's <tt>iss</tt> claim, proof of possession, or
client-published metadata (<xref target="RFC7591"/>, <xref target="CIMD"/>) alone does not
establish attester authority. Key resolution follows
<xref section="10.8" sectionFormat="of" target="ATTEST"/>. Local trust withdrawal <bcp14>MUST</bcp14> take effect on
subsequent authentication.</t>
      </section>
      <section anchor="conformance">
        <name>Conformance</name>
        <t>Conformance is role-specific:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Role</th>
              <th align="left">Implements</th>
              <th align="left">Where</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Client Attester</td>
              <td align="left">Claim, identifier, continuity, and enrollment requirements</td>
              <td align="left">
                <xref target="claims"/>, <xref target="attester-requirements"/></td>
            </tr>
            <tr>
              <td align="left">Client</td>
              <td align="left">Scoped attestation use, key separation, and the selected ATTEST proof method</td>
              <td align="left">
                <xref target="receiver-scope"/>, <xref target="presenter-attribution"/>, <xref target="token-binding-keys"/></td>
            </tr>
            <tr>
              <td align="left">Receiver</td>
              <td align="left">Trust, validation, grant-continuity, and revocation rules</td>
              <td align="left">
                <xref target="configuration"/>, <xref target="processing"/>, <xref target="suspension"/></td>
            </tr>
            <tr>
              <td align="left">Token issuer conveying context</td>
              <td align="left">Mapping, preservation, and any binding that attribution requires</td>
              <td align="left">
                <xref target="instance-context"/></td>
            </tr>
            <tr>
              <td align="left">Context Consumer</td>
              <td align="left">Context validation and applicable proof checks</td>
              <td align="left">
                <xref target="presenter-attribution"/>, <xref target="context-consumer"/>, <xref target="context-errors"/></td>
            </tr>
          </tbody>
        </table>
        <t>An implementation serving several roles satisfies each. Conveying
Instance Context (<xref target="instance-context"/>) is optional and independent of
the rest of this specification.</t>
      </section>
    </section>
    <section anchor="claims">
      <name>Client Attestation Claims</name>
      <t>This profile uses the additional claims permitted by
<xref section="4" sectionFormat="of" target="ATTEST"/>. All <xref target="ATTEST"/> requirements apply, including a
<tt>typ</tt> JOSE header parameter value of <tt>oauth-client-attestation+jwt</tt>,
<tt>sub</tt> equal to <tt>client_id</tt>, and the required <tt>exp</tt>, <tt>cnf</tt>, and <tt>iat</tt>
claims.</t>
      <dl>
        <dt><tt>iss</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. Exactly matches an approved Attester Issuer
(<xref target="attester-trust"/>).</t>
        </dd>
        <dt><tt>client_instance_id</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. A nonempty JSON string, whose UTF-8 encoding is at most 256
octets after JSON string decoding, that identifies the instance within
the attester's namespace. A URI-form value carries no URI semantics.
Receivers <bcp14>MUST</bcp14> reject longer values. Assignment, scoping, and
generation follow <xref target="identifier-generation"/>.</t>
        </dd>
      </dl>
      <section anchor="receiver-scope">
        <name>Receiver Scope</name>
        <t>A Receiver Scope is an enrollment or issuance input, not an OAuth
parameter or attestation audience. A Receiver cannot verify it from the
identifier alone.</t>
        <t>The attester <bcp14>MUST</bcp14> assign distinct identifiers per Receiver unless an
administrative agreement explicitly authorizes a shared identifier
within a named set of Receivers. A shared client or trust domain does
not by itself authorize sharing. The client <bcp14>MUST</bcp14> request and use the
attestation for that configured scope. A Receiver cannot detect an
attestation presented outside its scope; the resulting correlation
exposes the end user of that instance (<xref section="11.1" sectionFormat="of" target="ATTEST"/>).</t>
        <t>Scoping an identifier to a Receiver reveals that Receiver to the
attester (<xref target="attester-visibility"/>). A deployment that needs the attester
not to learn individual Receivers, or that intends correlation across
them, configures one Receiver Scope spanning them; one identifier and
key then suffice.</t>
        <t>The client <bcp14>MUST</bcp14> also use distinct Client Instance Keys across scopes.
<xref section="11.1" sectionFormat="of" target="ATTEST"/> recommends this across authorization and
resource servers; this profile requires it across the scopes a
deployment chooses to separate, because a shared key links
attestations regardless of their identifiers. Token-binding key
separation between Context Consumers is addressed in
<xref target="token-binding-keys"/>.</t>
        <t>In combined mode, the Client Instance Key is also the DPoP key. In
normal mode, the DPoP key is independent of the attestation
(<xref section="5.2" sectionFormat="of" target="ATTEST"/>). A token issued in combined mode is bound to
the authorization server's scoped key. A separately scoped resource
server's attestation carries a different key. No single proof can
match both, so combined mode cannot also be used at that resource
server. Instead, a client authenticating in normal mode can present
the resource-server-scoped key as its DPoP key at issuance. That
allows combined mode at the resource server, at a correlation cost
described in <xref target="token-binding-keys"/>.</t>
      </section>
      <section anchor="attestation-example">
        <name>Example</name>
        <t>The following example shows a decoded Client Attestation payload:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://attester.example/tenant/acme",
  "sub": "https://platform.example/oauth-client",
  "client_instance_id": "i-844a2aa37074eed77f3b3e950432f597",
  "iat": 1789128000,
  "exp": 1789128300,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "VcKVNBZ4IaBAYW3jxM4w3TJFVA7myeUGQyGt-g_yvpQ",
      "y": "f-E-hYE3TAWKwhVv9pej9NABs9SX9XsNO80x57jFTyU"
    }
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="processing">
      <name>Request Processing</name>
      <t>The Receiver <bcp14>MUST</bcp14>:</t>
      <ol spacing="normal" type="1"><li>
          <t>Validate the attestation and proof under the configured <xref target="ATTEST"/>
method.</t>
        </li>
        <li>
          <t>Validate the claims in <xref target="claims"/> and attester authority under
<xref target="configuration"/>, including that the key that verified the
attestation is bound to the asserted <tt>iss</tt> claim. Key resolution
under <xref section="10.8" sectionFormat="of" target="ATTEST"/> selects a key from JOSE header
parameters, not from <tt>iss</tt>, so a trust anchor covering several
attesters does not by itself establish that association.</t>
        </li>
        <li>
          <t>Associate the Source Instance Identity with the Logical Client and
validated Client Instance Key, then apply the Receiver's local
policy for that instance, such as suspension or required prior
enrollment, reporting rejection under <xref target="errors"/>.</t>
        </li>
      </ol>
      <t>The Receiver <bcp14>MUST NOT</bcp14>:</t>
      <ul spacing="normal">
        <li>
          <t>substitute an identifier for proof of possession or infer it from a
key thumbprint, certificate serial number, or JWT <tt>jti</tt> claim;</t>
        </li>
        <li>
          <t>infer continuity from equal identifiers or keys across Attester
Issuers; or</t>
        </li>
        <li>
          <t>set an access token's <tt>sub</tt> claim, add an <tt>act</tt> claim, or extend an
actor chain solely from instance evidence.</t>
        </li>
      </ul>
      <t>Migration between Attester Issuers requires a procedure that establishes
trust in both authorities and continuity evidence; this specification
does not define one. Key selection follows <xref target="ATTEST"/>; when a separate
token-binding key is used, context identifies the instance associated
with the Client Instance Key.</t>
      <section anchor="grant-continuity">
        <name>Grant Continuity</name>
        <t><xref section="10.3" sectionFormat="of" target="ATTEST"/> binds a refresh token to the Client Instance,
by default through the Client Instance Key. The refresh token remains
bound to that key; only a profile acting under <xref section="13" sectionFormat="of" target="ATTEST"/>
can rebind it. This profile records an identity for the binding that
persists across a verified key change, so later grants correlate with
the same instance. It adds no instance-bound grants. Under the default
binding, a refresh after a key change fails key-binding validation. With
the original bound key, the identity check below detects an attestation
that names a different instance; the check governs refresh across key
changes only under a profile that rebinds refresh tokens.</t>
        <t>For a grant established using a Client Attestation validated under this
profile, the authorization server <bcp14>MUST</bcp14> record the Source Instance
Identity when issuing a refresh token.</t>
        <t>On refresh of such a grant, the authorization server:</t>
        <ol spacing="normal" type="1"><li>
            <t><bcp14>MUST</bcp14> require a validated attestation, whether the attestation is the
client authentication method or an additional security signal. This
extends <xref section="10.3" sectionFormat="of" target="ATTEST"/>, which requires the attestation
mechanism when refreshing.</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> enforce two independent invariants:
            </t>
            <ul spacing="normal">
              <li>
                <t>the Source Instance Identity in the current validated attestation
<bcp14>MUST</bcp14> match the recorded one; and</t>
              </li>
              <li>
                <t>the proof and key binding <bcp14>MUST</bcp14> satisfy <xref target="ATTEST"/>, or a profile
that has redefined refresh-token binding under
<xref section="13" sectionFormat="of" target="ATTEST"/>.</t>
              </li>
            </ul>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> produce the <tt>invalid_grant</tt> error code
(<xref section="5.2" sectionFormat="of" target="RFC6749"/>) for a conflict with the recorded
identity, without disclosing the expected identity.</t>
          </li>
        </ol>
        <t>Instance continuity and key-binding continuity are independent.</t>
        <t>If authorization-time policy bound a code or other artifact to an
instance, the authorization server <bcp14>MUST</bcp14> enforce that binding at
redemption, whether the attestation is the client authentication method
or an additional security signal (<xref section="7.6" sectionFormat="of" target="ATTEST"/>). Because
presenting the attestation can be optional in that second mode, an
authorization server that binds artifacts to instances <bcp14>MUST</bcp14> require it
at their redemption; otherwise a conforming client cannot supply what
the authorization server needs to check.
<xref section="10.4" sectionFormat="of" target="ATTEST"/> recommends establishing such bindings where
attestation is the client authentication method.</t>
      </section>
      <section anchor="errors">
        <name>Attestation Errors</name>
        <t>If required instance claims are missing or invalid, or if the Receiver's
local policy for the instance (<xref target="processing"/>) rejects the instance, the
Receiver <bcp14>MUST</bcp14> produce the <tt>invalid_client_attestation</tt> error code.
<xref section="7.4" sectionFormat="of" target="ATTEST"/> defines that code for failures to verify the
attestation or its proof. This profile extends it to instance claims and
policy, so responses do not disclose whether an instance is unknown,
suspended, or retired. Receivers <bcp14>SHOULD</bcp14> also avoid distinguishable
response timing. Consequently, a client cannot distinguish a transient
failure from a durable policy decision, or whether retrying with a fresh
attestation will help. Responses use the format and HTTP status codes
that <xref section="7.4" sectionFormat="of" target="ATTEST"/> specifies for the code
(<xref section="5.2" sectionFormat="of" target="RFC6749"/> at the authorization server,
<xref section="3" sectionFormat="of" target="RFC6750"/> at a resource server). Unknown instances are
rejected only when local policy requires prior enrollment. If a profile
check fails, the Receiver <bcp14>MUST NOT</bcp14> fall back to authentication without
the required evidence. Grant-binding errors follow <xref target="grant-continuity"/>;
other errors follow <xref target="ATTEST"/>.</t>
      </section>
    </section>
    <section anchor="attester-requirements">
      <name>Attester Requirements</name>
      <t>An Instance Identifier's meaning over time depends on the attester:
how it generates identifiers (<xref target="identifier-generation"/>), when it may
retain them (<xref target="continuity"/>), how it handles suspension
(<xref target="suspension"/>), and what records it keeps (<xref target="state"/>).</t>
      <section anchor="identifier-generation">
        <name>Identifier Generation</name>
        <t>For each enrollment and Receiver Scope (<xref target="receiver-scope"/>), the
attester <bcp14>MUST</bcp14> assign identifiers that are:</t>
        <ul spacing="normal">
          <li>
            <t>distinct, opaque, and never reassigned, including after retirement;</t>
          </li>
          <li>
            <t>generated from at least 128 bits of either cryptographically secure
randomness or keyed pseudorandom-function output;</t>
          </li>
          <li>
            <t>unpredictable to parties other than the attester; and</t>
          </li>
          <li>
            <t>free of runtime hostnames, user identifiers, and embedded instance
attributes.</t>
          </li>
        </ul>
        <t>A URI can name the attester's namespace; its instance-specific portion
remains opaque. Keyed derivation, such as HMAC <xref target="RFC2104"/>, <bcp14>MUST</bcp14> use a
secret with at least 128 bits of entropy and unambiguously encode the
Logical Client, Receiver Scope, and a unique enrollment component; a
platform-stable input alone would reproduce retired identifiers after
reinstall. If the attester changes its derivation inputs or secrets,
it <bcp14>MUST</bcp14> still produce the values already assigned within a continuing
enrollment. Storing the assigned values suffices.</t>
      </section>
      <section anchor="continuity">
        <name>Continuity and Lifecycle</name>
        <t>Continuity is authenticated evidence that shows the attester that a
claimant is the same enrolled Client Instance at the configured
granularity. An attester-recorded chain of verified key custody within
one enrollment is the primary mechanism; platform or hardware-rooted
identity evidence can supplement that chain or, where the deployment's
evidence policy permits, replace it. Before retaining an identifier,
the attester <bcp14>MUST</bcp14> verify and record:</t>
        <ol spacing="normal" type="1"><li>
            <t>an active enrollment binding the instance, Logical Client, Receiver
Scope, granularity, and previously verified keys;</t>
          </li>
          <li>
            <t>fresh possession of the current key and authenticated evidence
binding it to that enrollment, including an authorized custody
transition when the key changes; and</t>
          </li>
          <li>
            <t>the configured continuity checks, their freshness, and observed
lifecycle events or evidence of independent claimants.</t>
          </li>
        </ol>
        <t>The deployment specifies its evidence, freshness limits, and lifecycle
boundaries. For example, when the unit is a Kubernetes Pod, a container
restart keeps the identity, but a new Pod is a new unit. An identifier
at Installation or Execution granularity does not identify individual
processes within that installation or unit. The attester <bcp14>MUST</bcp14> apply the
following outcomes:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Event</th>
              <th align="left">Required outcome</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Renewal, verified key change, process restart at Installation granularity, or in-place update</td>
              <td align="left">Retain identifiers when continuity is verified</td>
            </tr>
            <tr>
              <td align="left">Reinstall, independent clone, replacement or restart of the unit at Execution granularity, or granularity change</td>
              <td align="left">Require new enrollment</td>
            </tr>
            <tr>
              <td align="left">Restore or snapshot rollback</td>
              <td align="left">Retain only with fresh evidence that the claimant succeeds the prior holder; copied keys and data alone are insufficient</td>
            </tr>
            <tr>
              <td align="left">Resume after suspension (<xref target="suspension"/>)</td>
              <td align="left">Apply continuity checks at the next issuance using available authenticated evidence</td>
            </tr>
            <tr>
              <td align="left">Continuity cannot be established</td>
              <td align="left">Require new enrollment; a continuing original can retain its own enrollment</td>
            </tr>
            <tr>
              <td align="left">Detected fork of one enrollment</td>
              <td align="left">Retire the identifiers and enroll claimants separately, unless authenticated evidence shows which claimant continues the enrollment; that claimant keeps them</td>
            </tr>
          </tbody>
        </table>
        <t>The attester <bcp14>MUST NOT</bcp14> knowingly retain identifiers for independent
instances. Concurrent processes within one installation are not by
themselves a fork. This prohibition covers detected forks, not events
the platform cannot observe (<xref target="assurance"/>). An identifier, expired
attestation, or former public key alone does not establish continuity.</t>
      </section>
      <section anchor="suspension">
        <name>Suspension and Status</name>
        <t>The attester <bcp14>MUST</bcp14> stop issuance for suspended or retired enrollments.
An authorization server that suspends an instance <bcp14>SHOULD</bcp14> revoke the
instance's grants or report their tokens inactive through introspection
<xref target="RFC7662"/>. Short
attestation lifetimes limit how long a suspended instance remains
acceptable.</t>
        <t>When an authorization server revokes a grant for instance suspension,
retirement, or attester trust withdrawal, it <bcp14>MUST</bcp14> revoke all of that
grant's access and refresh tokens, report them inactive in
introspection responses, and prevent further refresh issuance.</t>
        <t>Without a status channel, parties unaware of the change face three
limitations: existing attestations may remain acceptable until
expiration plus clock skew; issued tokens may still be accepted for
their own lifetimes; and local revocation does not notify resource
servers validating tokens offline. Status distribution, for example
using Security Event Tokens <xref target="RFC8417"/> delivered under <xref target="RFC8935"/>, is
outside the scope of this specification.</t>
      </section>
      <section anchor="state">
        <name>State and Retention</name>
        <t>Attesters <bcp14>MUST</bcp14> retain enrollment and verification records while
issuing or renewing attestations, and status while supporting
resumption. Verification summaries suffice. Deleting continuity
records requires new enrollment. A validating Receiver need not keep
an instance allowlist, but local suspension needs instance status,
revocation needs token associations, and mapped context needs its
mappings (<xref target="mapping-stability"/>). Audit retention is local policy.</t>
      </section>
    </section>
    <section anchor="instance-context">
      <name>Conveying Instance Context</name>
      <t>This section is optional. It defines how a token issuer represents a
validated instance to downstream consumers (<xref target="format-and-mapping"/>)
and what a consumer may conclude from it (<xref target="context-consumer"/>).</t>
      <section anchor="format-and-mapping">
        <name>Format and Mapping</name>
        <t>An issuer <bcp14>MAY</bcp14> include the <tt>client_instance</tt> claim in a token or the
<tt>client_instance</tt> member in an introspection response <xref target="RFC7662"/>. The
<tt>client_instance</tt> value is a JSON object whose two <bcp14>REQUIRED</bcp14> members
together form an Instance Context Identifier:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Member</th>
              <th align="left">Type</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>iss</tt></td>
              <td align="left">Nonempty string</td>
              <td align="left">Instance Context Authority that assigned <tt>id</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>id</tt></td>
              <td align="left">Nonempty string, at most 256 octets of UTF-8 after JSON string decoding</td>
              <td align="left">That authority's representation of the instance</td>
            </tr>
          </tbody>
        </table>
        <t>For direct issuance from a validated Client Attestation, context <bcp14>MUST</bcp14>
identify the authenticated presenting instance; on refresh, that
identity is subject to <xref target="grant-continuity"/>. Token exchange follows
<xref target="context-exchange"/> instead.</t>
        <t>Context <bcp14>MUST</bcp14> refer to validated instance participation; issuers <bcp14>MUST
NOT</bcp14> copy unvalidated client-supplied context. The issuer <bcp14>MUST</bcp14> map its
mapping input (the Source Instance Identity or, when remapping under
<xref target="context-exchange"/>, the upstream Instance Context Identifier) into
its own namespace. Each mapping <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>keep distinct instances separate unless continuity is established;</t>
          </li>
          <li>
            <t>generate the <tt>id</tt> value under <xref target="identifier-generation"/>, within the
same length bound as the <tt>client_instance_id</tt> claim (<xref target="claims"/>), and
retain it across attestation renewal and verified key changes; and</t>
          </li>
          <li>
            <t>scope the <tt>id</tt> value to a Consumer Scope, allowing sharing only within
an explicitly configured set.</t>
          </li>
        </ul>
        <t>Each Consumer Scope is identified by a configured set of audience
values. The issuer selects the mapping by the token's audience: its
<tt>aud</tt> claim or, for an opaque token, the audience recorded at issuance.
If a token has no audience, or its audiences span Consumer Scopes, no
single <tt>id</tt> value is correct, and the issuer <bcp14>MUST</bcp14> omit the
<tt>client_instance</tt> object. An introspection response conveys the <tt>id</tt> the
token would carry. When the authenticated introspection caller is
outside the token's Consumer Scope, the issuer <bcp14>MUST</bcp14> omit the
<tt>client_instance</tt> object.</t>
        <t>For derived mappings, the mapping input supplies the enrollment-specific
component and the consumer supplies the scope. Issuers <bcp14>MUST</bcp14> separate
this derivation from attester identifiers, for example by a distinct
key or purpose label. <xref target="wire-examples"/> shows mapped context in an
access token and an introspection response.</t>
      </section>
      <section anchor="mapping-stability">
        <name>Mapping Stability</name>
        <t>For one mapping input and Consumer Scope, an issuer:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST NOT</bcp14> represent that input by more than one <tt>id</tt>;</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> retain the mapping while any token or grant it issued for that
input remains valid, including clock skew; and</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> omit the <tt>client_instance</tt> object rather than assign a
replacement once it no longer holds or can reproduce the mapping. A
Context Consumer requiring context then rejects the request as
specified in <xref target="context-errors"/>.</t>
          </li>
        </ul>
        <t>An issuer that changes its derivation inputs or secrets <bcp14>MUST</bcp14> still
produce the identifiers already assigned for any input and scope for
which it continues to include context, as <xref target="identifier-generation"/>
requires of attesters. Storing those values suffices. Otherwise,
rotating one secret would silently and permanently remove context from
every instance mapped under it.</t>
        <t>Attester identifiers are never reassigned, so a new enrollment presents
a new mapping input and receives a new mapping.</t>
        <t>Storage requirements differ by mapping strategy:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Strategy</th>
              <th align="left">Records needed</th>
              <th align="left">Non-reassignment depends on</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Derived</td>
              <td align="left">None per instance, while the derivation secret and inputs remain available (<xref target="identifier-generation"/>)</td>
              <td align="left">Never reusing enrollment inputs</td>
            </tr>
            <tr>
              <td align="left">Random</td>
              <td align="left">Retained for as long as the issuer intends to include context</td>
              <td align="left">Probability</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="presenter-attribution">
        <name>Presenter Attribution</name>
        <t>Instance Context grants no authority. Alone, it describes only the
instance that participated in obtaining the token.</t>
        <t>When a Context Consumer uses context to attribute the current token
presentation to that instance, the applicable consuming profile <bcp14>MUST</bcp14>
require a mechanism associating the token presenter with the instance. A
Context Consumer attributing a presentation this way <bcp14>MUST</bcp14> validate that
mechanism. For tokens issued directly from a validated Client
Attestation, the mechanism is sender constraint: DPoP <xref target="RFC9449"/>,
mutual TLS <xref target="RFC8705"/>, or another mechanism the consuming profile
defines, using a key the issuer associated with the authenticated
instance at issuance.</t>
        <t>For presenter attribution, the client <bcp14>MUST</bcp14> use a constraining key unique
to the instance at the configured granularity. A key shared by instances
within that boundary establishes no attribution, because any of them can
present the token and satisfy the proof.</t>
        <t>Where the configured requirement for a Consumer Scope includes
attribution, an issuer that cannot bind such a key <bcp14>MUST</bcp14> omit the
<tt>client_instance</tt> object. Context conveyed without such a key indicates
only participation (<xref target="context-consumer"/>), including when it is conveyed
only through introspection.</t>
        <t>A token without sender constraint supports no presenter attribution,
and a Context Consumer requiring attribution rejects the request as
specified in <xref target="context-errors"/>. The HTTP <tt>Bearer</tt> scheme does
not indicate an unbound token; certificate-bound tokens <xref target="RFC8705"/>
also use it.</t>
        <t>All validation requirements of the token-binding mechanism apply whether
or not context is used for attribution, including rejection of a bound
token presented without its proof (<xref section="7.1" sectionFormat="of" target="RFC9449"/> and
<xref section="7.2" sectionFormat="of" target="RFC9449"/>). The binding authenticates the presenter; it
does not establish that the presenter is the instance named in context
derived from an upstream token. Any presenter or key change during
exchange requires authorization under the consuming profile.
Unlinkability between Context Consumers also requires distinct
token-binding keys (<xref target="token-binding-keys"/>).</t>
      </section>
      <section anchor="context-exchange">
        <name>Preservation and Authorization</name>
        <t>An exchange issuing Instance Context <bcp14>MUST</bcp14> use a consuming profile that
defines:</t>
        <ul spacing="normal">
          <li>
            <t>whether context identifies the authenticated presenting instance or
an instance represented by validated input-token context;</t>
          </li>
          <li>
            <t>how its association with the subject, actor, or presenter is
validated;</t>
          </li>
          <li>
            <t>when input context is remapped or preserved; and</t>
          </li>
          <li>
            <t>refresh binding and context continuity, if the exchange issues
refresh tokens.</t>
          </li>
        </ul>
        <t>Issuers <bcp14>SHOULD</bcp14> remap upstream context into their own namespace, which
keeps each consumer's view pairwise. An issuer <bcp14>MAY</bcp14> instead preserve a
validated upstream Instance Context Identifier when configured trust
and the upstream Consumer Scope authorize its disclosure downstream;
otherwise it <bcp14>MUST</bcp14> remap or omit the context.</t>
        <t>An issuer <bcp14>MUST NOT</bcp14> name an upstream Instance Context Authority in the
<tt>iss</tt> member unless it has authenticated:</t>
        <ol spacing="normal" type="1"><li>
            <t>that the named authority assigned the context; and</t>
          </li>
          <li>
            <t>that the context refers to the instance the input token represents.</t>
          </li>
        </ol>
        <t>Validating the input token authenticates only its issuer's assertions.
By default, therefore, an issuer <bcp14>MUST</bcp14> limit preservation to context
whose <tt>iss</tt> member equals the authenticated input-token issuer, and <bcp14>MUST</bcp14>
remap or omit context that an intermediary itself preserved. A consuming
profile that specifies authenticated provenance and its enforcement can
permit deeper preservation; the object carries no forwarding history,
and shallow preservation is also a privacy default.</t>
        <t>Context identifies one instance, not a chain, and <bcp14>MUST NOT</bcp14> be treated
as a separate token or delegated actor. Remapping changes the Instance
Context Identifier; like preservation, it leaves the represented
Source Instance Identity unchanged. An issuer <bcp14>MUST NOT</bcp14> treat upstream
context as identifying a different presenting instance. The upstream
identifier does not establish that the issuer validated the original
Client Attestation.</t>
      </section>
      <section anchor="context-consumer">
        <name>Context Consumer Processing</name>
        <t>Before using context, the Context Consumer <bcp14>MUST</bcp14> perform these steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Validate the enclosing token or authenticated introspection response.</t>
          </li>
          <li>
            <t>Validate the context members, treating an <tt>id</tt> value that exceeds the
length bound in <xref target="format-and-mapping"/> as invalid and ignoring
unrecognized members.</t>
          </li>
          <li>
            <t>Accept the Instance Context Authority only if it is the token issuer
or an upstream token issuer explicitly trusted for that issuer and
consumer.</t>
          </li>
          <li>
            <t>Discard invalid context. If context is required and is missing or was
discarded, reject the request (<xref target="context-errors"/>).</t>
          </li>
        </ol>
        <t>Before using the context's association with the subject, actor, or
presenter in policy or audit, a Context Consumer <bcp14>MUST</bcp14> establish that
association from the applicable consuming profile and the validated
token or trusted introspection configuration.</t>
        <t>If the issuer might have preserved context from an input token, the
association is established only if that profile also defines how the
context's provenance is authenticated, because the object does not
record how the issuer obtained it. The <tt>client_instance</tt> object alone,
including whether its <tt>iss</tt> member matches the token issuer, establishes
neither the association nor the provenance.</t>
        <t>When trusted configuration establishes that the token issuer conveys
context only from direct Client Attestation validation, this
specification is the consuming profile. Context then identifies the
authenticated presenting instance (<xref target="format-and-mapping"/>), and
validating the token's sender constraint (<xref target="presenter-attribution"/>)
establishes the association. That configuration describes the issuer,
not the token, so it does not apply at an issuer that also preserves
context from input tokens. There, only a consuming profile carrying
provenance can distinguish directly validated context from preserved
context.</t>
        <t>If the association is not established, the Context Consumer <bcp14>MUST</bcp14> treat
context only as evidence of instance participation and <bcp14>MUST NOT</bcp14>
attribute the current request to that instance. In this case, a Context
Consumer whose configured requirement includes attribution <bcp14>MUST</bcp14> reject
the request as specified in <xref target="context-errors"/>.</t>
        <t>An issuer whose trust agreement with a Context Consumer states that it
conveys context only from direct Client Attestation validation <bcp14>MUST NOT</bcp14>
convey to that consumer Instance Context derived from anything other
than a Client Attestation it validated for the issuing request.</t>
        <t>For introspection, trusted endpoint configuration identifies the
expected token issuer. If present, a top-level <tt>iss</tt> member <bcp14>MUST</bcp14>
match that issuer; neither the endpoint URL nor the
<tt>client_instance.iss</tt> member selects the issuer. Multi-issuer
introspection requires a consuming profile that authenticates the
represented issuer. The <tt>iss</tt> value does not authorize fetching keys
from that location, and extensions <bcp14>MUST NOT</bcp14> change the meaning of the
<tt>iss</tt> or <tt>id</tt> member.</t>
      </section>
      <section anchor="context-errors">
        <name>Context Errors</name>
        <t>When required context is missing or invalid, or required attribution
cannot be established, the rejection <bcp14>MUST</bcp14> use the <tt>invalid_token</tt> error
code at a resource server (<xref section="3.1" sectionFormat="of" target="RFC6750"/>) or the
<tt>invalid_request</tt> error code for a rejected subject or actor token in an
exchange (<xref section="2.2.2" sectionFormat="of" target="RFC8693"/>).</t>
        <t>Retrying with a new access token (<xref section="3.1" sectionFormat="of" target="RFC6750"/>) does not
resolve a rejection for a missing sender constraint. When a resource
server rejects a request for that reason, it <bcp14>SHOULD</bcp14> include the
challenge for the binding mechanism it requires, such as the <tt>DPoP</tt>
scheme in <xref section="7.1" sectionFormat="of" target="RFC9449"/>, so that the client can
determine the required binding mechanism.</t>
        <t>Other consuming profiles define their own error mapping. Direct Client
Attestation failures follow <xref target="errors"/>.</t>
      </section>
    </section>
    <section anchor="relationship-to-other-identity-systems">
      <name>Relationship to Other Identity Systems</name>
      <t>This section compares this profile with client, workload, and agent
identity mechanisms; it adds no requirements.</t>
      <section anchor="client-id-metadata-documents">
        <name>Client ID Metadata Documents</name>
        <t>With <xref target="CIMD"/>, the metadata URL is the Logical Client's <tt>client_id</tt>,
and many installations can use it. Retrieving public metadata does not
prove that a caller is an authorized instance:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Mechanism</th>
              <th align="left">Contribution</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CIMD</td>
              <td align="left">Discovers Logical Client metadata and its authentication method</td>
            </tr>
            <tr>
              <td align="left">ATTEST</td>
              <td align="left">Authenticates an attester-approved instance and possession of its key</td>
            </tr>
            <tr>
              <td align="left">This profile</td>
              <td align="left">Retains instance identity across verified key changes and conveys optional downstream context</td>
            </tr>
          </tbody>
        </table>
        <t>One CIMD URL describes the Logical Client, and Instance Identifiers
belong in attestations, not per-installation metadata. The attestation's
<tt>sub</tt> claim is that URL, and the <tt>client_instance_id</tt> claim
distinguishes installations (<xref target="cimd-example"/>). CIMD removes
per-authorization-server registration of client metadata but not this
profile's trust agreement (<xref target="configuration"/>). <xref target="ATTESTER-ENDORSEMENT"/>
allows a client to endorse attesters through <tt>client_attesters</tt> metadata
(<xref section="3" sectionFormat="of" target="ATTESTER-ENDORSEMENT"/>), subject to authorization server
policy. That endorsement establishes the attester-to-client association
but does not select this profile or its continuity and privacy policy.</t>
      </section>
      <section anchor="workload-and-agent-credentials">
        <name>Workload and Agent Credentials</name>
        <t>A shared workload identity does not identify an individual instance;
the attester requires instance-level evidence under <xref target="continuity"/>.
Direct SPIFFE Verifiable Identity Document (SVID) authentication and
client mappings are defined by <xref target="SPIFFE-OAUTH"/>. An AAuth Agent
Provider <xref target="AAUTH"/> or workload attester can instead issue a Client
Attestation under this profile when it holds the required enrollment
evidence. Native credentials with different <tt>sub</tt> or <tt>typ</tt> semantics
require a separate carrier profile. A deployment authenticating only
with them conveys no Instance Context under this profile, which maps
context only from a validated Client Attestation
(<xref target="format-and-mapping"/>). These boundaries are illustrated in
<xref target="deployment-examples"/>.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref section="12" sectionFormat="of" target="ATTEST"/> and <xref target="RFC8725"/>
apply.</t>
      <section anchor="assurance">
        <name>Attester Compromise and Assurance</name>
        <t>Instance identifiers and continuity evidence are the attester's
assertions, which Receivers rely on only as far as they trust that
attester (<xref section="12.3" sectionFormat="of" target="ATTEST"/>). A compromised attester can
impersonate instances within its approved client associations. Receivers
limit those associations and configure acceptable evidence assurance. An
attester that overstates the assurance of its evidence defeats that
configuration. Self-reported, platform-verified, and hardware-rooted
evidence are not interchangeable. Without independent platform evidence,
copied keys and enrollment data can be indistinguishable from the
original; <xref target="continuity"/> governs detected forks and does not guarantee
clone detection. Instance identity proves no software integrity beyond
the evaluated evidence.</t>
      </section>
      <section anchor="re-enrollment">
        <name>Suspension and Re-enrollment</name>
        <t>Suspension at a Receiver applies to the Source Instance Identity that
Receiver recorded. An instance can appear under a different identity by
re-enrolling, which <xref target="continuity"/> requires after events such as a
reinstall, or by presenting an attestation scoped to another Receiver,
which the Receiver cannot detect (<xref target="receiver-scope"/>). Unless the
Receiver requires prior enrollment (<xref target="errors"/>), such an instance is
accepted as a new one. Suspension at the attester (<xref target="suspension"/>) stops
issuance only for the suspended enrollment: it does not prevent a
replacement enrollment unless the attester also controls admission of
new enrollments for that installation, and attestations issued before
the suspension remain usable until they expire. A Receiver that relies
on suspension for containment therefore requires prior enrollment, or
coordinates with the attester both suspension and admission control for
replacement enrollments, and accepts the window set by outstanding
attestation lifetimes.</t>
      </section>
      <section anchor="forwarding">
        <name>Forwarding</name>
        <t>Forwarding resistance is provided by <xref target="ATTEST"/> proof validation,
freshness, and key possession, not by identifier scope. The Client
Attestation has no audience; its proof-of-possession JWT identifies
the Receiver, and combined DPoP binds the HTTP request.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>The privacy considerations of <xref section="11" sectionFormat="of" target="ATTEST"/> apply.</t>
      <section anchor="correlation">
        <name>Correlation Across Receivers</name>
        <t>Separate identifiers and keys per Receiver Scope (<xref target="receiver-scope"/>)
limit correlation, strengthening the protections of
<xref section="11.1" sectionFormat="of" target="ATTEST"/>. Receivers <bcp14>MUST NOT</bcp14> assume that identifiers
are comparable across scopes; explicitly shared scopes permit
correlation.</t>
        <t>Attestations that an attester issues together for different Receiver
Scopes can also be correlated through matching <tt>iat</tt> and <tt>exp</tt> values.
<xref section="11.1" sectionFormat="of" target="ATTEST"/> recommends that the attester randomize or
round those values, which matters most here because this profile
issues a separate attestation for each Receiver Scope.</t>
      </section>
      <section anchor="token-binding-keys">
        <name>Token-Binding Keys</name>
        <t>Per-consumer Instance Context Identifiers do not prevent correlation
through a shared binding key. In DPoP combined mode
(<xref section="5.2" sectionFormat="of" target="ATTEST"/>), the Client Instance Key is the DPoP key,
so tokens for different Context Consumers can carry different <tt>id</tt>
values but the same <tt>cnf.jkt</tt>. When unlinkability between Context
Consumers is required, the client <bcp14>MUST</bcp14> use distinct token-binding keys
across those scopes, for example, DPoP without combined mode or a
distinct mutual-TLS certificate and key pair per scope. Other claims and
application data can also correlate requests. Identifier scoping does
not permit changing a refresh token's bound key (<xref target="grant-continuity"/>).</t>
        <t>The same applies between an authorization server and a resource server.
A client that authenticates to the authorization server in normal mode
and presents a resource-server-scoped key as its DPoP key, so that it
can use combined mode at that resource server (<xref target="receiver-scope"/>),
also exposes that key to the authorization server. The two Receivers
can then correlate through its thumbprint, even though their
identifiers and Client Instance Keys differ.</t>
      </section>
      <section anchor="attester-visibility">
        <name>Attester Visibility</name>
        <t>The attester learns any Receiver Scope the client supplies. Scoping an
identifier to a Receiver (<xref target="receiver-scope"/>) therefore reveals that
Receiver to the attester. This forgoes a property that <xref target="ATTEST"/> states
in its abstract: the client proves its authenticity without revealing
its target audience to the attester. This profile trades attester
visibility for unlinkability between Receivers.</t>
        <t>A single Receiver Scope spanning every Receiver the client uses limits
what the attester learns to that scope, at the cost of allowing those
Receivers to correlate the instance.</t>
      </section>
      <section anchor="disclosure">
        <name>Error Disclosure</name>
        <t>Error responses <bcp14>SHOULD NOT</bcp14> reveal unrelated instance identities.
<xref target="errors"/> governs status non-disclosure; <xref target="state"/> and
<xref target="mapping-stability"/> govern retention. Unpredictable
identifiers limit guessing and enumeration but are not authentication.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="json-web-token-claims">
        <name>JSON Web Token Claims</name>
        <t>This specification requests registration of the following values in
the "JSON Web Token Claims" registry established by <xref target="RFC7519"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim Name</th>
              <th align="left">Claim Description</th>
              <th align="left">Change Controller</th>
              <th align="left">Specification Document(s)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>client_instance_id</tt></td>
              <td align="left">Attester-qualified client instance identifier</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="claims"/> of this specification</td>
            </tr>
            <tr>
              <td align="left">
                <tt>client_instance</tt></td>
              <td align="left">Validated client instance context</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="instance-context"/> of this specification</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="oauth-token-introspection-response">
        <name>OAuth Token Introspection Response</name>
        <t>This specification requests registration of the following value in the
"OAuth Token Introspection Response" registry established by
<xref target="RFC7662"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Name: <tt>client_instance</tt></t>
          </li>
          <li>
            <t>Description: Validated client instance context</t>
          </li>
          <li>
            <t>Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document(s): <xref target="instance-context"/> of this specification</t>
          </li>
        </ul>
        <t>These registrations define claims and a response member, not subject
or actor profile values.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ATTEST">
          <front>
            <title>OAuth 2.0 Attestation-Based Client Authentication</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Paul Bastian" initials="P." surname="Bastian">
              <organization>Bundesdruckerei</organization>
            </author>
            <author fullname="Christian Bormann" initials="C." surname="Bormann">
              <organization>SPRIND</organization>
            </author>
            <date day="12" month="October" year="2026"/>
            <abstract>
              <t>   This specification defines an extension to the OAuth 2.0 protocol
   (RFC 6749) that enables a client instance to include a key-bound
   attestation when interacting with an Authorization Server or Resource
   Server.  This mechanism allows a client instance to prove its
   authenticity, as verified by a client attester, without revealing its
   target audience to that attester.  It may also serve as a mechanism
   for client authentication as per OAuth 2.0.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-12"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC6750">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </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="RFC7662">
          <front>
            <title>OAuth 2.0 Token Introspection</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This specification defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. OAuth 2.0 deployments can use this method to convey information about the authorization context of the token from the authorization server to the protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7662"/>
          <seriesInfo name="DOI" value="10.17487/RFC7662"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </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="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="AAUTH">
          <front>
            <title>AAuth Protocol</title>
            <author fullname="Dick Hardt" initials="D." surname="Hardt">
              <organization>Hellō</organization>
            </author>
            <date day="25" month="September" year="2026"/>
            <abstract>
              <t>   This document defines the AAuth authorization protocol for agent-to-
   resource authorization and identity claim retrieval.  The protocol
   supports five resource access modes — agent identity, resource-
   managed (two-party), person identity, PS authorization (three-party),
   and federated authorization (four-party) — with agent governance as
   an orthogonal layer.  It builds on the HTTP Signature Keys
   specification ([I-D.hardt-httpbis-signature-key]) for HTTP Message
   Signatures and key discovery.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hardt-oauth-aauth-protocol-11"/>
        </reference>
        <reference anchor="ACTOR-PROFILE">
          <front>
            <title>OAuth Actor Profile for Delegation</title>
            <author fullname="Karl McGuinness" initials="K." surname="McGuinness">
              <organization>Independent</organization>
            </author>
            <date day="8" month="October" year="2026"/>
            <abstract>
              <t>   This document defines a common representation of delegated actors in
   OAuth JSON Web Token (JWT) assertion grants, JWT access tokens, and
   Transaction Tokens.  It profiles the act claim defined by OAuth 2.0
   Token Exchange, requires issuer-scoped actor identifiers, and uses
   the sub_profile claim to classify actor entity types.  It specifies
   token processing, delegation-chain propagation, sender-constraint
   handling, and discovery metadata, so that issuers and resource
   servers in different trust domains interpret delegated actors
   consistently.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-actor-profile-01"/>
        </reference>
        <reference anchor="ATTESTER-ENDORSEMENT">
          <front>
            <title>OAuth 2.0 Client Attester Endorsement</title>
            <author fullname="Karl McGuinness" initials="K." surname="McGuinness">
              <organization>Independent</organization>
            </author>
            <date day="28" month="September" year="2026"/>
            <abstract>
              <t>   OAuth 2.0 Attestation-Based Client Authentication requires an
   authorization server to trust the attester that makes statements
   about a client instance, but does not define how a client identifies
   the attesters authorized to attest for it.  This specification
   defines a client metadata parameter, usable by registered clients and
   in Client ID Metadata Documents, that names the endorsed attesters
   and the locations of their verification keys.  It defines how an
   authorization server validates endorsements and processes their
   withdrawal while retaining control over whether to trust them.  It
   introduces no new credential or client authentication method.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-client-attesters-00"/>
        </reference>
        <reference anchor="CIMD">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Emelia Smith" initials="E." surname="Smith">
         </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism through which an OAuth client
   can identify itself to authorization servers, without prior dynamic
   client registration or other existing registration.  This is through
   the usage of a URL as a client_id in an OAuth flow, where the URL
   refers to a document containing the necessary client metadata,
   enabling the authorization server to fetch the metadata about the
   client as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-client-id-metadata-document-02"/>
        </reference>
        <reference anchor="RFC2104">
          <front>
            <title>HMAC: Keyed-Hashing for Message Authentication</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="M. Bellare" initials="M." surname="Bellare"/>
            <author fullname="R. Canetti" initials="R." surname="Canetti"/>
            <date month="February" year="1997"/>
            <abstract>
              <t>This document describes HMAC, a mechanism for message authentication using cryptographic hash functions. HMAC can be used with any iterative cryptographic hash function, e.g., MD5, SHA-1, in combination with a secret shared key. The cryptographic strength of HMAC depends on the properties of the underlying hash function. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2104"/>
          <seriesInfo name="DOI" value="10.17487/RFC2104"/>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </reference>
        <reference anchor="RFC7636">
          <front>
            <title>Proof Key for Code Exchange by OAuth Public Clients</title>
            <author fullname="N. Sakimura" initials="N." role="editor" surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Agarwal" initials="N." surname="Agarwal"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the authorization code interception attack. This specification describes the attack as well as a technique to mitigate against the threat through the use of Proof Key for Code Exchange (PKCE, pronounced "pixy").</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7636"/>
          <seriesInfo name="DOI" value="10.17487/RFC7636"/>
        </reference>
        <reference anchor="RFC8252">
          <front>
            <title>OAuth 2.0 for Native Apps</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>OAuth 2.0 authorization requests from native apps should only be made through external user-agents, primarily the user's browser. This specification details the security and usability reasons why this is the case and how native apps and authorization servers can implement this best practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="212"/>
          <seriesInfo name="RFC" value="8252"/>
          <seriesInfo name="DOI" value="10.17487/RFC8252"/>
        </reference>
        <reference anchor="RFC8417">
          <front>
            <title>Security Event Token (SET)</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This specification defines the Security Event Token (SET) data structure. A SET describes statements of fact from the perspective of an issuer about a subject. These statements of fact represent an event that occurred directly to or about a security subject, for example, a statement about the issuance or revocation of a token on behalf of a subject. This specification is intended to enable representing security- and identity-related events. A SET is a JSON Web Token (JWT), which can be optionally signed and/or encrypted. SETs can be distributed via protocols such as HTTP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8417"/>
          <seriesInfo name="DOI" value="10.17487/RFC8417"/>
        </reference>
        <reference anchor="RFC8935">
          <front>
            <title>Push-Based Security Event Token (SET) Delivery Using HTTP</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="M. Jones" initials="M." role="editor" surname="Jones"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This specification defines how a Security Event Token (SET) can be delivered to an intended recipient using HTTP POST over TLS. The SET is transmitted in the body of an HTTP POST request to an endpoint operated by the recipient, and the recipient indicates successful or failed transmission via the HTTP response.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8935"/>
          <seriesInfo name="DOI" value="10.17487/RFC8935"/>
        </reference>
        <reference anchor="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="SPIFFE-OAUTH">
          <front>
            <title>OAuth SPIFFE Client Authentication</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Scott Rose" initials="S." surname="Rose">
              <organization>NIST</organization>
            </author>
            <author fullname="Stian Thorgersen" initials="S." surname="Thorgersen">
              <organization>IBM</organization>
            </author>
            <author fullname="Nancy Cam-Winget" initials="N." surname="Cam-Winget">
              <organization>Cisco Systems</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   This specification profiles the Assertion Framework for OAuth 2.0
   Client Authentication and Authorization Grants [RFC7521], the JWT
   Profile for OAuth 2.0 Client Authentication and Authorization Grants
   [RFC7523], and OAuth 2.0 Attestation-Based Client Authentication
   [I-D.draft-ietf-oauth-attestation-based-client-auth] to enable the
   use of SPIFFE Verifiable Identity Documents (SVIDs) as client
   credentials in OAuth 2.0.  It defines how OAuth clients with SPIFFE
   credentials can authenticate to OAuth authorization servers using
   their JWT-SVIDs, WIT-SVIDs, or X509-SVIDs without the need for client
   secrets.  This approach enhances security by enabling seamless
   integration between SPIFFE-enabled workloads and OAuth authorization
   servers while eliminating the need to distribute and manage shared
   secrets such as static client secrets.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-spiffe-client-auth-03"/>
        </reference>
      </references>
    </references>
    <?line 981?>

<section anchor="wire-examples">
      <name>Wire Examples</name>
      <t>These examples are informative. The first two use the managed-device
flow (<xref target="managed-device-example"/>): the user is the authorization
subject, and the installation appears as Instance Context. The
authorization server maps the attester's identifier to a value scoped to
<tt>https://api.example</tt>.</t>
      <section anchor="access-token-payload">
        <name>Access Token Payload</name>
        <t>The following example shows a decoded <xref target="RFC9068"/> access token
payload; its JOSE header contains a <tt>typ</tt> value of <tt>at+jwt</tt>. The <tt>jkt</tt>
member of the <tt>cnf</tt> claim identifies the public key in
<xref target="attestation-example"/>.</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://as.example",
  "sub": "user-17",
  "aud": "https://api.example",
  "client_id": "https://platform.example/oauth-client",
  "iat": 1789128000,
  "exp": 1789128300,
  "jti": "at-95a76b823",
  "scope": "documents.read",
  "cnf": {
    "jkt": "Ak20Cf62SpTybasujYXbaI-Ms655MyvOZCtnnf8y1QU"
  },
  "client_instance": {
    "iss": "https://as.example",
    "id": "m-95c9f383a07468578c0329a9a660740f"
  }
}
]]></sourcecode>
      </section>
      <section anchor="introspection-response">
        <name>Introspection Response</name>
        <t>The following example shows an authenticated introspection response
conveying the same context for an opaque access token. The
resource server has configured this endpoint as authoritative for
<tt>https://as.example</tt>. The top-level <tt>iss</tt> member names the token
issuer, and the nested <tt>iss</tt> member names the Instance Context
Authority; here they are the same authorization server.</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "active": true,
  "iss": "https://as.example",
  "sub": "user-17",
  "aud": "https://api.example",
  "client_id": "https://platform.example/oauth-client",
  "scope": "documents.read",
  "exp": 1789128300,
  "cnf": {
    "jkt": "Ak20Cf62SpTybasujYXbaI-Ms655MyvOZCtnnf8y1QU"
  },
  "client_instance": {
    "iss": "https://as.example",
    "id": "m-95c9f383a07468578c0329a9a660740f"
  }
}
]]></sourcecode>
      </section>
      <section anchor="governed-actor-and-instance-context">
        <name>Governed Actor and Instance Context</name>
        <t>A consuming profile can authorize instance <tt>B</tt> to continue work that
instance <tt>A</tt> began for the same governed agent. Here that profile
authorizes <tt>agent-42</tt> to act for <tt>user-17</tt> under <xref target="ACTOR-PROFILE"/> and
selects the authenticated presenting instance for output context. The
authorization server validates <tt>B</tt>'s attestation and proof, replaces
<tt>A</tt>'s input context with <tt>B</tt>'s mapping for the resource server's
Consumer Scope, and binds the output token under the consuming profile.
The following example shows the relevant output claims:</t>
        <sourcecode type="json"><![CDATA[
{
  "sub": "user-17",
  "aud": "https://api.example",
  "act": {
    "iss": "https://as.example",
    "sub": "agent-42"
  },
  "client_instance": {
    "iss": "https://as.example",
    "id": "m-a524d3cc4ba2df62c17f080e8779794d"
  }
}
]]></sourcecode>
        <t>The governed actor remains <tt>agent-42</tt>; the mapped identifier is <tt>B</tt>'s.
Neither <tt>B</tt>'s authentication nor continuity of the agent identity
alone authorizes this exchange. A profile that instead preserved <tt>A</tt>'s
context would have to define that upstream association explicitly.</t>
      </section>
      <section anchor="attestation-rejection">
        <name>Attestation Rejection</name>
        <t>The following example shows a token endpoint response when a required
instance claim is missing or local policy rejects the instance
(<xref target="errors"/>). It does not reveal whether the instance is unknown,
suspended, or retired.</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_client_attestation"
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="deployment-examples">
      <name>Deployment Examples</name>
      <t>The following informative examples share three steps. <tt>C1</tt> is the
Logical Client; <tt>I1</tt> and <tt>K1</tt> are an Instance Identifier and key scoped
to the authorization server.</t>
      <ol spacing="normal" type="1"><li>
          <t>The attester verifies enrollment evidence and possession of <tt>K1</tt>,
then issues the attestation in <xref target="claims"/>: <tt>iss</tt> naming the attester,
<tt>sub=C1</tt>, <tt>client_instance_id=I1</tt>, and <tt>cnf.jwk</tt> holding public key
<tt>K1</tt>.</t>
        </li>
        <li>
          <t>The client presents its grant, attestation, and combined DPoP proof
using <tt>K1</tt> at the authorization server token endpoint.</t>
        </li>
        <li>
          <t>The authorization server validates them and issues a DPoP-bound token
with mapped context <tt>M1</tt>, scoped to the resource. The resource server
validates the token, proof, and context without seeing the enrollment
evidence.</t>
        </li>
      </ol>
      <section anchor="cimd-example">
        <name>CIMD Client</name>
        <t>Let <tt>C1</tt> be <tt>https://platform.example/oauth-client</tt>, whose CIMD declares
<tt>attest_jwt_client_auth_dpop</tt> (<xref section="A" sectionFormat="of" target="ATTESTER-ENDORSEMENT"/>
has a metadata example). The authorization server validates the CIMD and
trusts the attester through configuration or an accepted
<tt>client_attesters</tt> endorsement. Key renewal does not change the CIMD.
User-authorized access follows <xref target="managed-device-example"/>.</t>
      </section>
      <section anchor="aauth-example">
        <name>AAuth Agent Provider</name>
        <t>At step 1, the Agent Provider verifies managed installation evidence
and issues a Client Attestation. Native <tt>aa-agent+jwt</tt> credentials and
HTTP Message Signatures <xref target="RFC9421"/> do not replace the attestation or
the proof. Step 2 uses a pre-authorized client credentials grant;
AAuth metadata alone does not establish attester trust.</t>
      </section>
      <section anchor="spiffe-example">
        <name>SPIFFE Workload</name>
        <t>At step 1, the workload uses an X.509-SVID from the Workload API for
mutual TLS. The attester validates its trust domain and runtime
evidence binding this container to <tt>K1</tt>; a shared SPIFFE ID cannot
distinguish replicas. Step 2 uses client credentials with the
resulting attestation. With the container as the Execution unit, a
restart requires new enrollment; SVID renewal within a continuing
container does not.</t>
      </section>
      <section anchor="managed-device-example">
        <name>Managed Device</name>
        <t>At step 1, a management component verifies the installed client and
its platform-protected <tt>K1</tt>, using app-attestation evidence where
available. Device enrollment or key storage alone does not identify
the installation. Before step 2, the client obtains a code through an
external browser <xref target="RFC8252"/> with PKCE <tt>S256</tt> <xref target="RFC7636"/>, then
redeems it with the code verifier, redirect URI, <tt>C1</tt>, attestation,
and DPoP proof. The browser receives neither attestation nor proof.
Process restarts can retain the installation identity; reinstallation
requires new enrollment.</t>
      </section>
    </section>
    <section numbered="false" anchor="history">
      <name>Document History</name>
      <t><em>RFC EDITOR: Remove this section before publication.</em></t>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Retitled "OAuth 2.0 Client Instance Identifiers".</t>
        </li>
        <li>
          <t>Aligned with draft-ietf-oauth-attestation-based-client-auth-12 and
updated other references: <tt>iat</tt> is required, errors use its HTTP
status codes, and per-scope attestations can correlate through <tt>iat</tt>
and <tt>exp</tt>.</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial version, replacing
draft-mcguinness-oauth-client-instance-assertion-01. Instance identity
moves into the Client Attestation as the <tt>client_instance_id</tt> claim.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
Mle2cyL0q6IgeYGiS+Rd8LILdDMdAFQYhRedRLf6ukoEI/EAKEwwpWHQs7Ze
dtfwT/wuiIWldiuSZlNk30Ylt4caTuzWL1/uZaLGV8D3Fdnrs7ENxvkUOcit
vLkoYEpeFREb0WS8PhL9M6HPbDrv3v7MBNogJYGsaH9/+aLC0+8yH5fA24RU
YuOQ3sarZBmSrF/WawenBYP0okQbmbfyfNOZFK1qJaHwGmyMvE2kTlusc3iy
UKoKU8GJIg4AfiYvB/YJ2ADYv2O1scTjXKKaRQLhOpt6RSbxAr8vG7WSiX4w
1N27EomQw3KCgiyEz/HTz9mbTQPWVJF9Dp/BxqP/wg96yv9bxyb3ss8xvsET
Y1NfFoOP989VWc3LNQw3eFKPB5BoAXb/BUsb9MRonL6Jljw/pgXws+K3Yr7p
zDYsdGK6nzBywA2OvAaSv67boqeccfc2qxwFCanD7747dm/b/+67wQwmomHI
PoNNi5KK9h1EoZx2FHvA8rhJOO6RzlgH3VSobNI5oq/fokCBY8yChsdCxWa2
FOmQnzagK6oCvZk39WLrpNQdgefxfd+0wGrLgpRoCEcV8NaKXowqvVnIeQRK
gTQal9ZgcMO6kI75AiwfOR4fCxBOyNLlxQYPhTviQReDYalVnS+Yl9VWXBTt
BzAWcUlX9TmZ9NGybFERtSG6UvAs7C3Kf7AdiyZfTdfC2gsQ/rCfMMw17FTh
/S9W9mCvm+aUY4zCqzAaTFBOTMnso22Godj+mqIV2ZTntHtBIw4z5+rAGnHS
wlz57/hhYOtU8xUYe7BZCzjJ4IGrnp+KnhejlwdwAvixdzHu9ZzpsAHDsslY
tuBG0OMoILvEZZKpqskaDTLv5KkZq/HAdE28ErXjF4uS3dLQShAyQ4UEssBP
PfWP7pGNYRuCrkEuxnJknm9adaMW4xNB+cfedcUyGon9HDeX1S8LAbT7rom9
77x8d3J6Z8L/n716Tf9+e/TXd8dvj57jv09+PPz5Z/tHkF+c/Pj63c/P47/i
k89ev3x59Oo5PwyfZslH4c7Lw7/fYQV15/Wb0+PXrw5/vsNWMNBX40LE1GA8
nKOkAV0Ku08iEi3/dg6cx5bzp0//44dnb3YfgL4AulIkafcpqmH+68nu4wf4
F6pIfiWZDPwnEO0moBmXN2SqrVZg361LkGp4OuCQX6KhgH4hkPS7/4nk+V/7
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
PpVGzQAA

-->

</rfc>
