<?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-attesters-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Client Attester Endorsement">OAuth 2.0 Client Attester Endorsement</title>
    <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-client-attesters-00"/>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="28"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>OAuth</keyword>
    <keyword>client attestation</keyword>
    <keyword>client metadata</keyword>
    <abstract>
      <?line 55?>

<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>
    <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-attesters/draft-mcguinness-oauth-client-attesters.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mcguinness-oauth-client-attesters/"/>.
      </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-attesters"/>.</t>
    </note>
  </front>
  <middle>
    <?line 68?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth 2.0 Attestation-Based Client Authentication (ATTEST) <xref target="ATTEST"/>
enables a Client Attester to make security-relevant statements about a
Client Instance and the key it holds. Before an authorization server
(AS) relies on such an attestation, it determines two things: whether
the attester is trusted (<xref section="7.1" sectionFormat="of" target="ATTEST"/>) and whether that
attester is authorized to attest for this particular client.</t>
      <t>ATTEST defines the Client Attestation format, presentation, and
validation, and places the establishment of trust in Client Attesters
outside its scope (<xref section="10.8" sectionFormat="of" target="ATTEST"/>). It defines no
relationship by which a client identifies the attesters authorized to
attest its instances.</t>
      <t>That relationship is needed when a client has many independently
provisioned instances, uses a platform or workload attester, migrates
between attesters, or is identified by a Client ID Metadata Document
(CIMD) <xref target="CIMD"/> rather than by pre-established bilateral configuration.
If the authorization server configures every client-to-attester
association, the client cannot withdraw or narrow its attesters without
the involvement of the authorization server.</t>
      <t>This specification makes the relationship explicit with a Client
Attester Endorsement in client metadata:</t>
      <artwork type="ascii-art"><![CDATA[
Client metadata --endorses--> Attester --attests--> Client Instance
       \__________________ AS validates __________________/
]]></artwork>
      <t>An endorsement states that the client publisher authorizes the named
Client Attester to attest for the client. It does not make that attester
trusted by the authorization server, which still decides whether to
accept the endorsed attester and how to trust its verification keys
(<xref target="trust"/>). The <tt>client_attesters</tt> client metadata parameter
(<xref target="metadata"/>) carries the endorsed attesters and their verification-key
locations. It can be used by registered clients and by clients
identified by a CIMD, and it can hold several endorsements, for example
across heterogeneous platforms or during attester migration.</t>
      <t>This separates two distinct authorities:</t>
      <ul spacing="normal">
        <li>
          <t>the client publisher determines which attesters are authorized to
attest for the client; and</t>
        </li>
        <li>
          <t>the authorization server determines which of those endorsements it is
willing to trust.</t>
        </li>
      </ul>
      <t>The client publisher thus manages its attester associations without
gaining control of authorization server trust policy. It can always
withdraw or narrow its endorsements. Adding an attester or moving its
key location takes effect without authorization server action only where
the authorization server authorizes the publisher to select keys; where
the authorization server configures attester trust itself, the change
also requires acceptance by the authorization server (<xref target="trust"/>).</t>
      <t>This profile builds on ATTEST and introduces no new credential or client
authentication method. ATTEST, this profile, and the optional Client
Instance ID profile <xref target="INSTANCE-ID"/> address separate layers:</t>
      <artwork type="ascii-art"><![CDATA[
Client Attester Endorsement    Who may attest for this client?
             |
             v
ATTEST                         Is this a legitimate instance holding
             |                 this key now?
             v
Client Instance ID (optional)  Which persistent instance is this?
]]></artwork>
      <t>Endorsement carries no instance semantics, and instance identification
does not establish attester trust. Neither establishes user delegation.</t>
      <t>Deployments that can manage client-to-attester associations entirely
through authorization server configuration can use <xref target="ATTEST"/> without
this profile. This profile is intended for deployments in which the
client publisher expresses and maintains that association, subject to
authorization server policy (<xref target="acceptance"/>).</t>
    </section>
    <section anchor="trust">
      <name>Conventions and Trust Model</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 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This specification uses the OAuth 2.0 terms defined in <xref target="RFC6749"/>. The
terms Client Attestation, Client Attester, Client Instance, and Client
Instance Key are used as defined in <xref target="ATTEST"/>.</t>
      <dl>
        <dt>client publisher</dt>
        <dd>
          <t>The party authorized to publish the endorsements for a <tt>client_id</tt>:
for a client identified by a CIMD, the party that controls that
document; for a registered client, the party authorized to set its
endorsements (<xref target="registered"/>).</t>
        </dd>
        <dt>Client Attester Endorsement</dt>
        <dd>
          <t>A statement in the authoritative client metadata for a <tt>client_id</tt>
identifying a Client Attester whose Client Attestations naming that
<tt>client_id</tt> are eligible for acceptance under this profile, subject to
authorization server policy (<xref target="acceptance"/>). It expresses the
publisher's authorization for that attester to attest for the client;
it does not specify which Client Instances the attester may attest,
which <xref target="processing"/> leaves to the attester. An endorsement delegates
attestation authority for the named client only. It does not delegate
OAuth authorization, user authority, or authority to further delegate
attestation.</t>
        </dd>
      </dl>
      <section anchor="acceptance">
        <name>Acceptance Policy</name>
        <t>For requests governed by this profile, the authorization server <bcp14>MUST</bcp14>
accept a Client Attestation only when both of the following hold:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Client endorsement:</strong> the authoritative metadata for the requested
<tt>client_id</tt> currently endorses the attestation's issuer
(<xref target="metadata"/>).</t>
          </li>
          <li>
            <t><strong>Authorization server attester acceptance:</strong> authorization server
policy permits that attester for that client and determines how the
attester's verification keys are trusted (<xref target="key-resolution"/>).</t>
          </li>
        </ol>
        <t>Endorsement alone does not make an attester trusted, and authorization
server trust in an attester alone does not authorize it for a client.
Authorization server policy can narrow the endorsed set, and authorizing
a publisher to select keys permits each attester that publisher
endorses, subject to <xref target="key-resolution"/>. Authorization server policy
<bcp14>MUST NOT</bcp14> add an unendorsed attester or accept an attestation through
another attester-trust mechanism. Where the attestation is optional,
proceeding on a companion client authentication method without it
(<xref target="errors"/>) is not such a fallback. An endorsement does not by itself
establish that the client is trusted or authorized to access a resource.</t>
        <t>This specification defines two key-trust policies, and authorization
