<?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-01" 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-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>client metadata</keyword>
    <abstract>
      <?line 50?>

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

<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"/> uses a comparable pair of key sources
for SVID signing keys. Its <tt>spiffe_bundle_endpoint</tt> client metadata
parameter names a bundle location for the client's trust domain. A
bundle obtained from it is used only for that <tt>client_id</tt>, and
<xref section="6.1" sectionFormat="of" target="SPIFFE-OAUTH"/> recommends using a bundle that the
authorization server has obtained for the trust domain by other means
instead. Publisher-authorized key selection corresponds to accepting
<tt>spiffe_bundle_endpoint</tt> from client metadata, and has the same trust
model (<xref section="8.2" sectionFormat="of" target="SPIFFE-OAUTH"/>). AS-configured attester trust
corresponds to a bundle obtained by other means. This specification
requires the configured key source to govern the issuer for every client
(<xref target="key-resolution"/>), where SPIFFE-OAUTH only recommends it.</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. <xref section="7.4" sectionFormat="of" target="ATTEST"/>
recommends 400 (Bad Request) for its error codes at an authorization
server and permits 401 (Unauthorized) for <tt>invalid_client_attestation</tt>.
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. <xref section="12.3" sectionFormat="of" target="ATTEST"/> limits reliance on attestation
claims, such as platform or hardware integrity of the Client Instance,
to the trust placed in the issuing Client Attester; under this policy,
that is trust in the publisher. <xref section="8.2" sectionFormat="of" target="SPIFFE-OAUTH"/>
describes the same trust model for SPIFFE bundles obtained from a CIMD.
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="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="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="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>
        <reference anchor="INSTANCE-ID">
          <front>
            <title>OAuth 2.0 Client Instance Identifiers</title>
            <author fullname="Karl McGuinness" initials="K." surname="McGuinness">
              <organization>Independent</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-client-instance-id-01"/>
        </reference>
      </references>
    </references>
    <?line 923?>

<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",
  "iat": 2524604400,
  "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",
  "iat": 2524604400,
  "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>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Aligned with draft-ietf-oauth-attestation-based-client-auth-12 and
draft-ietf-oauth-spiffe-client-auth-03: the example attestations
include the now-required <tt>iat</tt> claim, Errors cites the status codes of
ATTEST, and the SPIFFE comparison reflects client-scoped bundles.</t>
        </li>
        <li>
          <t>Cited draft-mcguinness-oauth-client-instance-id as an Internet-Draft.</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial draft.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963YbR5Lm/3yKWuqHLgtApETJFjkzPbREtdm2LiNK7eOd