server policy determines which one applies. The policy cannot be chosen
independently for each association: AS-configured attester trust is
keyed by the exact issuer string and, once configured for any client,
governs that issuer string for every client. Publisher-authorized key
selection is keyed by the client publisher and requires no per-attester
configuration. The two policies are defined as follows;
<xref target="key-resolution"/> specifies the procedure that selects between them:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Publisher-authorized key selection:</strong> the authorization server
authorizes the publisher of specified clients to select both the
attester and its key source, so the endorsed <tt>jwks_uri</tt> supplies the
keys. For CIMD clients, the authorization server configures exact
client URLs or HTTPS origins, optionally restricted to a path prefix.
A prefix matches only at a <tt>/</tt> segment boundary. A client URL whose
path contains <tt>\</tt>, <tt>;</tt>, or a percent-encoded <tt>/</tt>, <tt>\</tt>, or <tt>.</tt> matches
no prefix, because a server can decode or route such a path to a
different document than the one compared. Client identifier comparison
itself remains exact. A path prefix is a publisher boundary only where
the host serves each path under it from the publisher it names; shared
hosting requires such a boundary. Successful metadata retrieval does
not establish this authorization. For a registered client, the
publisher is the party authorized to set endorsements under
<xref target="registered"/>, and the authorization server configures whether that
party's endorsements select keys.</t>
          </li>
          <li>
            <t><strong>AS-configured attester trust:</strong> the authorization server
independently trusts a particular attester and configures its key
source. The endorsement authorizes that attester to attest for the
client; it cannot supply the trust anchor (<xref target="key-resolution"/>).</t>
          </li>
        </ul>
        <t>Publisher-authorized key selection serves deployments in which
per-attester configuration is impractical: an authorization server
serving many CIMD clients, each published by a different operator and
attested by that operator's own platform attester, would otherwise need
a configured entry for every attester of every client before any of them
could authenticate.</t>
        <t>When combined with <xref target="INSTANCE-ID"/>, the same two conditions establish
attester authority; instance continuity remains independent.</t>
      </section>
      <section anchor="registered">
        <name>Registered Endorsements</name>
        <t>Registered endorsements <bcp14>MUST</bcp14> originate from a party authenticated and
authorized to set them for that client, or be covered by a validated
software statement from an issuer approved for that purpose under
<xref target="RFC7591"/>. Open registration alone provides neither assurance; issuing
a client credential does not retroactively approve its endorsements. The
same restriction applies to endorsement updates, including updates made
through the registration management protocol <xref target="RFC7592"/>. Possession of
a registration access token establishes control of the registration, not
authority to endorse, and <bcp14>MUST NOT</bcp14> by itself authorize setting or
replacing <tt>client_attesters</tt>. Removing the parameter, including by
omitting it from an update that <xref target="RFC7592"/> treats as a deletion
request, is treated as replacing it.</t>
        <t>An authorization server that does not accept a submitted value or
removal of <tt>client_attesters</tt> <bcp14>MUST</bcp14> either reject the request with the
<tt>invalid_client_metadata</tt> error code (<xref section="3.2.2" sectionFormat="of" target="RFC7591"/>) or
keep the previously stored value, if any, instead of the submitted one,
as <xref section="2.2" sectionFormat="of" target="RFC7592"/> permits for an ignored value. The client
information response (<xref section="3.2.1" sectionFormat="of" target="RFC7591"/>) then never contains
an endorsement the authorization server has not accepted, and an
unauthorized request never removes a stored endorsement.</t>
      </section>
      <section anchor="profile-selection">
        <name>Applicability and Scope</name>
        <t>Authorization server policy, which can be scoped per client, determines
whether this profile applies to a request; this out-of-band
determination satisfies <xref section="13" sectionFormat="of" target="ATTEST"/>. The presence or
absence of <tt>client_attesters</tt> does not determine whether this profile
applies, and publishing it does not require an authorization server to
apply this profile. This profile is independent of how an authorization
server processes unrecognized metadata in a CIMD, which <xref target="CIMD"/> leaves
unspecified. An authorization server advertises the capability with the
<tt>client_attester_endorsement_supported</tt> metadata parameter
(<xref target="as-metadata"/>). Because that parameter applies to the authorization
server as a whole, deployments relying on endorsement enforcement
establish through a trust agreement that the authorization server
applies this profile to their clients. A trust agreement is the
out-of-band arrangement between the authorization server operator and
the client publisher or attester operator that fixes which policies the
authorization server applies.</t>
        <t>This profile applies at authorization server endpoints that accept
Client Attestations for client authentication or as an additional
security signal: typically the token endpoint, the pushed authorization
request endpoint <xref target="RFC9126"/>, the device authorization endpoint
<xref target="RFC8628"/>, and the introspection <xref target="RFC7662"/> and revocation
<xref target="RFC7009"/> endpoints. The authorization endpoint does not authenticate
clients and is outside the scope of this specification. A party
authenticating at any of these endpoints acts as a client, including a
resource server presenting a Client Attestation to the introspection
endpoint. Where a flow authenticates more than once, each presentation
is evaluated on its own under <xref target="as-processing"/>. This profile retains
the wire format, proof methods, and token binding of ATTEST.</t>
        <t>A resource server that accepts a Client Attestation presented to it
(<xref section="7.6" sectionFormat="of" target="ATTEST"/>) relies on configured attester trust; this
profile does not define endorsement discovery or acceptance there. This
keeps client metadata resolution and endorsement policy at the
authorization server rather than at each resource server. As a
consequence, withdrawing an endorsement (<xref target="updates"/>) has no effect at a
resource server that validates attestations directly.</t>
        <t>The authorization server conveys its decision through the artifacts it
issues, not through endorsement data, and what they carry depends on the
deployment's token-binding method. In the combined mode defined in
<xref section="5.2" sectionFormat="of" target="ATTEST"/>, the Demonstrating Proof of Possession (DPoP)
key <xref target="RFC9449"/> and the attested Client Instance Key are one key, so the
issued token's confirmation claim names the attested key. Where DPoP is
used alongside a separate Client Attestation proof, that section does
not require the DPoP key to match the key in the <tt>cnf</tt> claim of the
attestation, and the token is bound to the DPoP key instead. In both
cases, a confirmation claim reports a key binding, not an endorsement
decision, and introspection <xref target="RFC7662"/> reports the token's state, not
how the authorization server evaluated the endorsement. Neither
indicates to a resource server whether an endorsement was accepted;
endorsement policy therefore remains at the authorization server.</t>
      </section>
      <section anchor="conformance">
        <name>Conformance</name>
        <t>Conformance requirements depend on the role:</t>
        <ul spacing="normal">
          <li>
            <t>Client publishers publish and maintain <tt>client_attesters</tt> under
<xref target="metadata"/>, and withdraw an endorsement by updating that metadata
(<xref target="updates"/>).</t>
          </li>
          <li>
            <t>Client Attesters and clients implement their issuance and presentation
requirements in <xref target="processing"/>.</t>
          </li>
          <li>
            <t>Authorization servers implement key-trust policy selection, metadata
and key validation, processing, and withdrawal, and can advertise
support under <xref target="as-metadata"/>.</t>
          </li>
        </ul>
        <t>An implementation serving several roles satisfies each role's
requirements. Instance identification is optional.</t>
      </section>
    </section>
    <section anchor="metadata">
      <name>Client Metadata</name>
      <t>The <tt>client_attesters</tt> parameter is <bcp14>OPTIONAL</bcp14> client metadata, usable in
registered client metadata (including <xref target="RFC7591"/>) or a CIMD. Its value
is a JSON array of objects, each a Client Attester Endorsement
(<xref target="trust"/>) for the <tt>client_id</tt> whose metadata contains it:</t>
      <table>
        <name>Members of a client_attesters entry</name>
        <thead>
          <tr>
            <th align="left">Member</th>
            <th align="left">Requirement</th>
            <th align="left">Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>issuer</tt></td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>, nonempty StringOrURI <xref target="RFC7519"/></td>
            <td align="left">Exact <tt>iss</tt> claim value of the endorsed Client Attester</td>
          </tr>
          <tr>
            <td align="left">
              <tt>jwks_uri</tt></td>
            <td align="left">
              <bcp14>REQUIRED</bcp14>, HTTPS URL without userinfo or fragment</td>
            <td align="left">Location of the attester's public JSON Web Key (JWK) Set <xref target="RFC7517"/></td>
          </tr>
        </tbody>
      </table>
      <t>An <tt>issuer</tt> value identifies a namespace, not a discovery endpoint. An
issuer <bcp14>MUST NOT</bcp14> occur more than once in the array. A missing or empty
array authorizes no attester. An entry is malformed if it violates the
requirements in the table above. The authorization server <bcp14>MUST</bcp14>:</t>
      <ul spacing="normal">
        <li>
          <t>reject <tt>client_attesters</tt> for this profile if an entry is malformed
or an issuer occurs more than once, using no endorsement from the
list; and</t>
        </li>
        <li>
          <t>ignore unrecognized members.</t>
        </li>
      </ul>
      <t>Rejection under this profile does not affect the client's other
authentication methods and does not by itself make a CIMD invalid or
uncacheable under <xref target="CIMD"/>. An extension to this parameter is safe only
if an implementation that ignores it interprets the endorsement the same
way; this specification defines no means to mark an extension as
critical.</t>
      <t>Endorsed keys authenticate attesters, not clients. A key obtained from
an endorsement <bcp14>MUST NOT</bcp14> be used to verify a client authentication
assertion, and a key from the client's own <tt>jwks</tt> or <tt>jwks_uri</tt> <bcp14>MUST
NOT</bcp14> be used to verify a Client Attestation. An entry whose <tt>jwks_uri</tt>
is identical to the client's own <tt>jwks_uri</tt> is also malformed.</t>
      <t>An endorsement identifies a Client Attester by both issuer and key
location. The publisher cannot know which key-trust policy the
authorization server applies, so each entry carries a complete
issuer-to-key-location mapping that has the same meaning under either
policy; <xref target="key-resolution"/> specifies how each policy uses the location.</t>
      <t><xref section="10.8" sectionFormat="of" target="ATTEST"/> recommends, among other options, resolving
the <tt>kid</tt> header parameter through client metadata, such as the
<tt>jwks_uri</tt> parameter. This profile applies that option through a
separate key location for each endorsed issuer, not through the client's
own <tt>jwks_uri</tt>. The client's own <tt>jwks_uri</tt> can hold several issuers'
keys, but it neither associates them with named attesters nor separates
them from client authentication keys, so it does not replace
<tt>client_attesters</tt>.</t>
      <t>Secure Production Identity Framework for Everyone (SPIFFE) client
authentication <xref target="SPIFFE-OAUTH"/> publishes one verification-key location
per trust domain in the <tt>spiffe_bundle_endpoint</tt> client metadata
parameter. Under AS-configured attester trust, the endorsed <tt>jwks_uri</tt>
serves that function for each named attester, but the key source is
established out of band and the endorsed location is only compared
against it. Publisher-authorized key selection lets the publisher name
the location, so it does not substitute for SPIFFE bundle configuration.</t>
      <t>Clients using attestation as client authentication use the value
<tt>attest_jwt_client_auth</tt> or <tt>attest_jwt_client_auth_dpop</tt> in the
<tt>token_endpoint_auth_method</tt> client metadata parameter
(<xref section="9" sectionFormat="of" target="ATTEST"/>). When attestation supplements another method
(<xref section="7.6" sectionFormat="of" target="ATTEST"/>), that method still authenticates the client.
The <tt>client_attesters</tt> parameter does not select a grant type, proof
method, or the optional instance-identification profile.</t>
    </section>
    <section anchor="as-metadata">
      <name>Authorization Server Metadata</name>
      <t>In addition to the parameters in <xref section="8" sectionFormat="of" target="ATTEST"/>, this
specification defines the following <bcp14>OPTIONAL</bcp14> authorization server
metadata parameter <xref target="RFC8414"/>:</t>
      <dl>
        <dt><tt>client_attester_endorsement_supported</tt></dt>
        <dd>
          <t>Boolean value indicating whether the authorization server supports
processing the <tt>client_attesters</tt> client metadata parameter as defined
in this specification. If omitted, the default value is <tt>false</tt>.</t>
        </dd>
      </dl>
      <t>Whether this profile governs a particular client, and which key-trust
policy applies to an attester, remain matters of authorization server
policy (<xref target="profile-selection"/>, <xref target="acceptance"/>).</t>
    </section>
    <section anchor="processing">
      <name>Attestation and Authorization Server Processing</name>
      <t>This section specifies Client Attestation content, the authorization
server's validation order, key selection, and error reporting.</t>
      <section anchor="issuance-and-presentation">
        <name>Issuance and Presentation</name>
        <t>Requests under this profile <bcp14>MUST</bcp14> include the <tt>client_id</tt> parameter to
select the client metadata; that parameter alone does not authenticate
the client.</t>
        <t>This narrows <xref section="7.1" sectionFormat="of" target="ATTEST"/>, which compares <tt>client_id</tt> with
the <tt>sub</tt> claim only when the request includes it. This profile selects
the client metadata from the <tt>client_id</tt> parameter rather than from the
<tt>sub</tt> claim, and step 4 of <xref target="as-processing"/> then requires the two to be
equal. When this profile applies to a request that omits <tt>client_id</tt>,
the authorization server <bcp14>MUST</bcp14> reject the request with the
<tt>invalid_request</tt> error code (<xref section="5.2" sectionFormat="of" target="RFC6749"/>).</t>
        <t>The Client Attester <bcp14>MUST</bcp14> establish that the requesting Client Instance
is authorized to obtain a Client Attestation naming the specified
<tt>client_id</tt>. The attester <bcp14>MUST NOT</bcp14> treat knowledge of the <tt>client_id</tt>
or possession of a newly generated key, alone or together, as
sufficient. How the attester establishes this authorization is outside
the scope of this specification.</t>
        <t>The attester <bcp14>MUST</bcp14> include the following in the Client Attestation:</t>
        <ul spacing="normal">
          <li>
            <t>the <tt>iss</tt> claim, containing its endorsed <tt>issuer</tt> value;</t>
          </li>
          <li>
            <t>the <tt>sub</tt> claim, containing the exact client identifier; and</t>
          </li>
          <li>
            <t>the <tt>kid</tt> JOSE header parameter <xref target="RFC7515"/>, containing a nonempty