6SMWgQJZFlCFqSqQwtDqZ9ln2SfbuGZG1gVk9+zu2XN2fbptEkRlZUZGxvWL
yPF47Jq8WWQHyc67o3VzmTyZ7CYvF3lWNMlR02R1k1XJcTErqzpbwoc7Lj0/
r7Ir+P7Wb03TJrsoq81BUjczNyunRbqEl8yqdN6Ml9OLdV4UWV2PyxReOp7S
UONUhqrHu3uuXp8v87rOy6LZrODRk+OPr13dpMXsc7ooC/hkk9UuX1UHSVOt
6+bJ7u6L3SdulR8k/9qU01FSl1VTZfMaftos8Ye/uLTKUpj5aTZdV3mz2XHX
ZfXloirXK/j0l+w8QRKUVf4faQPvTd5XJYxULnbcl2wDX50duGScEJ3wB551
wrOmJ8yny6xJZ2mTuqusWGfwYHKX9yQJL3bnF5hYXlwkf8SH8PNlmi/gc6LX
P+dZM5+U1QX+Ia2ml/CHy6ZZ1QePH+P38KP8Kpvo1x7jB4/Pq/K6zh7TCI/x
yYu8uVyfw7NhPx7fcYPw8UWKv9hX+6cmPPQkL+864F2/N7lslkCnlOhH2zFf
LxbMXD+l1SJ5M/2jjABTTGDxaSFkBhYqZtkqg38VDf4xY5qu1ueLfPrPX+Bp
s4JpuXRFWS3h0SvavqOPH49PP8Ig41dEWJmg2f3xeVpnMz9l4pLk5cmbV52H
5Cv5bKxsMoYjsl7yxD68fvl8/9n+gfz43f4L+fG7Z3vPwo/fhR/DF17syY/f
7+/pCN9/90Qfe7G3p194sY/j5sXcLhLHgHMUhnuiPz5/rj9+//zJ9/7HF0/9
S3bDS548xx9P35+8fn08fnf06eOPHRLUq3w+z1rEOnl7+vHo7cvj8YnQbIgf
8gIlwTQDErrxeJyk53VTpdPGuSDFjszO/IA74+UafAP+m0/59FXZv6/zKquT
tBC+0nNZZ9UVCLamZAmTwGOJciL8ksIpT7/Ag/gWknswxnm5BpHgRAroPEfJ
OXw8K+HLRQk/ZPO8yJLL8jpJVWDkyJb5PIevwHuc5/hE5wQLgJnw5wnsWpI3
k+TjZQ7vX2VTeFLWw4PXYRLKY8kqreCgwKCjZF2n54ssOd/A8i9yfBEMz99H
Qsxg5kquk1fujY7wSrgUhCqtHw8ezTfJWPrPEjNxGAb/tCh5ZrUr5/hBXiVA
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
HqfTpYz1U/suR3+rmxlva8gIR3m5pZlgPNSdpvaYzT0c+Y3AWdqaQxrGEO7u
9+Tp891dTF1QlSRFY+0lvn2XaLfKNLxQlNnsiEkQpIZyWn2JF9zYyGMfw/oG
DSH4JvBu7JY9tL2PS2S6sYDygZ3++te/Jr/VcFJu4HTu+HbKOwfJzp3G2BmZ
57ApGD75Ji2AbOBPXuBMf0wrhK3yNzWSgTnwGr77r8OvmUq7uJ2/0JOUVfuM
bV74uej0fEZwinxRoxjmu+avw34AznzLpW7RSr1sw+GxE29yQ/+Gb3CsyhJw
GyPSqPScIgPu+iSx8A49/Q3+/Rf3DTfzdqZSUEFAAwjq2rS0sd34TuKLUFBw
cZ3V1ITXWjFyihHmBXte1ANJ2uz7q3J8YUGHB9HARKoyQXe+NBukyPFLodTO
tLrCD96Pnzx7rp99yc3ugReyp39Y18SQMH/9JF1c0Hin5vGv9PDX+Yfv18f1
v3yZ71+9O1/8+vzD0ffF9NX81+Pm+X+8u3jx0/GzD7P81+vVr/oczezj+O3L
/av9dP5s/e7ZuPlpfjTOXudX797szao3f/7u3ea7/3aUvso+f5p/wt36dueN
mmXItrOofVSUkrA57lHUeqnTaCM4W9xjqEN1OCu4GHu0beDnv8KJ4APQoV8P
8f/WFa7SzaJMZ8Orm/jmiYpu5ItHozC3tkjz7RPDRS7m67y2zvrh4b/pyO7A
4H+jkMzTBp548uzJ/vPd/f3dXfoQnDX/4fe78iGcDvhQDgAcH/9Lz3noPxHK
1C/yH/+jWf56ksGBbNIX+1/2Ns9ebdJn0/T86fjzj58315+fXu2unv/0/W54
kl7wtq5OXv5p/+vrq3f1s6/pqzf79eu9zav8t5df3z77+Zc0X/x2/ey4Pv5w
fRKE0Dfd+T3esbZYwFQ245cir1+LlqLbu6iffymgSO9M2MZ6dA9quZhJwrIr
guiOkI/2TcQjQx09iDMLuXwer4Tghtcwgyq21Ua9Mg9jlNmSJtO95oWaD4gf
1L7Qtn82I+kbzFf6cgXfq2zJ2QYyAN9TmR/87324auwBFnU9lJq1RAsvqMCP
rloYNFsNOgSnAwbjyIZriDmi8Cm9wlY3CRZNU6C0wyYix50muRMOxoK2GDfa
eDcjRHWLzpN2XKrlboYw4iJrYj6LwsZxj4bQ1Z2STlqETFnVVjKXiTjHEq6+
eEfYW5kw3XPki+hubk7enn48evvyeHwitwlhuWQ6bfRLJuS5z3cbogv4/MVT
Lhe6S9JR4BFL6dgXbpzvU/FBYvaVepvu2oQ7pAbaucK2HRGb7lChJJOt0aQc
MyF6uxI6Qq+ae/jU1bAt4NNW5+uQ+SMAA9+9YtDuUidMYkZaoOdFa/nWiWCE
TK32ilFYcnUmm5M2Id9uw2Ki+9g9xbUaxNhOM/5iaw9W9g4MtYvRMpLs720X
Iw6m6z0S69ojDXv1MTe80W44ehlotAJRnaj4wP+ua6xrwiTl4z1gVnzStNHB
giuE44w/gil+oNVQOPfHpHop8TYWx/8AZjgmrLRzNztEfFREwyWjO6JspMfI
gDc+8y3PjW7Z4v/Oy7skr0k44+DcrsHzVXw9hTK8FyUess8tBzj3mjm9IEdC
ZXR8A4TcH99eGDGHEwj/wHeSam91CQBI425z+1U43LgAe7z4iVCPpceQ7ztA
ACI1lB+AyHo0Ki7V0QZS2PVDuC1NRGmItoQEyfiOgZcTPOEravyDBZX8zLdR
6+136bYvpfPlKgVm7doXd8N3aAcMS5OibF8KETVTp7iFv0ksvPBgIHzmTMO8
mgBb+qxPk8aXw7fh02T9ujZyQtASC+4PHG5gQAcvq/KI8ySAZ8P0AWAZ05q5
qY5akOAdtbhmAqXp/S8KWcBKFuHAqb0IuELEJqqWgEIfhKzQmHofqjf2bBRr
QvksK1lnI4s+MSBOc8Gf9Rm4V7WyZTs/uKcNNLc5PEpGk77wmIvtlylIm7bt
EZv6+Q+Xsw9f/r15+r8uLAMy+/9HZP7zERnPlBhKqWNhxYgRwRcZiSZ6Gv1/
F/v/rcZQ64KTw7P/O9x6ceexaki0U+jmFm52k2YnXZb+e13xNvf/v+Rvf7w0
5cbeDR30QYP7+Y+BamcCSU1bPmjkgGLLEPL8hl1Jx1VRnLbt3pNq2+xFHZfZ
5yQro1oXrK/oeGCD2IFuu30RINs52m2/uvOW68AMRKG/uxVbdrb7vXU+6G/h
/JyRTdCwRouCVHrV4S1XHIp+8Z2/6swUmbS8Fap5YeAIEc6LFbLIfBbhxxwN
7o27OSjWGKDNZv+4M4dJUHriEWi25PjVycd3Hw649FDvcRWrRjx+7sfOgbpH
zo3BAXKP8EaeUFE2q9J5M86zZj5mWdSBWnnphH/deyLBj85z9QqlRvTl3acH
kT9j0b5O7yBl17wor8femz0DAeHvHZc+0NNcIyDG45EbgBmSEbZOwNXmEogq
mzPDyPQEbCPwa7xK5iVhJnlVy+nFOi9QB48j+axxg3GuPSJPCryxImvGr/DB
CZJ4F0l8UuTUoHLGH/9PUqtv/WvUAAA=

-->

</rfc>