value that identifies its signing key.</t>
          </li>
        </ul>
        <t><xref section="4" sectionFormat="of" target="ATTEST"/> does not require the <tt>iss</tt> claim. This profile
requires it because a client can endorse several Client Attesters with
independent key sets: the issuer selects the endorsement and key source
before the <tt>kid</tt> value is resolved, and a <tt>kid</tt> value identifies a key
within a JWK Set, not a Client Attester or a trust relationship.</t>
        <t>This profile retains, without relaxation, the default requirement of
<xref section="7.5" sectionFormat="of" target="ATTEST"/> that the <tt>client_id</tt> parameter equal the <tt>sub</tt>
claim, so an endorsement for one client cannot validate an attestation
naming another. Other claims and proof requirements follow <xref target="ATTEST"/>.</t>
      </section>
      <section anchor="as-processing">
        <name>Authorization Server Processing</name>
        <t>For each presentation, the authorization server <bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Before evaluating endorsements, select the authoritative metadata
source for the requested <tt>client_id</tt> using authorization server
registration or discovery policy. Obtain metadata from that source or
a fresh cache, following the resolution and validation rules of
<xref target="CIMD"/> or registered metadata policy, including <xref target="registered"/>. The
authorization server <bcp14>MUST NOT</bcp14> combine endorsement lists from
different sources or switch sources because endorsement validation
fails. A client identifier with both a registration and a reachable
CIMD is resolved from the single source this step selects; an
endorsement validation failure from that source is final.</t>
          </li>
          <li>
            <t>Validate <tt>client_attesters</tt> and select the entry whose <tt>issuer</tt>
member exactly matches the nonempty <tt>iss</tt> claim of the attestation;
because an issuer occurs at most once in the array (<xref target="metadata"/>),
the selection is unique. Verify that authorization server policy
permits that client-to-attester association; selecting an entry does
not by itself authorize it. Policy evaluates the selected entry,
including its <tt>jwks_uri</tt>, not the issuer alone. Agreement between
that <tt>jwks_uri</tt> and a configured key source is checked in step 3
(<xref target="key-resolution"/>), not here.</t>
          </li>
          <li>
            <t>Select the key source under <xref target="key-resolution"/>. Resolve the <tt>kid</tt>
header parameter to one eligible public key, refreshing on an unknown
<tt>kid</tt> value only as <xref target="updates"/> permits, and verify the signature
using an acceptable asymmetric algorithm. Symmetric keys, private
keys, and an <tt>alg</tt> header parameter value of <tt>none</tt> <bcp14>MUST NOT</bcp14> be
accepted under this profile.</t>
          </li>
          <li>
            <t>Verify that the <tt>sub</tt> claim exactly equals the requested <tt>client_id</tt>,
then validate the remaining attestation and proof under the selected
ATTEST method. When the attestation is an additional security signal
alongside another client authentication method
(<xref section="7.6" sectionFormat="of" target="ATTEST"/>), validate that method under its own
specification and verify that it authenticates the same client
identifier; a mismatch is a failure of that method. Where the
companion method also establishes a confirmation key, for example
mutual TLS <xref target="RFC8705"/>, authorization server configuration selects
which key binds the issued token; the authorization server <bcp14>MUST NOT</bcp14>
bind a token to the attested key on the basis of an attestation it
did not accept.</t>
          </li>
          <li>
            <t>Apply grant and authorization policy independently of the
endorsement.</t>
          </li>
        </ol>
      </section>
      <section anchor="key-resolution">
        <name>Key Source Selection</name>
        <t>The authorization server <bcp14>MUST</bcp14> select keys according to the key-trust
policy governing the client-to-attester association (<xref target="trust"/>). If the
authorization server has configured attester trust for the attestation's
exact issuer string for any client, AS-configured attester trust governs
that issuer for every client, even if the requesting client's publisher
is also authorized to select keys. Otherwise, publisher-authorized key
selection applies if the publisher is so authorized. If neither applies,
no key source is available and endorsement validation fails.</t>
        <t>After a configured entry is removed, the authorization server <bcp14>MUST NOT</bcp14>
verify an attestation under that issuer with publisher-selected keys
unless an operator has since decided that publishers may select keys for
that issuer; otherwise, removing a configured entry would transfer key
selection to the publisher. Restoring a configured key source for the
issuer returns it to AS-configured attester trust. Until one of these
occurs, no key source is available and endorsement validation fails.</t>
        <ul spacing="normal">
          <li>
            <t><strong>AS-configured attester trust:</strong> use only the independently
configured key source for the exact issuer; no origin relationship
between that source and the issuer is required. The endorsed
<tt>jwks_uri</tt> <bcp14>MUST</bcp14> equal that source's URI or one of its configured
aliases. This check causes a disagreement between the endorsement and
authorization server configuration, including endorsement of a
different key set behind a shared issuer string, to fail validation
instead of being resolved in favor of either. An alias is an endorsed
URI that the authorization server treats as equivalent to the issuer's
configured key source; it does not change where keys are retrieved.
Aliases are issuer-wide: an alias applies to every client that
endorses the issuer, not only the client whose endorsement prompted
it. A configured alias <bcp14>MUST</bcp14> preserve the endorsed attestation
authority, including tenant scope; a shared issuer or origin alone
does not establish equivalence, and tenant isolation (<xref target="security"/>)
depends on this. An endorsed <tt>jwks_uri</tt> <bcp14>MUST NOT</bcp14> select, override, or
provide a fallback for the configured key source. The authorization
server <bcp14>MUST NOT</bcp14> retrieve the endorsed <tt>jwks_uri</tt> under this policy;
the endorsed value is compared but never retrieved.</t>
          </li>
          <li>
            <t><strong>Publisher-authorized key selection:</strong> use the endorsed <tt>jwks_uri</tt>.
The <tt>issuer</tt> value <bcp14>MUST</bcp14> be an HTTPS URL, and the <tt>jwks_uri</tt> value <bcp14>MUST</bcp14>
have the same origin <xref target="RFC6454"/>. This origin check neither isolates
tenants sharing an origin nor establishes trust in an issuer name. A
non-HTTPS issuer has no HTTPS origin binding and so requires
AS-configured attester trust.</t>
          </li>
        </ul>
        <t>Configuring or changing trust for an issuer can affect every client that
endorses that issuer. Before applying such a change, operators should
evaluate existing endorsements for compatibility with the configured key
source. Configured aliases represent equivalent attestation authority
and cannot be used solely to accommodate different tenant key sets.</t>
        <t>The authorization server <bcp14>MUST</bcp14> use exact, case-sensitive string
comparison, without URI normalization, for issuer identifiers, for
client identifiers, and when comparing endorsed <tt>jwks_uri</tt> values with
configured source URIs and aliases. An alternative spelling of a
location requires an explicit alias, and origin comparison does not
change identifier comparison.</t>
        <t>Key selection <bcp14>MUST</bcp14> bind a key to the client identifier, issuer, selected
key source, and applicable key-trust policy, so that a key selected
under one entry never verifies an attestation evaluated under another; a
<tt>kid</tt> value alone or a union of keys from different entries is
insufficient. The binding applies when a key is selected, not when it is
retrieved, so a shared HTTP cache keyed by JWK Set URL is compatible
with it. The authorization server <bcp14>MUST</bcp14> ignore the <tt>jku</tt>, <tt>x5u</tt>, <tt>x5c</tt>,
and <tt>jwk</tt> JOSE header parameters for key selection under this profile
and <bcp14>MUST</bcp14> resolve only the <tt>kid</tt> header parameter against the selected
source.</t>
        <t>A key is eligible when all of the following hold:</t>
        <ul spacing="normal">
          <li>
            <t>it is the only key in the selected JWK Set whose <tt>kid</tt> parameter
equals the <tt>kid</tt> header parameter by octet comparison;</t>
          </li>
          <li>
            <t>it is an asymmetric public key whose key type is consistent with the
<tt>alg</tt> header parameter;</t>
          </li>
          <li>
            <t>its <tt>use</tt> parameter, if present, is <tt>sig</tt> or, under AS-configured
attester trust, a value the authorization server has configured for
that key source as identifying signature keys (for example <tt>jwt-svid</tt>
for a SPIFFE trust bundle <xref target="SPIFFE-OAUTH"/>);</t>
          </li>
          <li>
            <t>its <tt>key_ops</tt> parameter, if present, includes <tt>verify</tt>; and</t>
          </li>
          <li>
            <t>its <tt>alg</tt> parameter, if present, equals the <tt>alg</tt> header parameter.</t>
          </li>
        </ul>
        <t>If more than one key matches the <tt>kid</tt> value, key selection fails; the
authorization server <bcp14>MUST NOT</bcp14> try candidate keys in turn.</t>
        <t>When retrieving a JWK Set or client metadata, the authorization server
<bcp14>MUST</bcp14> authenticate the HTTPS server and <bcp14>MUST NOT</bcp14> follow redirects.
Bounding response size and request time, and blocking prohibited network
destinations, are local defenses; see <xref target="security"/>. The values that the
authorization server advertises in the
<tt>client_attestation_signing_alg_values_supported</tt> metadata parameter
(<xref section="8" sectionFormat="of" target="ATTEST"/>) <bcp14>SHOULD</bcp14> be consistent with the algorithm
restrictions in step 3 of <xref target="as-processing"/>.</t>
      </section>
      <section anchor="errors">
        <name>Errors</name>
        <t>Endorsement validation covers these parts of <xref target="as-processing"/>:</t>
        <ul spacing="normal">
          <li>
            <t>obtaining the client metadata in step 1, when neither the
authoritative source nor a fresh cached copy provides it, including a
CIMD that has been removed (<xref target="cache-freshness"/>);</t>
          </li>
          <li>
            <t>selecting a permitted endorsement in step 2;</t>
          </li>
          <li>
            <t>selecting the key source and resolving the <tt>kid</tt> header parameter in
step 3 under <xref target="key-resolution"/>, including an endorsed <tt>jwks_uri</tt> that
matches neither the configured key source nor a configured alias; and</t>
          </li>
          <li>
            <t>finding no eligible key after any refresh permitted by
<xref target="updates"/>.</t>
          </li>
        </ul>
        <t>How a failure is reported depends on how the Client Attestation is used
in the request.</t>
        <t>When the Client Attestation is the client authentication method, the
authorization server <bcp14>MUST</bcp14> respond to an endorsement validation failure
with the <tt>invalid_client_attestation</tt> error code.
<xref section="7.4" sectionFormat="of" target="ATTEST"/> defines that error code alongside the more
general <tt>invalid_client</tt> error code; this profile requires the specific
code so that the response identifies the Client Attestation, not another
client credential, as the cause. The code does not distinguish
endorsement failures from other attestation failures.</t>
        <t>This profile does not change the HTTP status code that an endpoint
returns for a client authentication failure. The token endpoint responds
with HTTP status code 400 (Bad Request) by default and requires 401
(Unauthorized) only when the client attempted to authenticate through
the <tt>Authorization</tt> request header field (<xref section="5.2" sectionFormat="of" target="RFC6749"/>),
which a Client Attestation does not use. The introspection endpoint
responds with 401 (Unauthorized) (<xref section="2.3" sectionFormat="of" target="RFC7662"/>). Other
endpoints follow their own specifications.</t>
        <t>A client library that recognizes only the <tt>invalid_client</tt> error code
treats the <tt>invalid_client_attestation</tt> error code as an unrecognized
failure rather than a credential failure.</t>
        <t>When the Client Attestation accompanies another client authentication
method as an additional security signal (<xref section="7.6" sectionFormat="of" target="ATTEST"/>), an
endorsement validation failure leaves no attestation signal for that
request. The authorization server <bcp14>MUST NOT</bcp14> treat the failed attestation
as a satisfied signal. If the deployment requires an attestation
alongside that method, the request fails. An authorization server
signals that requirement by advertising the
<tt>client_attestation_pop_methods_supported</tt> metadata parameter without
the value <tt>none</tt>; a list containing <tt>none</tt> signals that the attestation
is optional. Where the attestation is optional, whether the request
proceeds on the companion method alone is authorization server policy.</t>
        <t>Whenever an endorsement validation failure causes the authorization
server to reject the request, the authorization server <bcp14>MUST</bcp14> respond with
the <tt>invalid_client_attestation</tt> error code, whether the Client
Attestation served as the client authentication method or as an
additional security signal. In either case, the response <bcp14>MUST NOT</bcp14> expose
policy details.</t>
        <t>A fresh attestation does not correct an endorsement validation failure
caused by disagreement between the endorsement and authorization server
configuration, such as an endorsed <tt>jwks_uri</tt> matching neither the
configured key source nor a configured alias (<xref target="key-resolution"/>).
Because the response carries no policy detail, a client cannot
distinguish that case from one that a fresh attestation would correct,
or from a transient retrieval failure (<xref target="updates"/>) that a later
presentation can resolve. The client publisher and the authorization
server operator resolve a configuration disagreement outside the
protocol, for example under the trust agreement (<xref target="profile-selection"/>),
not by client retry.</t>
        <t>Other failures produce the errors defined by their own specifications.
Failures of signature verification with a resolved key and of the
remaining attestation and proof checks produce the errors of
<xref section="7.4" sectionFormat="of" target="ATTEST"/>, including challenge and freshness responses.
Except where the selected proof method's own specification requires a
different error code, such as <tt>invalid_dpop_proof</tt> for an invalid DPoP
proof in DPoP combined mode (<xref section="5" sectionFormat="of" target="RFC9449"/>), the
authorization server <bcp14>MUST</bcp14> use <tt>invalid_client_attestation</tt> rather than
<tt>invalid_client</tt> wherever <xref section="7.4" sectionFormat="of" target="ATTEST"/> permits it, so that
a generic attestation failure does not reveal whether endorsement
validation succeeded. The specific responses that ATTEST and the proof
method require, such as <tt>use_fresh_attestation</tt>,
<tt>use_attestation_challenge</tt>, and <tt>invalid_dpop_proof</tt>, occur only after
endorsement validation succeeds and so reveal that it did; this profile
preserves them. A DPoP key that does not match the <tt>cnf</tt> claim of the
Client Attestation (<xref section="7.3" sectionFormat="of" target="ATTEST"/>) still produces
<tt>invalid_client_attestation</tt>. A companion client authentication method
that fails, or that authenticates a different client identifier,
produces the error defined by its own specification. Other
metadata-discovery, registration, authentication, and grant errors
follow their base specifications. The prohibition on other
attester-trust mechanisms in <xref target="acceptance"/> applies.</t>
      </section>
    </section>
    <section anchor="updates">
      <name>Updates and Withdrawal</name>
      <t>A publisher withdraws an endorsement by removing it from the
authoritative client metadata (<xref target="metadata"/>). The removal takes effect
at the authorization server as cached copies expire
(<xref target="cache-freshness"/>), applies from the next presentation once retrieved
(<xref target="endorsement-changes"/>), and does not affect issued grants unless they
are separately revoked (<xref target="existing-grants"/>).</t>
      <section anchor="cache-freshness">
        <name>Cache Freshness and Removal</name>
        <t>The authorization server <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>enforce configured finite maximum ages for cached endorsement metadata
and JWK Sets, applying the caching constraints of <xref target="CIMD"/> and HTTP
<xref target="RFC9111"/> when stricter; and</t>
          </li>
          <li>
            <t>revalidate or refresh expired entries before use, rejecting stale
entries if that operation fails.</t>
          </li>
        </ul>
        <t>Configured maximum ages bound withdrawal latency: a withdrawn
endorsement or key can remain acceptable until the applicable age
expires. The authorization server operator chooses maximum ages that
keep this latency within the deployment's security requirements; short
maximum ages, for example one hour, reduce it. This specification
defines no upper limit, so a publisher cannot predict withdrawal latency
from the protocol alone; a deployment that needs a predictable bound
states one in its trust agreement. Fresh entries need not be retrieved
on each request. These limits apply to cached copies, not to
authoritative client registrations.</t>
        <t>On an unknown <tt>kid</tt> value, the authorization server <bcp14>SHOULD</bcp14> refresh the
selected key source's JWK Set once and retry key selection, subject to
rate limits. The authorization server <bcp14>MUST</bcp14> rate-limit these refreshes
per selected key source, independently of the <tt>kid</tt> value, and <bcp14>MUST</bcp14>
reject the attestation if no eligible key is available. Where several
clients or publishers endorse one key source, the authorization server
<bcp14>SHOULD</bcp14> also limit refreshes per endorsing client and per publisher, so
that no client or publisher can exhaust another's allowance. Rate-limit
parameters are deployment-specific. An <tt>iss</tt> claim value that matches no
endorsement <bcp14>MUST NOT</bcp14> cause a client metadata refresh; the metadata
maximum age bounds the delay before a newly published endorsement takes
effect, as it bounds withdrawal.</t>
        <t>On observing that a CIMD or a selected JWK Set has been removed, as
indicated by a 404 (Not Found) or 410 (Gone) status code, the
authorization server <bcp14>MUST</bcp14> stop using previously cached endorsements or
keys from that document, and <bcp14>MUST NOT</bcp14> use them again unless a later
retrieval of that document succeeds. A retrieval failure that is not a
removal, such as a timeout or a 5xx (Server Error) status code, does not
by itself invalidate an unexpired cached copy. While the authorization
server uses an unexpired cached copy, it cannot observe a removal.
Deleting a client registration removes its endorsements.</t>
      </section>
      <section anchor="endorsement-changes">
        <name>Endorsement and Key Changes</name>
        <t>Once the authorization server has retrieved or stored a metadata or key
update, it <bcp14>MUST</bcp14> use it on the next presentation. Removing an endorsement
or a verification key, or publishing an empty list, prevents acceptance
under that entry or key, including for attestations issued before the
update. Denial by authorization server policy <bcp14>MUST</bcp14> take effect
immediately on subsequent requests, without waiting for cache
expiration.</t>
        <t>For planned key rotation, the attester adds the new key to the JWK Set
the authorization server reads (the configured key source or the
endorsed <tt>jwks_uri</tt>, <xref target="key-resolution"/>) and waits for JWK Set cache
lifetimes to elapse before signing with it. It keeps the old key
published until attestations signed with it expire, because removing the
key causes them to be rejected. A new key location takes effect only
after the publisher updates the endorsement and the authorization
server's cached metadata refreshes. Under AS-configured attester trust,
it also fails endorsement validation until the authorization server
configures a matching alias or updates its configured key source, so the
attester and publisher coordinate the change with the authorization
server operator.</t>
      </section>
      <section anchor="existing-grants">
        <name>Existing Grants</name>
        <t>Endorsement withdrawal is prospective: it prevents future client
authentication under the removed endorsement but does not revoke
existing grants or access tokens. Refresh requests that require a Client
Attestation are checked again under <xref target="processing"/>. A deployment that
requires termination separately revokes the affected grants and their
tokens and stops further refresh issuance. Introspection <xref target="RFC7662"/>
then reports the revoked tokens inactive; a resource server that
validates tokens locally relies on a separate revocation mechanism or on
token expiration.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The security considerations of <xref section="12" sectionFormat="of" target="ATTEST"/>,
<xref section="8" sectionFormat="of" target="CIMD"/>, and <xref target="RFC8725"/> apply.</t>
      <section anchor="publisher-compromise">
        <name>Publisher Compromise</name>
        <t>A party that controls a CIMD host or a client's registration
administration can change endorsements, within authorization server
policy. This specification provides no independent indication that an
endorsement change resulted from publisher compromise, so operators
typically monitor endorsement changes and treat new attesters as policy
changes. A separately specified signed-metadata mechanism with
independently trusted signing keys could bind publisher intent
independently of the HTTPS host; this specification defines none.</t>
      </section>
      <section anchor="publisher-selected-attesters">
        <name>Publisher-Selected Attesters</name>
        <t>Under publisher-authorized key selection, the authorization server
accepts each attester that an authorized publisher endorses
(<xref target="acceptance"/>). The publisher, or a party that controls its CIMD host,
can therefore operate its own attester, and a Client Attestation
verified under this policy carries no assurance independent of the
publisher. Claims it makes about the Client Instance, such as platform
or hardware integrity, are only as trustworthy as the publisher. A
deployment that relies on attester assurance independent of the
publisher uses AS-configured attester trust for those attesters.</t>
      </section>
      <section anchor="shared-attesters">
        <name>Shared Attesters</name>
        <t>A client or tenant of a shared attester could obtain attestations naming
another, so the attester needs issuance controls that prevent this.
Under AS-configured attester trust, the agreement check in
<xref target="key-resolution"/> isolates tenants only if the configured key source
and its aliases preserve the endorsed tenant scope, which is the
authorization server operator's responsibility.</t>
      </section>
      <section anchor="key-retrieval">
        <name>Key Retrieval</name>
        <t>Under publisher-authorized key selection, an authorized publisher
chooses both the issuer and the key location, and so can direct a
request from the authorization server to an origin of its choosing. The
requirements in <xref target="key-resolution"/> constrain that request, and extend to
key retrieval the prohibition on automatically following HTTP redirects
in <xref section="5" sectionFormat="of" target="CIMD"/>, but they do not prevent it. An authorization
server can also bound response size and request time and block
prohibited network destinations. Endorsed URLs remain subject to
server-side request forgery (SSRF) defenses; endorsement does not make a
network location safe.</t>
      </section>
      <section anchor="withdrawal-latency">
        <name>Withdrawal Latency</name>
        <t>Cached copies can remain in use after withdrawal (<xref target="updates"/>), so
removing a key at its origin is not instantaneous revocation. Prompt
termination requires denial by authorization server policy
(<xref target="endorsement-changes"/>) or another revocation channel.</t>
      </section>
      <section anchor="omitted-attestation">
        <name>Omitted Attestation</name>
        <t>The <tt>client_attesters</tt> parameter does not itself require attestation, so
an attacker that obtains the client's other credentials can authenticate
without one unless the deployment requires attestation, either through
an attestation-based <tt>token_endpoint_auth_method</tt> value or by
authorization server policy that requires an attestation alongside
another method (<xref target="errors"/>); the latter retains mutual TLS or
<tt>private_key_jwt</tt> as the client authentication method. Advertising the
<tt>client_attestation_pop_methods_supported</tt> metadata parameter without
the value <tt>none</tt> signals such a policy to clients but does not enforce
it (<xref section="7.6" sectionFormat="of" target="ATTEST"/>). A registration access token can change
the <tt>token_endpoint_auth_method</tt> or <tt>jwks</tt> parameter through <xref target="RFC7592"/>
even where it cannot change <tt>client_attesters</tt> (<xref target="registered"/>), so a
deployment relying on endorsement also restricts those changes or
requires attestation by authorization server policy.</t>
      </section>
      <section anchor="unscoped-endorsement">
        <name>Unscoped Endorsement</name>
        <t>An endorsement carries no audience. Under publisher-authorized key
selection, one endorsement selects the attester and its keys at every
authorization server whose policy covers that publisher, so a
compromised attester authenticates the client at all of them until the
endorsement is withdrawn.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>The privacy considerations of <xref section="11" sectionFormat="of" target="ATTEST"/> and
<xref section="9" sectionFormat="of" target="CIMD"/> apply.</t>
      <t>Public metadata exposes client-to-attester relationships. Such metadata
need not enumerate instances or their keys, and this specification does
not require them to; it requires no stable instance identifier. Caching
reduces the request-timing information observable at metadata and key
sources.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="oauth-dynamic-client-registration-metadata-registration">
        <name>OAuth Dynamic Client Registration Metadata Registration</name>
        <t>This specification requests registration of the following value in the
"OAuth Dynamic Client Registration Metadata" registry established by
<xref target="RFC7591"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Client Metadata Name: <tt>client_attesters</tt></t>
          </li>
          <li>
            <t>Client Metadata Description: Attesters endorsed to issue Client
Attestations for this client, with their verification-key locations</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="metadata"/> of this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="oauth-authorization-server-metadata-registration">
        <name>OAuth Authorization Server Metadata Registration</name>
        <t>This specification requests registration of the following value in the
"OAuth Authorization Server Metadata" registry established by
<xref target="RFC8414"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: <tt>client_attester_endorsement_supported</tt></t>
          </li>
          <li>
            <t>Metadata Description: Boolean value indicating whether the
authorization server supports processing the <tt>client_attesters</tt> client
metadata parameter</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="as-metadata"/> of this specification</t>
          </li>
        </ul>
      </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="3" month="September" 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 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-11"/>
        </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="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </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="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </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="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="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </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="RFC9111">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </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>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7009">
          <front>
            <title>OAuth 2.0 Token Revocation</title>
            <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
            <author fullname="S. Dronia" initials="S." surname="Dronia"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7009"/>
          <seriesInfo name="DOI" value="10.17487/RFC7009"/>
        </reference>
        <reference anchor="RFC7592">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Management 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"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines methods for management of OAuth 2.0 dynamic client registrations for use cases in which the properties of a registered client may need to be changed during the lifetime of the client. Not all authorization servers supporting dynamic client registration will support these management methods.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7592"/>
          <seriesInfo name="DOI" value="10.17487/RFC7592"/>
        </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="RFC8628">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical. It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8628"/>
          <seriesInfo name="DOI" value="10.17487/RFC8628"/>
        </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="RFC9126">
          <front>
            <title>OAuth 2.0 Pushed Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="D. Tonge" initials="D." surname="Tonge"/>
            <author fullname="F. Skokan" initials="F." surname="Skokan"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document defines the pushed authorization request (PAR) endpoint, which allows clients to push the payload of an OAuth 2.0 authorization request to the authorization server via a direct request and provides them with a request URI that is used as reference to the data in a subsequent call to the authorization endpoint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9126"/>
          <seriesInfo name="DOI" value="10.17487/RFC9126"/>
        </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="15" month="June" 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 X.509-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-02"/>
        </reference>
        <reference anchor="INSTANCE-ID" target="https://mcguinness.github.io/draft-mcguinness-oauth-client-instance-id/draft-mcguinness-oauth-client-instance-id.html">
          <front>
            <title>Client Instance Identification for Attestation-Based Client Authentication</title>
            <author fullname="Karl McGuinness">
              <organization/>
            </author>
            <date year="2026" month="September" day="14"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 917?>

<section anchor="example">
      <name>Client ID Metadata Document Example</name>
      <t>This example is informative. The authorization server has the following
configuration, which is authorization server policy, not protocol
metadata:</t>
      <table>
        <name>Authorization server configuration for this example</name>
        <thead>
          <tr>
            <th align="left">Setting</th>
            <th align="left">Value</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Permitted origin for CIMD retrieval</td>
            <td align="left">
              <tt>https://platform.example</tt></td>
          </tr>
          <tr>
            <td align="left">Independently trusted attester</td>
            <td align="left">
              <tt>https://attester.example/tenant/acme</tt></td>
          </tr>
          <tr>
            <td align="left">Key-trust policy for that attester</td>
            <td align="left">AS-configured attester trust</td>
          </tr>
          <tr>
            <td align="left">Configured key source for that attester</td>
            <td align="left">
              <tt>https://attester.example/tenant/acme/jwks</tt></td>
          </tr>
          <tr>
            <td align="left">Maximum metadata and key cache ages</td>
            <td align="left">3600 seconds each</td>
          </tr>
        </tbody>
      </table>
      <t>The following example shows the Client ID Metadata Document that the
publisher serves at <tt>https://platform.example/oauth-client</tt>:</t>
      <sourcecode type="json"><![CDATA[
{
  "client_id": "https://platform.example/oauth-client",
  "client_name": "Managed Agent Harness",
  "redirect_uris": ["https://platform.example/callback"],
  "grant_types": ["authorization_code"],
  "response_types": ["code"],
  "token_endpoint_auth_method": "attest_jwt_client_auth_dpop",
  "client_attesters": [
    {
      "issuer": "https://attester.example/tenant/acme",
      "jwks_uri": "https://attester.example/tenant/acme/jwks"
    }
  ]
}
]]></sourcecode>
      <t>The following example shows the JWK Set published at the configured
key source. Its signing key is distinct from the Client Instance Key in
the <tt>jwk</tt> member of the <tt>cnf</tt> claim:</t>
      <sourcecode type="json"><![CDATA[
{
  "keys": [{
    "kty": "EC",
    "crv": "P-256",
    "kid": "attester-1",
    "use": "sig",
    "alg": "ES256",
    "x": "axfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5RdiYwpY",
    "y": "T-NC4v4af5uO5-tKfA-eFivOM1drMV7Oy7ZAaDe_UfU"
  }]
}
]]></sourcecode>
      <t>The following example shows the decoded JOSE header of the Client
Attestation, whose <tt>kid</tt> header parameter selects that key:</t>
      <sourcecode type="json"><![CDATA[
{
  "typ": "oauth-client-attestation+jwt",
  "alg": "ES256",
  "kid": "attester-1"
}
]]></sourcecode>
      <t>The following example shows the decoded payload of the Client
Attestation. The <tt>iss</tt> claim names the endorsed issuer, and the <tt>sub</tt>
claim names the client:</t>
      <sourcecode type="json"><![CDATA[
{
  "iss": "https://attester.example/tenant/acme",
  "sub": "https://platform.example/oauth-client",
  "exp": 2524608000,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "9iHztmYIeKeyta94k1y5Dya5cab3-_H_yw_3v0p6K80",
      "y": "NsrICJ4xFvOs5xaDM4sF1yDijCxN5LWailjw5EsERwI"
    }
  }
}
]]></sourcecode>
      <ol spacing="normal" type="1"><li>
          <t>The Client Instance proves to the attester that it is authorized
to use this client identifier and holds its Client Instance Key.</t>
        </li>
        <li>
          <t>The attester issues the Client Attestation shown above.</t>
        </li>
        <li>
          <t>After user authorization, the Client Instance redeems its
authorization code with that <tt>client_id</tt>, the Client Attestation, and
a combined Demonstrating Proof of Possession (DPoP) proof
<xref target="RFC9449"/>.</t>
        </li>
        <li>
          <t>The authorization server validates the CIMD, endorsement,
attestation, proof, and grant before issuing the access token.</t>
        </li>
      </ol>
      <t>There is one Client ID Metadata Document, not one per Client Instance.
An endorsement for this client does not let the attester authenticate
another client, even if both use the same Client Attester. The flow does
not require the <tt>client_instance_id</tt> claim of <xref target="INSTANCE-ID"/> or an
<tt>act</tt> claim (<xref section="4.1" sectionFormat="of" target="RFC8693"/>).</t>
      <t>Under AS-configured attester trust, keys come only from the configured
key source, and the endorsed <tt>jwks_uri</tt> is required to equal it, as it
does here. An attestation from an unendorsed issuer, an endorsement
naming the trusted issuer with a different key location, or a <tt>kid</tt>
value that resolves to no key in the configured key source results in
the following error response. <xref section="5.2" sectionFormat="of" target="RFC6749"/> requires a 401
(Unauthorized) status code only for a client that attempted to
authenticate through the <tt>Authorization</tt> request header field, which
this client does not use, so the example shows the default 400 (Bad
Request) status code:</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>
      <t>If the authorization server had instead authorized
<tt>https://platform.example</tt> for publisher-authorized key selection and
had not configured trust for the issuer, the same document would also be
accepted, with keys retrieved from the endorsed <tt>jwks_uri</tt>, which shares
the issuer's origin. An entry whose <tt>jwks_uri</tt> had a different origin
from the issuer would then fail endorsement validation with the same
error.</t>
    </section>
    <section anchor="registered-example">
      <name>Registered Client Example</name>
      <t>This example is informative. It repeats <xref target="example"/>, with the same
authorization server configuration, for an opaque client identifier.
Under AS-configured attester trust, neither endorsement nor key
selection depends on the form of the identifier: the <tt>client_attesters</tt>
parameter is part of the client's metadata, and the endorsement names
the key location directly, so no origin is derived from the client
identifier. Publisher authorization differs between the two forms
(<xref target="trust"/>), but that difference does not arise here, because the
authorization server trusts this attester independently.</t>
      <t>An authenticated, authorized administrator registers the client, for
example through <xref target="RFC7591"/>. The following example shows the client
information response that the authorization server returns:</t>
      <sourcecode type="json"><![CDATA[
{
  "client_id": "s6BhdRkqt3",
  "client_name": "Managed Agent Harness",
  "redirect_uris": ["https://app.example/callback"],
  "grant_types": ["authorization_code"],
  "response_types": ["code"],
  "token_endpoint_auth_method": "attest_jwt_client_auth_dpop",
  "client_attesters": [
    {
      "issuer": "https://attester.example/tenant/acme",
      "jwks_uri": "https://attester.example/tenant/acme/jwks"
    }
  ]
}
]]></sourcecode>
      <t>The attester signs with the same key as in <xref target="example"/>, so the JOSE
header of the attestation is unchanged:</t>
      <sourcecode type="json"><![CDATA[
{
  "typ": "oauth-client-attestation+jwt",
  "alg": "ES256",
  "kid": "attester-1"
}
]]></sourcecode>
      <t>The following example shows the payload, in which only the <tt>sub</tt> claim
differs:</t>
      <sourcecode type="json"><![CDATA[
{
  "iss": "https://attester.example/tenant/acme",
  "sub": "s6BhdRkqt3",
  "exp": 2524608000,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "9iHztmYIeKeyta94k1y5Dya5cab3-_H_yw_3v0p6K80",
      "y": "NsrICJ4xFvOs5xaDM4sF1yDijCxN5LWailjw5EsERwI"
    }
  }
}
]]></sourcecode>
      <t>The client redeems its authorization code with <tt>client_id=s6BhdRkqt3</tt>,
that attestation, and a combined DPoP proof. The authorization server
reads the registered metadata rather than retrieving a CIMD, then runs
the same steps of <xref target="as-processing"/>: the endorsed issuer matches the
<tt>iss</tt> claim of the attestation, AS-configured attester trust selects the
configured key source, the <tt>kid</tt> value resolves to the <tt>attester-1</tt> key
there, and the <tt>sub</tt> claim equals the requested <tt>client_id</tt>. The failure
cases and their error response are those of <xref target="example"/>.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t><em>RFC EDITOR: Remove this section before publication.</em></t>
      <ul spacing="normal">
        <li>
          <t>Initial draft.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
