<?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-ietf-oauth-spiffe-client-auth-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title>OAuth SPIFFE Client Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-spiffe-client-auth-03"/>
    <author fullname="Arndt Schwenkschuster">
      <organization>Defakto Security</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Pieter Kasselmann">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <author fullname="Scott Rose">
      <organization>NIST</organization>
      <address>
        <email>scott.rose@nist.gov</email>
      </address>
    </author>
    <author fullname="Stian Thorgersen">
      <organization>IBM</organization>
      <address>
        <email>sthorger@ibm.com</email>
      </address>
    </author>
    <author fullname="Nancy Cam-Winget">
      <organization>Cisco Systems</organization>
      <address>
        <email>ncamwing@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>sec</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <keyword>credential</keyword>
    <keyword>exchange</keyword>
    <abstract>
      <?line 104?>

<t>This specification profiles the Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/>, the JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>, and OAuth 2.0 Attestation-Based Client Authentication <xref target="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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-spiffe-client-auth/"/>.
      </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/oauth-wg/oauth-spiffe-client-authentication"/>.</t>
    </note>
  </front>
  <middle>
    <?line 108?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Traditional OAuth client authentication typically relies on client secrets or private key JWT authentication, both require an out of band distribution of secret material to the OAuth client. In modern cloud-native architectures where identity is managed by SPIFFE (Secure Production Identity Framework for Everyone), there is a need to provision additional secret material for OAuth clients when attested identifiers and credentials such as SVIDs are already available.</t>
      <t>This specification profiles the Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/> to allow SPIFFE-enabled workloads to use their SPIFFE Verifiable Identity Documents (SVIDs), either X.509 certificates or JSON Web Tokens (JWT-SVID &amp; WIT-SVID), as client credentials for OAuth 2.0 client authentication. JWT-SVIDs make use of a profiled version of the JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>. WIT-SVIDs make use of the OAuth 2.0 Attestation-Based Client Authentication <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/>.</t>
      <t>This profile focuses on using SPIFFE credentials for OAuth client authentication.</t>
      <t>The SPIFFE profile for client authentication enables seamless integration between SPIFFE-based and OAuth-based systems, allowing applications to leverage both ecosystems without requiring additional credential management. It also enables a more secure authentication method by leveraging cryptographically verifiable credentials rather than shared secrets.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="terminology">
        <name>Terminology</name>
        <t>This specification uses the terms defined in OAuth 2.0 <xref target="RFC6749"/>, the Assertion Framework for OAuth 2.0 <xref target="RFC7521"/>, the JWT profile of it <xref target="RFC7523"/>, and the SPIFFE specifications. The following terms are used in this document:</t>
        <t><strong>Trust Domain</strong>: As defined in SPIFFE; A trust domain represents a single trust root. All SVIDs issued within a trust domain are verifiable via the trust domain's keys.</t>
        <t><strong>SPIFFE ID</strong>: A Uniform Resource Identifier (URI) that uniquely identifies a workload using the <tt>spiffe</tt> scheme. See <xref target="SPIFFE_ID"/> for details.</t>
        <t><strong>SVID</strong>: A SPIFFE Verifiable Identity Document. This document specifies the use of three types of SVIDs:</t>
        <ul spacing="normal">
          <li>
            <t><strong>X509-SVID</strong>: An X.509 certificate that contains a SPIFFE ID in the URI SAN extension. See <xref target="SPIFFE_X509"/> for details.</t>
          </li>
          <li>
            <t><strong>JWT-SVID</strong>: A JSON Web Token (JWT) that contains a SPIFFE ID in the <tt>sub</tt> claim. See <xref target="SPIFFE_JWT"/> for details.</t>
          </li>
          <li>
            <t><strong>WIT-SVID</strong>: A WIMSE Workload Identity Token (WIT) that contains a SPIFFE ID in the <tt>sub</tt> claim. See <xref target="SPIFFE_WIT"/> for details.</t>
          </li>
        </ul>
        <t><strong>SPIFFE Bundle</strong>: A collection of public keys and associated metadata that allow validation of SVIDs issued by a trust domain.</t>
        <t><strong>SPIFFE Bundle Endpoint</strong>: A URL that serves a SPIFFE bundle for a trust domain.</t>
      </section>
    </section>
    <section anchor="oauth-client-authentication-using-spiffe">
      <name>OAuth Client Authentication Using SPIFFE</name>
      <t>This section describes how SPIFFE identity documents can be used for OAuth 2.0 client authentication, following the patterns established in <xref target="RFC7521"/> and, for JWT-SVIDs, <xref target="RFC7523"/>.</t>
      <t>OAuth 2.0 client authentication is used to authenticate the client to the authorization server when making requests to the token endpoint. When using SPIFFE for client authentication, the client presents its SVID (JWT-SVID, WIT-SVID, or X509-SVID) to prove its identity.</t>
      <section anchor="client-identification">
        <name>Client Identification</name>
        <t>The <tt>client_id</tt> request parameter is <bcp14>OPTIONAL</bcp14> for all client authentication methods defined in this specification.</t>
        <t>If the request contains a <tt>client_id</tt> parameter, the authorization server <bcp14>MUST</bcp14> verify that the SPIFFE ID of the presented SVID is authorized to authenticate as the client identified by the <tt>client_id</tt>:</t>
        <ul spacing="normal">
          <li>
            <t>If the <tt>client_id</tt> is a URL pointing to a Client ID Metadata Document (<xref target="I-D.ietf-oauth-client-id-metadata-document"/>), the SPIFFE ID <bcp14>MUST</bcp14> match the <tt>spiffe_id</tt> value in that document as described in <xref target="client-registration-metadata"/>.</t>
          </li>
          <li>
            <t>Otherwise, the SPIFFE ID <bcp14>MUST</bcp14> be associated with the <tt>client_id</tt> through the client's registration with the authorization server.</t>
          </li>
        </ul>
        <t>If the request does not contain a <tt>client_id</tt> parameter, the SPIFFE ID of the presented SVID is the client identifier. The authorization server <bcp14>MUST</bcp14> identify the client as the registered client whose <tt>client_id</tt> is equal to that SPIFFE ID. Clients identified by a Client ID Metadata Document <bcp14>MUST</bcp14> include the <tt>client_id</tt> parameter.</t>
        <t>In all other cases, the authorization server <bcp14>MUST</bcp14> reject the request with an <tt>invalid_client</tt> error as defined in Section 5.2 of <xref target="RFC6749"/>.</t>
        <t>A client <bcp14>SHOULD</bcp14> include the <tt>client_id</tt> parameter whenever its client identifier differs from its SPIFFE ID.</t>
      </section>
      <section anchor="jwt-svid">
        <name>Client Authentication with JWT-SVIDs</name>
        <t>JWT-SVID based authentication follows the JWT Profile for OAuth 2.0 Client Authentication <xref target="RFC7523"/>, with specific adaptations for SPIFFE JWT-SVIDs. The requirements of <xref target="RFC7521"/> continue to apply.</t>
        <t>To identify the assertion content as a JWT-SVID this specification establishes the following client assertion type as an OAuth URI according to <xref target="RFC6755"/>:</t>
        <artwork><![CDATA[
urn:ietf:params:oauth:client-assertion-type:jwt-spiffe
]]></artwork>
        <t>Based on <xref target="RFC7523"/> the following request parameters are used to perform client authentication in the context of this specification:</t>
        <ul spacing="normal">
          <li>
            <t>client_id: <bcp14>OPTIONAL</bcp14>. See <xref target="client-identification"/>.</t>
          </li>
          <li>
            <t>client_assertion_type: <bcp14>MUST</bcp14> be set to <tt>urn:ietf:params:oauth:client-assertion-type:jwt-spiffe</tt>.</t>
          </li>
          <li>
            <t>client_assertion: <bcp14>MUST</bcp14> be a single SPIFFE JWT-SVID.</t>
          </li>
        </ul>
        <t>To validate JWT-SVID client authentication requests the authorization server <bcp14>MUST</bcp14>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Verify that the JWT is well-formed and contains all required claims (SPIFFE ID in <tt>sub</tt>, <tt>aud</tt>, and <tt>exp</tt>).</t>
          </li>
          <li>
            <t>Verify that the JWT has not expired (check the <tt>exp</tt> claim).</t>
          </li>
          <li>
            <t>Verify that the <tt>aud</tt> claim contains the issuer identifier of the authorization server as its sole value. See <xref target="I-D.draft-ietf-oauth-rfc7523bis"/> for details.</t>
          </li>
          <li>
            <t>Verify the JWT signature using the signing keys of the trust domains according to <xref target="spiffe-bundle-validation"/>.</t>
          </li>
          <li>
            <t>Identify the client and verify that the SPIFFE ID in the <tt>sub</tt> claim is authorized to authenticate as that client according to <xref target="client-identification"/>.</t>
          </li>
        </ol>
        <section anchor="jwt-svid-example">
          <name>JWT-SVID example</name>
          <t>The following example illustrates an authorization_code request to the token endpoint of an OAuth 2.0 authorization server leveraging a SPIFFE JWT-SVID to authenticate the client. The client is registered at the authorization server with <tt>client_id</tt> <tt>s6BhdRkqt3</tt> and associated with the SPIFFE ID <tt>spiffe://example.org/my-oauth-client</tt>.</t>
          <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&
client_id=s6BhdRkqt3&
client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-spiffe&
client_assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6Ilh0V09KcFB2TGJteHdJekVpVmJaU1B0dVdodmRkdVVWIiwidHlwIjoiSldUIn0.eyJhdWQiOlsiaHR0cHM6Ly9hcy5leGFtcGxlLmNvbSJdLCJleHAiOjE3NDcxMjQ1NDMsImlhdCI6MTc0NzEyNDI0Mywic3ViIjoic3BpZmZlOi8vZXhhbXBsZS5vcmcvbXktb2F1dGgtY2xpZW50In0.s_rkqyc6d9j_VcO7sIygVnS7IcnX_8GEwSaIOTj1D3uW3zJho65ubYuSisybtP43GaS7xo29He1n1XtrAZLmEA
]]></artwork>
          <t>For clarity, the JWT-SVID header and body decoded:</t>
          <artwork><![CDATA[
{
  "alg": "ES256",
  "kid": "XtWOJpPvLbmxwIzEiVbZSPtuWhvdduUV",
  "typ": "JWT"
}.
{
  "aud": [
    "https://as.example.com"
  ],
  "exp": 1747124543,
  "iat": 1747124243,
  "sub": "spiffe://example.org/my-oauth-client"
}
]]></artwork>
        </section>
        <section anchor="jwt-svid-example-with-client-id-metadata-document">
          <name>JWT-SVID example with Client ID Metadata Document</name>
          <t>The following example illustrates a <tt>client_credentials</tt> request to the token endpoint of an OAuth 2.0 authorization server leveraging a SPIFFE JWT-SVID to authenticate the client.</t>
          <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&
client_id=https%3A%2F%2Fexample.org%2Fclient%2Fmetadata.json&
client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-spiffe&
client_assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6Ilh0V09KcFB2TGJteHdJekVpVmJaU1B0dVdodmRkdVVWIiwidHlwIjoiSldUIn0.eyJhdWQiOlsiaHR0cHM6Ly9hcy5leGFtcGxlLmNvbSJdLCJleHAiOjE3NDcxMjQ1NDMsImlhdCI6MTc0NzEyNDI0Mywic3ViIjoic3BpZmZlOi8vZXhhbXBsZS5vcmcvY2xpZW50LzEyMzQifQ.kaR5-gkok6OmVTkLj79kpuwmQcuLsG6POiTcKFa-ze2PXQyYhzbnTRevCbMpUG1IR0w_WJfmIFKK2yEF62C5wA
]]></artwork>
          <t>For clarity, the JWT-SVID header and body decoded:</t>
          <artwork><![CDATA[
{
  "alg": "ES256",
  "kid": "XtWOJpPvLbmxwIzEiVbZSPtuWhvdduUV",
  "typ": "JWT"
}.
{
  "aud": [
    "https://as.example.com"
  ],
  "exp": 1747124543,
  "iat": 1747124243,
  "sub": "spiffe://example.org/client/1234"
}
]]></artwork>
          <t>The <tt>client_id</tt> points to a Client ID Metadata Document (<xref target="I-D.ietf-oauth-client-id-metadata-document"/>) with the following contents:</t>
          <artwork><![CDATA[
{
    "client_id": "https://example.org/client/metadata.json",
    "client_name": "Example Client",
    "spiffe_id": "spiffe://example.org/client/*",
    "spiffe_bundle_endpoint": "https://example.org/client/bundle.json"
}
]]></artwork>
        </section>
      </section>
      <section anchor="x509-svid">
        <name>Client Authentication using X509-SVID</name>
        <t>X509-SVID based authentication uses mutual TLS as defined in OAuth 2.0 Mutual-TLS Client Authentication <xref target="RFC8705"/>, with specific adaptations for SPIFFE X509-SVIDs.</t>
        <t>To authenticate using an X509-SVID, the client establishes a mutual TLS connection with the authorization server using its X509-SVID as the client certificate. The authorization server validates the client certificate as an X509-SVID and extracts the SPIFFE ID from the URI SAN. The client <bcp14>MUST</bcp14> authenticate the authorization server using standard HTTPS server certificate verification, with the trust anchors it uses for other HTTPS connections.</t>
        <t>The authorization server determines that X509-SVID client authentication applies from the client's registered authentication method (e.g., a <tt>token_endpoint_auth_method</tt> value of <tt>spiffe_x509</tt>), and not from the format of the <tt>client_id</tt> value.</t>
        <t>The <tt>client_id</tt> parameter is <bcp14>OPTIONAL</bcp14>. This deviates from Section 2 of <xref target="RFC8705"/>, which requires the <tt>client_id</tt> parameter for mutual-TLS client authentication. Because the X509-SVID carries exactly one SPIFFE ID in its URI SAN, the client can be identified from the certificate without ambiguity. See <xref target="client-identification"/>.</t>
        <t>The authorization server validates the client certificate according to the following rules:</t>
        <ol spacing="normal" type="1"><li>
            <t>Validate the certificate as an X509-SVID according to <xref target="SPIFFE_X509"/>.</t>
          </li>
          <li>
            <t>Path validation <bcp14>MUST</bcp14> use only the trust anchors for the trust domain of the SPIFFE ID in the certificate's URI SAN, obtained as described in <xref target="spiffe-bundle-validation"/>. Other trust anchors, including those of other trust domains or the system trust store, <bcp14>MUST NOT</bcp14> be used.</t>
          </li>
          <li>
            <t>Identify the client and verify that the SPIFFE ID in the URI SAN is authorized to authenticate as that client according to <xref target="client-identification"/>.</t>
          </li>
        </ol>
        <t>Authorization servers <bcp14>MAY</bcp14> issue certificate-bound access tokens as described in Section 3 of <xref target="RFC8705"/> to clients authenticated with an X509-SVID. Because X509-SVIDs are typically short-lived, such an access token cannot be used once the client's X509-SVID has been rotated, and the client needs to obtain a new access token.</t>
        <section anchor="x509-svid-example">
          <name>X509-SVID Example</name>
          <t>The following request uses a refresh token to obtain a new access token. The client is <tt>s6BhdRkqt3</tt>, associated with the SPIFFE ID <tt>spiffe://example.org/my-oauth-client</tt>, and is authenticated by performing this request over a mutual TLS connection.</t>
          <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&
refresh_token=tGzv3JOkF0XG5Qx2TlKWIA&
client_id=s6BhdRkqt3
]]></artwork>
          <t>For clarity, the presented X509-SVID client certificate to the server decoded via <tt>openssl x509 -text</tt> is:</t>
          <artwork><![CDATA[
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            5c:2d:a8:f3:d0:c0:1a:50:19:8b:1a:f8:ee:0c:c1:58:fa:a7:ea:87
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: C = US, O = SPIFFE
        Validity
            Not Before: May 16 11:26:11 2025 GMT
            Not After : May 16 12:26:21 2025 GMT
        Subject: C = US, O = SPIRE
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub:
                    04:99:0e:83:13:cf:95:7c:9c:07:ed:b2:72:8f:c3:
                    57:4c:b0:3b:87:ca:3d:5c:ea:1c:96:68:84:79:c2:
                    8a:e1:d9:36:fd:c6:90:16:ea:57:a7:e8:4b:15:89:
                    d0:67:64:5d:03:11:1f:70:22:0a:5f:8d:58:57:b5:
                    8a:6d:54:ee:4f
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                70:A5:DB:B1:87:84:F3:27:4B:04:F6:8B:6D:4B:4B:94:58:67:B3:C8
            X509v3 Authority Key Identifier:
                ED:6C:D4:A4:E1:D1:48:23:A0:5C:4C:BD:92:3C:26:BD:4B:1C:26:1B
            X509v3 Subject Alternative Name:
                URI:spiffe://example.org/my-oauth-client
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:65:02:30:03:51:e7:af:3a:d2:49:a2:1b:e1:f8:ef:12:83:
        91:13:df:b1:c4:d3:57:f5:12:74:0a:6e:3f:1f:b4:57:8b:35:
        16:a1:36:46:cd:f5:db:dc:62:73:38:b5:da:14:9c:50:02:31:
        00:e7:db:76:c8:23:78:28:ab:36:f6:c4:48:81:f6:4e:83:a4:
        07:2a:57:fa:62:87:ae:8f:3d:0d:ef:4e:ff:4a:90:74:50:c6:
        16:2f:78:9b:fd:13:8e:c5:14:c0:c8:1d:15
]]></artwork>
        </section>
      </section>
      <section anchor="wit-svid">
        <name>Client Authentication with WIT-SVIDs</name>
        <t>A WIT-SVID is a WIMSE Workload Identity Token (WIT) as defined in <xref target="I-D.draft-ietf-wimse-workload-creds"/> that contains a SPIFFE ID in the <tt>sub</tt> claim <xref target="SPIFFE_WIT"/>. It uses OAuth 2.0 Attestation-Based Client Authentication <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/> for client authentication.</t>
        <t>A WIT-SVID as issued by a SPIFFE implementation binds a key pair held by the client via the <tt>cnf</tt> claim. The key pair bound to the WIT-SVID is used to generate an attestation proof during client authentication. The attestation proof is in the form of a "Client Attestation PoP JWT" as defined in <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/> that is issued by the client and signed with the private part of the key pair bound in the WIT-SVID.</t>
        <t>The WIT-SVID and the corresponding Client Attestation PoP JWT are sent together to the authorization server as a means of client authentication using the HTTP header-based syntax defined in Section 5.1 of <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/>.</t>
        <t>The <tt>client_id</tt> parameter is <bcp14>OPTIONAL</bcp14>. See <xref target="client-identification"/>.</t>
        <section anchor="wit-svid-validation">
          <name>Authorization Server Validation</name>
          <t>This specification is a profile of <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/> as described in Section 13 of that document. The authorization server determines that this profile applies when the <tt>typ</tt> JWT header parameter of the <tt>OAuth-Client-Attestation</tt> header is <tt>wit+jwt</tt>.</t>
          <t>To validate a WIT-SVID client authentication request, the authorization server <bcp14>MUST</bcp14> apply the following rules:</t>
          <ul spacing="normal">
            <li>
              <t>The authorization server <bcp14>MUST</bcp14> accept <tt>wit+jwt</tt> as a valid value of the <tt>typ</tt> JWT header parameter in the <tt>OAuth-Client-Attestation</tt> header, in addition to <tt>oauth-client-attestation+jwt</tt>.</t>
            </li>
            <li>
              <t>The WIT-SVID <bcp14>MUST</bcp14> be validated as a Workload Identity Token according to Section 5.1.3 of <xref target="I-D.draft-ietf-wimse-workload-creds"/>.</t>
            </li>
            <li>
              <t>The WIT-SVID signature <bcp14>MUST</bcp14> be verified using the signing keys of the trust domain according to <xref target="spiffe-bundle-validation"/>.</t>
            </li>
            <li>
              <t>The Client Attestation PoP JWT <bcp14>MUST</bcp14> be validated according to Section 7.2 of <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/>.</t>
            </li>
            <li>
              <t>The client <bcp14>MUST</bcp14> be identified and the SPIFFE ID in the <tt>sub</tt> claim <bcp14>MUST</bcp14> be verified according to <xref target="client-identification"/>. This replaces the <tt>client_id</tt> to <tt>sub</tt> matching rule of <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/>.</t>
            </li>
          </ul>
          <t>The authorization server advertises support for WIT-SVID client authentication using the <tt>spiffe_wit</tt> value as described in <xref target="interoperability"/>. The <tt>attest_jwt_client_auth</tt> value defined in <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/> indicates support for Client Attestation JWTs in general and does not by itself indicate support for WIT-SVIDs.</t>
        </section>
        <section anchor="wit-svid-example">
          <name>WIT-SVID Example</name>
          <t>The following example illustrates a token request using a WIT-SVID and a Client Attestation PoP JWT for client authentication. The client is registered at the authorization server with <tt>client_id</tt> <tt>s6BhdRkqt3</tt> and associated with the SPIFFE ID <tt>spiffe://example.org/my-oauth-client</tt>.</t>
          <t>The WIT-SVID (OAuth-Client-Attestation) header and body decoded:</t>
          <artwork><![CDATA[
{
  "typ": "wit+jwt",
  "alg": "ES256",
  "kid": "yiBgUXz7bH57y84n4G-6dzvNchf6XLpT"
}.
{
  "iss": "spiffe://example.org/my-spiffe-workload-api",
  "sub": "spiffe://example.org/my-oauth-client",
  "exp": 1747128000,
  "iat": 1747124400,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "alg": "ES256",
      "crv": "P-256",
      "x": "bVtfeeqioPItPfBpVgPdG1LPmAgGTMhUHV6IK9olqDE",
      "y": "vLXTrclqzyq7BDaL471iew6o7B-mwoE6T9zUC4ZeDgA"
    }
  }
}
]]></artwork>
          <t>The Client Attestation PoP JWT (OAuth-Client-Attestation-PoP) header and body decoded:</t>
          <artwork><![CDATA[
{
  "typ": "oauth-client-attestation-pop+jwt",
  "alg": "ES256"
}.
{
  "iss": "spiffe://example.org/my-oauth-client",
  "aud": "https://as.example.com",
  "jti": "d25d00ab-552b-46fc-ae19-98f440f25064",
  "iat": 1747124400
}
]]></artwork>
          <t>The token endpoint request:</t>
          <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
OAuth-Client-Attestation: eyJ0eXAiOiJ3aXQrand0IiwiYWxnIjoiRVMyNTYi...
OAuth-Client-Attestation-PoP: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRp...

grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&
client_id=s6BhdRkqt3
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="interoperability">
      <name>Interoperability</name>
      <t>In order to achieve interoperability between the authorization server and clients the authorization server <bcp14>MUST</bcp14> advertise what client authentication methods are supported.</t>
      <t>Authorization servers <bcp14>MUST</bcp14> support at least one of JWT-SVID, X509-SVID or WIT-SVID. The methods supported <bcp14>MUST</bcp14> be advertised in the authorization servers metadata <xref target="RFC8414"/> by including <tt>spiffe_jwt</tt>, <tt>spiffe_wit</tt> and/or <tt>spiffe_x509</tt> in the <tt>token_endpoint_auth_methods_supported</tt> list. Additionally, the same values should be included in <tt>revocation_endpoint_auth_methods_supported</tt> and <tt>introspection_endpoint_auth_methods_supported</tt> when applicable.</t>
      <t>Clients <bcp14>MUST</bcp14> support at least one of JWT-SVID, X509-SVID or WIT-SVID. To guarantee interoperability a client <bcp14>SHOULD</bcp14> support all.</t>
      <t>It is the responsibility of the client to select the authentication method supported by the authorization server and its deployment.</t>
    </section>
    <section anchor="spiffe-trust-establishment-and-client-registration">
      <name>SPIFFE Trust Establishment and Client Registration</name>
      <t>This specification requires previously established trust between the OAuth 2.0 Authorization Server and the SPIFFE Trust Domain. This needs to happen out of band and is not in scope of this specification. However, the mechanism of key distribution is in scope and is described in <xref target="spiffe-bundle-validation"/>.</t>
      <t>Similar to the trust establishment, corresponding OAuth clients need to be registered when using SPIFFE credentials for client authentication. OAuth client registration may leverage Client ID Metadata Documents <xref target="I-D.ietf-oauth-client-id-metadata-document"/>, OAuth 2.0 Dynamic Client Registration <xref target="RFC7591"/> or configure them out of band.</t>
      <section anchor="client-registration-metadata">
        <name>Client Registration Metadata</name>
        <t>This specification defines the following client metadata parameters for use in Client ID Metadata Documents <xref target="I-D.ietf-oauth-client-id-metadata-document"/>:</t>
        <dl>
          <dt>spiffe_id</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The SPIFFE ID of the client, e.g. <tt>spiffe://example.org/my-oauth-client</tt>. The value <bcp14>MAY</bcp14> include a trailing <tt>/*</tt> character sequence (e.g. <tt>spiffe://example.org/workloads/*</tt>) indicating that a prefix match against the SPIFFE ID of the presented SVID is acceptable rather than requiring an exact match.</t>
          </dd>
          <dt>spiffe_bundle_endpoint</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. The URL of the SPIFFE Bundle Endpoint for the client's trust domain, which the authorization server can use to retrieve the signing keys for validating the client's SVIDs. If not provided, the authorization server <bcp14>MUST</bcp14> obtain the signing keys for the client's trust domain through some other established mechanism, such as a pre-configured SPIFFE bundle. Bundles obtained from this endpoint are subject to <xref target="client-scoped-bundles"/>. See also <xref target="cimd-bundle-security"/>.</t>
          </dd>
        </dl>
        <t>If the <tt>spiffe_id</tt> value uses a wildcard, it <bcp14>MUST</bcp14> end with the two-character sequence "<tt>/*</tt>". In this case, the authorization server <bcp14>MUST</bcp14> perform a path-segment prefix match: the SPIFFE ID of the presented SVID <bcp14>MUST</bcp14> begin with the <tt>spiffe_id</tt> value excluding the trailing "<tt>*</tt>" (i.e., up to and including the final "<tt>/</tt>"), and this prefix <bcp14>MUST</bcp14> correspond to complete path segment(s) of the SPIFFE ID (for example, <tt>spiffe://example.org/client/*</tt> matches <tt>spiffe://example.org/client/123</tt> but does not match <tt>spiffe://example.org/client123</tt>). Otherwise, the SPIFFE ID of the presented SVID <bcp14>MUST</bcp14> be an exact match of the <tt>spiffe_id</tt> value.</t>
        <t>A client indicates the SPIFFE-based client authentication methods it supports in its client metadata, whether registered using Dynamic Client Registration <xref target="RFC7591"/> or published in a Client ID Metadata Document <xref target="I-D.ietf-oauth-client-id-metadata-document"/>, using the values defined in <xref target="interoperability"/>. A client that supports more than one method lists them in the <tt>token_endpoint_auth_methods_supported</tt> parameter defined in Section 2 of <xref target="OpenID.RP-Metadata-Choices"/>. A client <bcp14>SHOULD</bcp14> also include the <tt>token_endpoint_auth_method</tt> parameter <xref target="RFC7591"/> with its preferred method, so that authorization servers that do not support <tt>token_endpoint_auth_methods_supported</tt> do not apply the <xref target="RFC7591"/> default of <tt>client_secret_basic</tt>.</t>
      </section>
    </section>
    <section anchor="spiffe-bundle-validation">
      <name>SPIFFE Key Distribution and Validation</name>
      <t>This section describes how an authorization server verifies the signature of SVIDs. It recommends two SPIFFE-native approaches.</t>
      <t>The 2 approaches can be used in conjunction, for instance:</t>
      <artwork><![CDATA[
Trust domain "example.org": Workload API at unix:///var/secrets/spiffe/agent.sock
Trust domain "production": SPIFFE Bundle Endpoint at https://example.com/auth/spiffe/bundle.json
]]></artwork>
      <t>Trust bundles in general <bcp14>MUST</bcp14> be keyed by the trust domain identifier to prevent mix-up between trust domains and their corresponding bundles. Bundles obtained from client metadata are additionally keyed by the <tt>client_id</tt>, as described in <xref target="client-scoped-bundles"/>.</t>
      <section anchor="client-scoped-bundles">
        <name>Bundles from Client Metadata</name>
        <t>When an authorization server obtains a bundle from a client's <tt>spiffe_bundle_endpoint</tt>, it <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>associate the bundle with both the <tt>client_id</tt> and the trust domain of the client's <tt>spiffe_id</tt>, and use it only to validate SVIDs presented to authenticate as that client;</t>
          </li>
          <li>
            <t>not add the bundle's keys to any bundle it holds for that trust domain, nor use them to validate SVIDs presented for any other client.</t>
          </li>
        </ul>
        <t>If the authorization server has a bundle for the trust domain obtained as described in <xref target="spiffe-bundle-validation"/>, it <bcp14>SHOULD</bcp14> use that bundle and ignore <tt>spiffe_bundle_endpoint</tt>.</t>
      </section>
      <section anchor="spiffe-bundle-endpoint">
        <name>SPIFFE Bundle Endpoint</name>
        <t>The SPIFFE Bundle Endpoint as defined in Section 4 of <xref target="SPIFFE_FEDERATION"/> exposes the signing keys for SVIDs over HTTP via a JSON Web Key Set according to <xref target="RFC7517"/>.</t>
        <t>SPIFFE Federation <xref target="SPIFFE_FEDERATION"/> defines two endpoint profiles for serving and consuming a bundle endpoint. For interoperability, the authorization server <bcp14>MUST</bcp14> use the <tt>https_web</tt> profile (Section 5.2.1 of <xref target="SPIFFE_FEDERATION"/>). The bundle endpoint is served over HTTPS, and the authorization server verifies the endpoint's server certificate using standard HTTPS server certificate verification against its locally configured trust anchors. This specification does not use the <tt>https_spiffe</tt> profile.</t>
        <t>The authorization server <bcp14>SHOULD</bcp14> manage and refresh trust bundles according to Section 4.1 and 4.2 of <xref target="SPIFFE_FEDERATION"/>.</t>
        <t>The authorization server <bcp14>MUST</bcp14> associate each bundle endpoint with exactly one trust domain, and <bcp14>MUST</bcp14> use keys obtained from that endpoint only to validate SVIDs.</t>
        <t>At the time of writing, the SPIFFE bundle endpoint cannot be derived from an SVID or SPIFFE-ID and <bcp14>MUST</bcp14> be configured out of band. The security considerations that apply when configuring it using <tt>spiffe_bundle_endpoint</tt> of Client ID Metadata Documents are described in <xref target="cimd-bundle-security"/>.</t>
        <section anchor="example">
          <name>Example</name>
          <t>The following examples showcase how the Authorization Server can perform key discovery for the trust domain <tt>example.org</tt>. Important to note is the difference between <tt>example.org</tt> trust domain and <tt>example.com</tt> location for the SPIFFE Bundle Endpoint. This highlights the importance of explicit configuration and demonstrates why the SPIFFE Bundle Endpoint cannot be derived or discovered from SVIDs without explicit configuration.</t>
          <t>Example configuration at the OAuth Authorization Server in the JSON format</t>
          <artwork><![CDATA[
{
  "example.org": {
    "spiffe_bundle_endpoint": {
      "url": "https://example.com/bundle.json"
    }
  }
}
]]></artwork>
          <ul empty="true">
            <li>
              <t>Note difference between example.org and example.com</t>
            </li>
          </ul>
          <t>Example SPIFFE Bundle Endpoint request, response:</t>
          <artwork><![CDATA[
GET /bundle.json HTTP/1.1
Host: example.com

{
  "keys": [
    {
      "use": "x509-svid",
      "kty": "EC",
      "crv": "P-384",
      "x": "gzFU0pSlTB_CetVsgffq1hULPiiBgwwQcfSXx1v5dQZufpw60d0kfOzfjj2aFSTF",
      "y": "rhkqYZjNiaMhc90R-7VUGDLlJhwQIF3RKsr9ByHyKs1x-ps7kgMNIvXfXijIe17u",
      "x5c": [
        "MIIB3jCCAWSgAwIBAgIUTjjnWi5B964Eds55GkVbRy5o1twwCgYIKoZIzj0EAwQwHjELMAkGA1UEBhMCVVMxDzANBgNVBAoMBlNQSUZGRTAeFw0yNTA1MTYxMTIzMTlaFw0zMDA1MTUxMTIzMTlaMB4xCzAJBgNVBAYTAlVTMQ8wDQYDVQQKDAZTUElGRkUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASDMVTSlKVMH8J61WyB9+rWFQs+KIGDDBBx9JfHW/l1Bm5+nDrR3SR87N+OPZoVJMWuGSphmM2JoyFz3RH7tVQYMuUmHBAgXdEqyv0HIfIqzXH6mzuSAw0i9d9eKMh7Xu6jYzBhMB0GA1UdDgQWBBTtbNSk4dFII6BcTL2SPCa9SxwmGzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHREEGDAWhhRzcGlmZmU6Ly9leGFtcGxlLm9yZzAKBggqhkjOPQQDBANoADBlAjEAwMN6eWvh1Z9k+a1Ne1eSev/U/9pK8iwNI8hNyUV9elJ/Wmtb93LySjicrojqADfKAjBXFOBL7W5XjnonRK1XE0nFFiH6Wz/rqr3pAXyeh2dUSrWFfuNeOtOb3jBASgylWvE="
      ]
    },
    {
      "use": "jwt-svid",
      "kty": "EC",
      "kid": "XtWOJpPvLbmxwIzEiVbZSPtuWhvdduUV",
      "crv": "P-256",
      "x": "aZUP_XQ-NxoG9qS-Vv1rbHWFaKVfwhE7esdhA-MH7YQ",
      "y": "kfUWpboWvnNVSBdtzhKpWQI_ekDhV41lFabw7BXMUSE"
    },
    {
      "use": "wit-svid",
      "kty": "EC",
      "kid": "yiBgUXz7bH57y84n4G-6dzvNchf6XLpT",
      "crv": "P-256",
      "x": "mJhib8xua3b7vdwjnD88xeIscm5w8nODtrKi7P2J-Nw",
      "y": "2I1ELva5_fIgVP3eP8f2Zl7SM3Tky8Bkkmo1YJNH-RI"
    }
  ],
  "spiffe_sequence": 10,
  "spiffe_refresh_hint": 300
}
]]></artwork>
          <ul empty="true">
            <li>
              <t>The <tt>use</tt> parameter in the JSON Web Key indicates the credential format the key is intended for. Multiple keys of the same use can be present.</t>
            </li>
          </ul>
          <t>The X509-SVID signing certificate (<tt>.keys[0].x5c[0]</tt> from response above) in text form:</t>
          <artwork><![CDATA[
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            4e:38:e7:5a:2e:41:f7:ae:04:76:ce:79:1a:45:5b:47:2e:68:d6:dc
        Signature Algorithm: ecdsa-with-SHA512
        Issuer: C = US, O = SPIFFE
        Validity
            Not Before: May 16 11:23:19 2025 GMT
            Not After : May 15 11:23:19 2030 GMT
        Subject: C = US, O = SPIFFE
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (384 bit)
                pub:
                    04:83:31:54:d2:94:a5:4c:1f:c2:7a:d5:6c:81:f7:
                    ea:d6:15:0b:3e:28:81:83:0c:10:71:f4:97:c7:5b:
                    f9:75:06:6e:7e:9c:3a:d1:dd:24:7c:ec:df:8e:3d:
                    9a:15:24:c5:ae:19:2a:61:98:cd:89:a3:21:73:dd:
                    11:fb:b5:54:18:32:e5:26:1c:10:20:5d:d1:2a:ca:
                    fd:07:21:f2:2a:cd:71:fa:9b:3b:92:03:0d:22:f5:
                    df:5e:28:c8:7b:5e:ee
                ASN1 OID: secp384r1
                NIST CURVE: P-384
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                ED:6C:D4:A4:E1:D1:48:23:A0:5C:4C:BD:92:3C:26:BD:4B:1C:26:1B
            X509v3 Basic Constraints: critical
                CA:TRUE
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Subject Alternative Name:
                URI:spiffe://example.org
    Signature Algorithm: ecdsa-with-SHA512
    Signature Value:
        30:65:02:31:00:c0:c3:7a:79:6b:e1:d5:9f:64:f9:ad:4d:7b:
        57:92:7a:ff:d4:ff:da:4a:f2:2c:0d:23:c8:4d:c9:45:7d:7a:
        52:7f:5a:6b:5b:f7:72:f2:4a:38:9c:ae:88:ea:00:37:ca:02:
        30:57:14:e0:4b:ed:6e:57:8e:7a:27:44:ad:57:13:49:c5:16:
        21:fa:5b:3f:eb:aa:bd:e9:01:7c:9e:87:67:54:4a:b5:85:7e:
        e3:5e:3a:d3:9b:de:30:40:4a:0c:a5:5a:f1
]]></artwork>
        </section>
      </section>
      <section anchor="alternative-methods-to-avoid">
        <name>Alternative methods to avoid</name>
        <t>The following key distribution mechanisms are alternatives and <bcp14>SHOULD</bcp14> be avoided for interoperability reasons.</t>
        <section anchor="spiffe-workload-api">
          <name>SPIFFE Workload API</name>
          <t>The SPIFFE Workload API allows workloads to retrieve a trust bundle. It requires the authorization server to be part of a SPIFFE trust domain and be considered a workload within it. The SPIFFE Workload API is designed so that the workload receives trust bundle updates as they occur and does not need to poll for them, which reduces the time to distribute them. In addition to the trust bundle of the trust domain the workload resides in, the SPIFFE Workload API also allows retrieval of trust bundles from federated trust domains.</t>
          <t>This approach is <bcp14>NOT RECOMMENDED</bcp14> for OAuth SPIFFE Client Authentication for the following reasons:</t>
          <ul spacing="normal">
            <li>
              <t>OAuth Authorization Server needs to be a workload within a SPIFFE trust domain, which is a significant limitation for deployment scenarios.</t>
            </li>
            <li>
              <t>Federated trust domain bundles create ambiguity about how they are handled. When distributed via the SPIFFE Workload API the trust relationship and points where they are established become ambiguous.</t>
            </li>
          </ul>
        </section>
        <section anchor="manual-configuration">
          <name>Manual configuration</name>
          <t>In small, static environments the authorization server <bcp14>MAY</bcp14> be configured with the SPIFFE bundles manually. This approach requires human interaction to set up, rotate and manage keying material and is thus generally <bcp14>NOT RECOMMENDED</bcp14>.</t>
        </section>
        <section anchor="using-the-system-trust-store">
          <name>Using the system trust store</name>
          <t>X509-SVIDs <bcp14>MUST NOT</bcp14> be validated using the system trust store. The SPIFFE ID carried in the URI SAN is usually not a verifiable attribute in the broader X.509 ecosystem. Using the system trust store as trust anchor would allow ANY certificate authority in it to issue a trusted X509-SVID for ANY SPIFFE ID. In comparison: using SPIFFE-native validation methods restricts the signing of SPIFFE-IDs to the corresponding trust domain signing keys.</t>
        </section>
        <section anchor="svid-iss-claim">
          <name>Using the JWT-SVID or WIT-SVID <tt>iss</tt> claim</name>
          <t>JSON Web Token-based credentials carrying <tt>iss</tt> claims could technically be validated by retrieving the signing keys via OpenID Connect Discovery or OAuth 2.0 Authorization Server Metadata. This approach only applies for the JWT-SVID and WIT-SVID and only works when the <tt>iss</tt> claim is present, which is optional.</t>
          <t>Because of its narrow scope and interoperability considerations, this approach is not a general alternative to the SPIFFE Bundle Endpoint. Implementations <bcp14>SHOULD</bcp14> use the mechanisms defined in this specification when available. However, when those mechanisms are not supported by a peer deployment, implementations <bcp14>MAY</bcp14> use <tt>iss</tt>-based discovery and key retrieval for JWT-SVID or WIT-SVID validation as a compatibility mechanism, subject to local policy, appropriate trust configuration and risk mitigations described in <xref target="iss-claim-security-considerations"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t><cref>Note to RFC Editor: please remove this section, as well as the reference to RFC 7942, before publication.</cref></t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>
      <t>According to RFC 7942, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.  It is up to the individual working groups to use this information as they see fit".</t>
      <t>Keycloak</t>
      <ul spacing="normal">
        <li>
          <t>Organization: CNCF / IBM</t>
        </li>
        <li>
          <t>Maturity: preview</t>
        </li>
        <li>
          <t>Coverage: JWT-SVID client authentication using SPIFFE Trust Bundle Endpoint</t>
        </li>
        <li>
          <t>Contact: <eref target="https://www.keycloak.org/community">Keycloak community &amp; maintainers</eref></t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Client authentication using JWT-SVIDs has the same security considerations as described in <xref target="RFC6749"/>, <xref target="RFC7521"/> and <xref target="RFC7523"/>.</t>
      <t>Client authentication using X509-SVIDs has the same security considerations as described in <xref target="RFC8705"/>. The validation rules in <xref target="x509-svid"/> protect against an OAuth2 token being issued (or being issued incorrectly) to a client that did not present an appropriate X509-SVID.</t>
      <t>Client authentication using WIT-SVIDs has the same security considerations as described in <xref target="I-D.draft-ietf-wimse-workload-creds"/> and <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/>.</t>
      <t>The issues described in <xref target="spiffe-bundle-validation"/> include the risk that an authorization server may have the incorrect trust stores configured to validate the client SVID. This could result in an incorrectly issued token to an attacker if the attacker is able to obtain a certificate that can be validated by one of the misconfigured trust anchors in the trust store.</t>
      <section anchor="replay-of-jwt-svids">
        <name>Replay of JWT-SVIDs</name>
        <t><xref target="SPIFFE_JWT"/> permits but does not require a <tt>jti</tt> claim, and JWT-SVID validators are not required to track <tt>jti</tt> uniqueness. SPIFFE implementations may also return the same cached JWT-SVID to a workload for multiple requests. Authorization servers therefore cannot in general rely on <tt>jti</tt>-based replay detection as described in <xref target="RFC7523"/>. An authorization server may use the <tt>jti</tt> claim for replay detection where it is present and the deployment does not reuse JWT-SVIDs across requests. An attacker that obtains a JWT-SVID can use it for client authentication until it expires. The audience restriction in step 3 of <xref target="jwt-svid"/> limits its use to this authorization server.</t>
        <t>Deployments requiring replay resistance <bcp14>SHOULD</bcp14> either use JWT-SVIDs that carry a unique <tt>jti</tt> claim and are not reused, with the authorization server rejecting a repeated <tt>jti</tt>, or use X509-SVID or WIT-SVID client authentication, which require proof of possession of a private key.</t>
      </section>
      <section anchor="cimd-bundle-security">
        <name>Trust Bundles from Client ID Metadata Documents</name>
        <t>When an authorization server accepts <tt>spiffe_bundle_endpoint</tt> from a Client ID Metadata Document, the party controlling the <tt>client_id</tt> URL also selects the keys used to validate the client's SVIDs. Successful authentication then shows that the client holds a key vouched for by that party, not that the trust domain named in <tt>spiffe_id</tt> issued the SVID. The trust model rests on control of the <tt>client_id</tt> host and the integrity of HTTPS retrieval, as described in the Security Considerations of <xref target="I-D.ietf-oauth-client-id-metadata-document"/>. In return, trust bundles can be obtained without configuring a bundle endpoint for each trust domain in advance. Deployments that do not accept this trust model <bcp14>MUST</bcp14> ignore <tt>spiffe_bundle_endpoint</tt> values in Client ID Metadata Documents and <bcp14>SHOULD</bcp14> obtain bundles as described in <xref target="spiffe-bundle-validation"/>.</t>
        <t>If keys from a document were used beyond the client it describes, an attacker controlling a single document could introduce a signing key of its choice, issue SVIDs for any SPIFFE ID in that trust domain, and authenticate as any other client associated with that trust domain. The rules in <xref target="client-scoped-bundles"/> prevent this. They extend the binding between trust domain and bundle described in Section 7.3 of <xref target="SPIFFE_FEDERATION"/> to include the <tt>client_id</tt>.</t>
        <t>Client scoping does not prevent a document from claiming a trust domain its author does not operate. Trust domain names are chosen by their operators and are not bound to DNS (<xref target="SPIFFE_ID"/>), so a document hosted at <tt>https://attacker.example/</tt> can declare a <tt>spiffe_id</tt> of <tt>spiffe://bank.example/payments</tt> together with its own bundle. The attacker can then authenticate only as its own client, but the SPIFFE ID it presents was not issued by the <tt>bank.example</tt> trust domain. Unless the bundle was obtained as described in <xref target="spiffe-bundle-validation"/>, or the trust domain is bound to the host of the <tt>client_id</tt> URL, the authorization server <bcp14>MUST NOT</bcp14> treat that SPIFFE ID as issued by the trust domain, for example in authorization policy, access token claims or introspection responses.</t>
        <t>Authorization servers that accept bundles from documents <bcp14>SHOULD</bcp14> apply one or more of the following mitigations:</t>
        <ul spacing="normal">
          <li>
            <t>require the trust domain of <tt>spiffe_id</tt> to equal, or be a subdomain of, the host of the <tt>client_id</tt> URL;</t>
          </li>
          <li>
            <t>require <tt>spiffe_id</tt> to be an exact SPIFFE ID rather than a wildcard;</t>
          </li>
          <li>
            <t>restrict which <tt>client_id</tt> URLs are accepted using domain allowlists or pre-registration as described in <xref target="I-D.ietf-oauth-client-id-metadata-document"/>;</t>
          </li>
          <li>
            <t>issue short-lived or sender-constrained access tokens to such clients;</t>
          </li>
          <li>
            <t>treat a change in <tt>spiffe_id</tt>, <tt>spiffe_bundle_endpoint</tt>, or the keys it serves as a change in client keys, as described in <xref target="I-D.ietf-oauth-client-id-metadata-document"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="iss-claim-security-considerations">
        <name>JWT-SVID and WIT-SVID iss claim</name>
        <t>As described in <xref target="svid-iss-claim"/>, <tt>iss</tt>-based key discovery is not a general alternative to the SPIFFE Bundle Endpoint and <bcp14>SHOULD</bcp14> be avoided.</t>
        <t>However, if it is used, the authorization server <bcp14>MUST NOT</bcp14> perform issuer-based discovery solely based on the <tt>iss</tt> value from the token unless the <tt>iss</tt> value is already trusted by the authorization server, and that <tt>iss</tt> value is explicitly associated with the configured SPIFFE Trust Domain being validated.</t>
        <t>In addition implementations <bcp14>MUST NOT</bcp14> assume that keys advertised via OpenID Connect Discovery or OAuth 2.0 Authorization Server Metadata are dedicated to JWT-SVID issuance. The same provider infrastructure may issue multiple JWT types (e.g., OAuth/OIDC tokens, JWT-SVIDs, WIT-SVIDs). A token <bcp14>MUST NOT</bcp14> be accepted as a JWT-SVID or WIT-SVID solely because it is a JWT, its signature validates under keys discovered from iss, and its <tt>sub</tt> resembles a SPIFFE ID. Doing so can enable token confusion (e.g., presenting an OAuth/OIDC token issued for another purpose as a JWT-SVID). Implementations <bcp14>MUST</bcp14> validate SVIDs according to SVID-specific requirements and <bcp14>MUST</bcp14> use a trust anchor or key source explicitly bound to the configured SPIFFE Trust Domain, rather than generic issuer-based discovery from untrusted token input.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests a new entry to be added to the "OAuth URI" registry found at <eref target="https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#uri">https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#uri</eref>. The registration process is defined in <xref target="RFC6755"/>. This document requests the following entry to be added to the registry:</t>
      <ul spacing="normal">
        <li>
          <t>URN: urn:ietf:params:oauth:client-assertion-type:jwt-spiffe</t>
        </li>
        <li>
          <t>Common Name: SPIFFE JWT-SVID Profile for OAuth 2.0 Client Authentication</t>
        </li>
        <li>
          <t>Change Controller: IETF</t>
        </li>
        <li>
          <t>Reference: This Document</t>
        </li>
      </ul>
      <section anchor="oauth-dynamic-client-registration-metadata">
        <name>OAuth Dynamic Client Registration Metadata</name>
        <t>This document requests the following entries to be added to the "OAuth Dynamic Client Registration Metadata" registry defined in <xref target="RFC7591"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Client Metadata Name: <tt>spiffe_id</tt></t>
          </li>
          <li>
            <t>Client Metadata Description: SPIFFE ID of the client</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: This Document</t>
          </li>
          <li>
            <t>Client Metadata Name: <tt>spiffe_bundle_endpoint</tt></t>
          </li>
          <li>
            <t>Client Metadata Description: URL of the SPIFFE Bundle Endpoint for the client's trust domain</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: This Document</t>
          </li>
        </ul>
      </section>
      <section anchor="oauth-token-endpoint-authentication-methods">
        <name>OAuth Token Endpoint Authentication Methods</name>
        <t>This document requests the following entries in the "OAuth Token Endpoint Authentication Methods" registry:</t>
        <ul spacing="normal">
          <li>
            <t>Token Endpoint Authentication Method Name: <tt>spiffe_jwt</tt></t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="jwt-svid"/> of this document</t>
          </li>
          <li>
            <t>Token Endpoint Authentication Method Name: <tt>spiffe_x509</tt></t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="x509-svid"/> of this document</t>
          </li>
          <li>
            <t>Token Endpoint Authentication Method Name: <tt>spiffe_wit</tt></t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="wit-svid"/> of this document</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="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="RFC6755">
          <front>
            <title>An IETF URN Sub-Namespace for OAuth</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This document establishes an IETF URN Sub-namespace for use with OAuth-related specifications. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6755"/>
          <seriesInfo name="DOI" value="10.17487/RFC6755"/>
        </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="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </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="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="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="I-D.ietf-oauth-client-id-metadata-document">
          <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="I-D.draft-ietf-oauth-attestation-based-client-auth">
          <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="I-D.draft-ietf-wimse-workload-creds">
          <front>
            <title>WIMSE Workload Credentials</title>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Independent</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="30" month="October" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones up to complex multi-service, multi-cloud, multi-
   tenant deployments.

   This document defines the credentials that workloads use to represent
   their identity.  They can be used in various protocols to
   authenticate workloads to each other.  To use these credentials,
   workloads must provide proof of possession of the associated private
   key material, which is covered in other documents.  This document
   focuses on the credentials alone, independent of the proof-of-
   possession mechanism.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-workload-creds-03"/>
        </reference>
        <reference anchor="SPIFFE_ID" target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE-ID.md">
          <front>
            <title>SPIFFE-ID</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPIFFE_X509" target="https://github.com/spiffe/spiffe/blob/main/standards/X509-SVID.md">
          <front>
            <title>X509-SVID</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPIFFE_JWT" target="https://github.com/spiffe/spiffe/blob/main/standards/JWT-SVID.md">
          <front>
            <title>JWT-SVID</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPIFFE_WIT" target="https://github.com/spiffe/spiffe/blob/draft-wit-svid/standards/WIT-SVID.md">
          <front>
            <title>WIT-SVID</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPIFFE_BUNDLE" target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE_Trust_Domain_and_Bundle.md#4-spiffe-bundle-format">
          <front>
            <title>SPIFFE Bundle</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPIFFE_FEDERATION" target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE_Federation.md">
          <front>
            <title>SPIFFE Federation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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>
        <reference anchor="I-D.draft-ietf-oauth-rfc7523bis">
          <front>
            <title>Updates to OAuth 2.0 JSON Web Token (JWT) Client Authentication and Assertion-Based Authorization Grants</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
              <organization>Disney</organization>
            </author>
            <author fullname="Filip Skokan" initials="F." surname="Skokan">
              <organization>Okta</organization>
            </author>
            <date day="28" month="April" year="2026"/>
            <abstract>
              <t>   This document updates RFC7521, RFC7522, RFC7523 and RFC9126 with
   respect to the treatment of audience values in OAuth 2.0 Client
   Assertion Authentication and Assertion-based Authorization Grants to
   address a security vulnerability identified in the previous
   requirements for those audience values in multiple OAuth 2.0
   specifications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc7523bis-11"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OpenID.RP-Metadata-Choices" target="https://openid.net/specs/openid-connect-rp-metadata-choices-1_0-final.html">
          <front>
            <title>OpenID Connect Relying Party Metadata Choices 1.0</title>
            <author initials="M.B." surname="Jones" fullname="M.B. Jones">
              <organization/>
            </author>
            <author initials="R." surname="Hedberg" fullname="R. Hedberg">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="F." surname="Skokan" fullname="F. Skokan">
              <organization/>
            </author>
            <date year="2026" month="March" day="25"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 741?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-ietf-oauth-spiffe-client-auth-03">
        <name>draft-ietf-oauth-spiffe-client-auth-03</name>
        <ul spacing="normal">
          <li>
            <t>Make WIT and attestation based client authentication references normative</t>
          </li>
          <li>
            <t>Make the <tt>client_id</tt> parameter optional for all client authentication methods and define unified client identification rules.</t>
          </li>
          <li>
            <t>Regenerate the examples for consistency (see https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/50)</t>
          </li>
          <li>
            <t>Describe the trust model and mitigations for obtaining trust bundles from Client ID Metadata Documents (see https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/55)</t>
          </li>
          <li>
            <t>Fixed Nits (see https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/67)</t>
          </li>
          <li>
            <t>Reference X509-SVID validation rules instead of restating them (https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/52)</t>
          </li>
          <li>
            <t>Describe how clients indicate one or more SPIFFE client authentication method (https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/49)</t>
          </li>
          <li>
            <t>Clarify that the authorization server selects X509-SVID client authentication from the client's registered authentication method (see https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/31)</t>
          </li>
          <li>
            <t>Align terminology with SPIFFE (see https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/45)</t>
          </li>
          <li>
            <t>Register <tt>spiffe_jwt</tt>, <tt>spiffe_x509</tt> and <tt>spiffe_wit</tt> in the OAuth Token Endpoint Authentication Methods registry (see https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/48)</t>
          </li>
          <li>
            <t>Clarify Authorization Server Authentication when using mutual TLS.</t>
          </li>
          <li>
            <t>Clarify use of <tt>https_web</tt> and <tt>https_spiffe</tt> profiles (https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/22 and https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/27)</t>
          </li>
          <li>
            <t>Provide guidance on jti parameter (see https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/20)</t>
          </li>
          <li>
            <t>Added guidance on credential rotation and access token binding (https://github.com/oauth-wg/oauth-spiffe-client-authentication/issues/11)</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-oauth-spiffe-client-auth-02">
        <name>draft-ietf-oauth-spiffe-client-auth-02</name>
        <ul spacing="normal">
          <li>
            <t>Add Nancy Cam-Winget as co-author.</t>
          </li>
          <li>
            <t>Editorial updates to clarify WIT-SVID support.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-oauth-spiffe-client-auth-01">
        <name>draft-ietf-oauth-spiffe-client-auth-01</name>
        <ul spacing="normal">
          <li>
            <t>Add mechanism to use Client ID Metadata Document for SPIFFE client metadata discovery.</t>
          </li>
          <li>
            <t>Add WIT-SVID variant using Workload Identity Tokens and Attestation-Based Client Authentication.</t>
          </li>
          <li>
            <t>Add interoperability section.</t>
          </li>
          <li>
            <t>Add more guidance and security considerations when using the iss claim.</t>
          </li>
          <li>
            <t>Add Stian Thorgersen as co-author.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-oauth-spiffe-client-auth-00">
        <name>draft-ietf-oauth-spiffe-client-auth-00</name>
        <ul spacing="normal">
          <li>
            <t>Document name update to reflect adoption into the OAuth working group</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-schwenkschuster-oauth-spiffe-client-auth-01">
        <name>draft-schwenkschuster-oauth-spiffe-client-auth-01</name>
        <ul spacing="normal">
          <li>
            <t>Rephrase introduction to make the focus on client authentication more clear.</t>
          </li>
          <li>
            <t>Add implementation section.</t>
          </li>
          <li>
            <t>Add audience restrictions from RFC7523bis adopted WG document.</t>
          </li>
          <li>
            <t>Add security and IANA considerations section.</t>
          </li>
          <li>
            <t>Add Scott Rose as co-author.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-schwenkschuster-oauth-spiffe-client-auth-00">
        <name>draft-schwenkschuster-oauth-spiffe-client-auth-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial document</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Joe DeCock, Rajvardhan Deshmukh, Takahiko Kawasaki, Marcel Levy, Aaron Parecki and Dag Sneeggen for their reviews, issues and pull requests.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
w+M+MlYt8HtSiiFXlqKFwJ0esTsmrWWG0dL+MGWPZAFLEo6ApTAxSewlviGd
0+ryowTKPtNXWPeeEdGqyyyQsVzJqkKec7WQXIyyD56zK6hvmQzDIVZ6wnAL
z27Myyx5jBtYHS7Aa26jLU4qI2Iw16mMSp20xoV310bWnOdL/3tNj7sHhXKM
SrPFvfKwDkx68OUlfzZTek+qaSYgiFfIUgraPTEigSmhyBfwgh9H7nDkwf/F
SZcroLKJikCke67txmq5LKWLO2zMo/NjCnybr/J1LRIaFr0S2JJkl75IJX9k
WD6Zx5+BKNZOAXIXS9h0tOOI+5ySo+q0hv37K5n+6vh/Gnp5if+oJqcy/hfO
3n/DlKDcldYgEYnlySmxmvsSNKuoP3EGJK2J/d1LQwcoexidGoPwgWJIlaRI
phtRJQVVjCAJR8iJg1ARD9XtWibiYfiyd1Wa9LzL9t0Oi6+j4WDwtTy6Ojpz
3fZwNju3B73b5/JT3Tn/Mh1MZlslp/Q4OH0ZPDxUrL3e5V4mDCIcPX79/OXh
xLWOR3azdFFoXF/td468w9HsvLtXvfgUhc32/GD+KSo/FyZR43F4fNJ9uh3c
ug9dVm5MNejqtpo1PTjudtvVh52d1k1v2Jp1261h9+ry4cG/cevt5lZt14nq
9f3H6/7FvB6U49lsZ/i5+yn40n15KO22Zuezg4fdo+PW436rfLXbHh3vXF8f
P3deWift4cl1uxUct72T897Vl/2Lyxbbm5XmJ5et8vHl5+fjy+7L8aVnwbOX
4w4+u1LPjtu1552X1iHv4/Nly7u+PD7fnnXOP3euz88/dVpfLq92vf2Lx6uZ
89A6bw/tr6PHh9Oz8267PbwKh+fnre7wxG21ep3j68ue9+n6+GD7cKt8M283
/xbe7J1Hf/vU3e902u3n5uHg4GbTK7fH9b/5nfCi2rvYbpz87fTsS3B9eHwz
3e9NRuPjymEw33upXhw04uvzz8fTq/EBYOrW2f06fyoddAfdry+3B1vjl2mv
NSu5TafJPh2PGrfTrYfPL4CVdgnx43SG5zft9mXcP+k91py9bnerbV8eVXpn
O1az9zwb77+0znDOBxfH7dZge7d92eq0zg82j1s13n62296cne/iOrUfWgP+
7u7ufqd1MxpdvNj73vjL+AoL22hFbZrzLy+tT+3hUODovNNunQStTttrPUBX
xydb7OZpVP7SfPybVT5hZdZjT5tXm83Jp213dtLdHp3Mr66bzDvcvBnH/Wb1
aN57cO0wePja6gw+tR7at3un7aPGTf32wQ/8i0/l292Sv7fnHmzdvGyGX8Pq
pHU7Z6OKc9UD1A+mJ+w0Pu1XH9qt3nDu3Tzt/rouyPFfXIxs5PKkLHS6kiW/
p1DNa1FL1pers7vb88LJc7Df/NorXD+Vw/7BzZ716XowG+02WOSMWoXjg8bn
8wy7Pg6ubib94ObJP7nutZ34ZfRpcnPevWOPndF1reztWf1Zo30Lysbu+qop
yzjyt0z51QC0t0x5fDhy+9vPU6vabzw5swe/s739zLqRPa7Ptv3TThx+chtn
lcPCySwz5Uq3vHv0ZNXvBt3h9VmVnW0PKl+8Ru+4evk4324/Po6D8ufDk4PC
RTfZLHi5H7EJyRMDDEQq6T/IzOER35qqSXjSbzzwE7B1vxhynTK80j5l7T4Z
US8jFpkULr/1hnIB4aeicTz1Yhc3JD1cmSI0UJcVPi9hUwstOol9kCaibly8
vy9iV/8s/asIshj+3HPdQG5ohtUHleEDzQKLtyKAf15Kco1hYhhrmHXLrDCz
VjYHlLhVqlEaGMMs1LJl1upmvW/WGvjO1rbpbJmO/T0pyfVy5c9KSa6a5eYb
U5LreoNq6U0pyTpY/6acZNAmvj8nebuKyXz1GiYaNmumVccc4/IAU4gblunU
zS2bUvca+T0wCxe1XDdLfbPKMO0PXoY+S9BJyWxAw5rZbJh2A+kgt4dB02xA
8y1MUmwwTDHErMey6ThmpYYJ0szG1MZthhmBuT00LQQAXrbrSILlJiYUbpXN
5jamM243TatqVsqYy+gs6QGWd9DHNEfAQ3nbrFZMVqdEUppFpYTZzgASdGtb
S2bhYBY3jDKo0GsOzd3CrMRqH7NUS1VMZ6xUML0yP7N6YNYJgfa22ejjZ8YW
Xkyyo8Fum8CCh68lR8M735kc/da84J+cnvudac2XF1e5Wc1vSe3W5CEJoQ1j
5+KIPv05ecNvzROW0u4NecJls0SFIOwqsikI2y1KDwZ+bQ4wPR+4ynLMmoOk
pJrXG7gg8P5gYDo1+tfCxFqkWZvIs4rUB63sJoruhoMvJ82h7QAFPowF3Awi
oVHBttAD7AXAuJi4u43FBAC2KhUoKFVSwAMA5ZrJSlhkgDnI8ZiNzHAUTCiv
Icz4ThVznjGJV0v0rRA/wbjVgcn6pmWZfcdkTbNUpioKDDOHtxrIwQAPsPJ2
HcWJas6qyFIoWqrIlA7DXOtaCV8GWQViD+Y1KKs8YX2x5TExutOfAtfJukYW
otdU1Ia8F1L1xQ9mhFsOT7mxP+FSXwhrDJkV8YJj7xI3tX7ElfJRp8++eMn+
1EWPKhjGSnn/xPGdVoEr15vHo+FkAqlK5F3wt3AfGLm30JmfXFclLtJy41RU
VQpqHuXHc1flOSwCpPoImc0Ii/oEjOmEV8ziFe3mRmDb0zCdPKNuBYVFk76f
cVJ+zJnKDCjyEabve8VXKQxFz7JLPFgCiLyEtAzsiBRUE1OOx8yyRYFcO7Fc
oH9h1yl3Lel9A+7sV65kcfIn74NUd+nC58yVc9rNDQKI/MRw6SPTCx4RRdK1
Xiv8SSpelOruZykgl3bkWrj8XjZQf1E+A0x4H2+cwJPE1BqRzXwrdAOYckEe
fWSwoTAGijsdnskKbagsT2PpwpwTmwLLwruOuPUoIQBHpZ7nLVmy6CHzuEN3
5E6I+kSRUH7rrRpGD+/q46m5BCuYSlY/tnyswZRy41H4fjQG4tiQ9wsz/8kN
A3/8Sih+63PGMZ1Nk5JIGtOw3jx7G7MSDqMpvMLllGVLTsBbG6aTDVFuS78d
GeQiEo26bVcE8sajaSQPv715ljgFCq6StM+Fkmxanc8oVZ0tSdacrmiejerk
5QFV0L9WoG0aET74Cat+358VS+EgGvUBU466DVddT1pcOQ8SWNoxEHAKxuzz
69ZaJ5/ThftU2RQSooh5XtJNSPNUOSvkFOxAu3Kn61MEGTBMhKaeHsYswzS0
Kn9yy4NVh5nK4p3SLFVXlxdwBYQ0TMcZpLhQP/FcWF9VYFhP+LyHualKF+8o
JR6eFOgBXliTusZPxnil7jQPQyI+rSN4SviNYXf2ReW5FNH051Lo5qYcoxTg
oUqopWJlNIzCEacaqbtwcoWiPJrJchedWqlCoELkKqQgz6SyL/ntqCCB9JR6
DVuuOqnXRGow4QEcgHxZjI9u6ITNERAF1KZF2me1kPRh1QYPU9R3F84dKmdV
U5wEZSw7Y+mmioBE6YN8pmtRK+9eE0kn6tLtJM9AIAjLPmZUMi1+S1YmmTCm
by8bmRolvIoiwkbYFjSXHGsh7lARTLZt/Za/FHFrfEZhEcSXscxKSYX8qhBd
OkFG9cW15xsc/ZOQx6gQpy0eQgGjPxqwd7pDAX82HVrykzoCLKSXmp8IZlbJ
6MHfabS29guw2+A3OqoB8C72doxd0I6C0DQmmNqDiRPjgCKvk3gzChLC+2+S
e8TkGY/oo9GsVTaAK9FbIy6o5Idbv2zSeJn4NYw6w7uRiVcJMMom8fFW4Ozy
qXDTIA7swFM0RbFMCzRlpY+MJ0EUC8lHL1PCnc/iQgeTwVWxxb68n4mKc0Aj
y8uiHa88xlnK7HP+M/En8WQGakXxYsa6nxHtkShyRUh/d/dyT0avOjAVuvwc
oMCqkzzgDL4MQTSQ5KUk9kigPSoaxhlfNTpsVYo3xn2KaWPADzpDQRSjbpIp
4EMqjtK28cc5nqUHYUQvyYAxhBHG2puGGDo0pvKqfmCwwQADKVXlTlgKfvT7
lFz44/rc48pnJUORhGoF4M4sntPnicvkCB1YTIk26iTGQuUqCSRaEV+9MXKR
OIm1yQkxlTlAWGUZyMLyAo4JKWkWSSwUMXcDRuY74vWCkoGFIeg8uaIUUYJn
HkWV7QoTg9gzJvqtrbX06IyES9aJMGYushOpDJgPxmY0GMbXwx6BbYZhMJ1E
kliGoNlOWVqok72j4gUIqJElkib6INYHLtl84dTnTunAYXJvQTBJz0SOZpgn
IU7HMQqZcMSeYS9xE0pB0AZgH/QtuohKjjW2RDSvQgTgSfKqiEoeE1IBpzyj
j0fWc9pQdLk4a76dEN8kFCRNxYhhJH68Dlj+xOY2aPWPGAF4Gg5BBL+IvOGd
k509Y9Poto/hp2MEAoSlyfPv2Aye7QQ8g8t87fqwVPIYDwjNhp1hb4Ar9Cj/
U4KEO8R46uPu8BcDNSqKgQmjf72Xx+uz2QxPB+htHoIvW3ygwGEZebKTkvAy
OzMfzOSywJEQ13R8sSyKZTFuT7tSPHMFbubK21VQaKr+j4PBixarJCy5+1I9
H/5ScovANyI73HZlBJe836UiUtr7jCJzePGt98D0qQeuT5owRjR94BdE6HH2
juuIrCISYRTKqm3mSdXk1VhJatX9IFLeVpGOL9UfqPZCOPmOgM5UYD9pMDw4
aknAL4ofJaoU4nUbK0rF3GmxYUl0riGTw11pIUAzjMUnj5a+nnKJVYFnXkcO
JBlKcBH+qr4D2lEA6nWgF6885+eAKRtE5ESTCozqZX7IoLQ8dcOWPJcXWNBn
rmdVA59nLiyfYL0ukPWpjB5h5uOVAg+xK+wJvjkqsSYADcJEjVZXFqIwDlGq
8+b89nof9I1iftU/vsmRywuU5mnoJ3RsY2aAk74iKfEj8bsAxPGqvJGxmLG6
kowNUBFInRSRVlrkfcgo6pADLDT6kKMPa5rZcqtYFChCdOFl9ksJU4VtJtgk
0BdG4A4iN9ZsNxW6qvm7tIXCrhPxbNlhEEU6JjSy5DqGCoxPNiiRJenGyzOX
YQ1j18NX+AWSkSwC57i0z0vvACmmMPeYTWSleHW77DfuweO3QIq0TG5C5uAN
KLijJhxpuaYCZ+hD5ckg0lhkLqlPaYQI1grRLBN0mFoFyltX5IuJJxuvXKDC
bwjmodAACyNepS7pFvNUdfuUrZeL18y9F6KWJDczIlTQuS1gqbqNsLVz5tZ1
hnTuxJI06He5sZ6v5FHw1N/l6RIyr2LF0KLUuhXyzSgOA89T1bq05AlMBiYR
wGsvRDKgIinamSOxkxzd3pSq6g+mXpZ08QvFqqqihEre8ywIXm30KZiSqEEe
6It7GwjqDaIO1TTlz8J7k3g9DS0dUe4NI6Y2FNlsDBqzR9wSobgR+Mi7a2UU
RAnvo40yDEWlCh50rrwLi/k2NHC+npcUbXtrQiH5C7lU3sgcPogtSwViy6hU
PWp5IV+A8EsR4OnEJjxUeUJ+Lho64+tpdqKYIskMHZ38PvDVCR4yGfK1agHa
oZzYq1Vk/PcVnugORFoHZxB1L/2MyTuY+2wepO+jAPGq8vA2UiqFzjjq/mLV
J9dVqEALnl/JcxNxICn8ezYlUm4IXzEXjzJ/J1NVcCEhiMRkJvcom/eTU34t
04+4xztRtZekham8NlxpajTnkQois8kVCWw56W784JFTXG4904YsT5mXFBNn
0kkTdkyUcASW3CZyD5bAamssEuhgg+Hrlab0WO54SR/kZaX7trLChWtXNnou
feE7cUPxfiDse7mBqarHnZMe3jcnptjtfPv2gdJZNRBRvPCCe/eqDJggNllz
a/OeONxheGcGKYOajEsukoKWfct/VK0mFmfd+6Ter0qyRW+cPGu+1FVkHIjk
dIrKuEM8Uk1luQ1UVjV3MpKtsqMi8v+QepeqiXyvA3mfocsr36MbWbQkPyv6
0US0vKwG9AjqNalJuudIfdgEX0udwhOuGA8xOYMlOLCyZaDTPKyVAiBpmxpA
uZNTV+3wsxIekJDUflJxhtHS4lzcVOPiOnVUnTiXZA43JbuQoRNy347ASnLU
rHmuKSlT6koLSNYuNxNlS+FN3CDJMEepOO2rVzdeW4e/a0NlutWLEiT412uj
JKUueDdcOxbKXmYg4REkbKkDSynOEAk85x6rBoQsVVJniTX/1q0dQeO7gXbt
kkGpfz4W1LZlBBbLXg6Fh71YhERUScKOOElaWLfGH7KMSrSxIt9WsAttllh+
AUkoEschqi+xxeBLefnF36XQkPqcf6wG2FBHja+figD1LwqG9AEliAP9kCid
//TjJ2b5sUMwM3Xg5Q6EGcltmtdFikzRIoIIFw61osBDE1kdaySHjbwAiroO
j4uOaSJQ9bfQ2POAUJy5OqpeUT5Npm3iJpXuROY90fawWPR1sSSOXspMOOmU
p6VIARUqpGfhsE9iCEaajoW3hqhVKxP4k06ERYqeI+7oAhpQdIrrwtXjS+kb
EfWIUDwPQgvPKWwKFUSXA+dr5RvBWqVYdzKSt0USQJun3c6O4OmNxGreSJyK
H7DqBl9SPbxCCSsr5UnQzV1JMOKQmRMjvbtB+3lSPSK56HCKYofjNpv3BvPZ
UOX0eDVq3O/HfVLN9fCGTkApugHpFMwXnrdHkU05JZNaIEGoDKKEVRYlcjfl
SjJXdSfTENO30/P+sHiATcjKpM2nU2vhUUFdFSv2mcQEUamuVjouJCD0wOym
oc10NkhpF6vpfyO1U5HsARCW8D0hf+pLbhWI8SdTXsmw2zppLRwl8Hs/paYp
nVHi8jt4FM7lJuqIw0sEep3zyNVFd11WxsMUUbqZMDZ+0c83XMu36GyDn2MR
2ja56E8KxC08KD6P4rH3DkT5b8IS0bdScT7KIw+1gjl0dFGvqyrpi/NKaytL
5yfnRCFzVxcnpgEmtYm7lsnvPjcJYFM6z1P3npvJrefQeicYjwFkCj1euET+
TKTRD1JiJ/9OKeiKb7E7wr7ErAo8L4VfLuSJvMknLm1k2j55x6sKHkmRtpQc
FtFGKfhLCeMtg2mUk11EXl2HkJ+tMcLxqKkrOe90ksN5U9P5UsU9fhCdrwGU
VZleg+4PVtX7o0TBb4dQY2UiSY95ONl3UoVwaq1/xwjraYZ7S5sM3rFm71uR
kXJzy9AQR1viHxifKgK/HQD93PInQYB1it8OgLopK3f8QsHAg37cNFRpswMX
T6vmIoJoeeTQqiggoLuFE0lhnWvHkIVSdY2O7B+ptj93m2j13FfVhlOhSaiu
U9jAE5N9Ze1G7QYbEWjH1QfPe63oNRULQJGFxxR0eYd0CqZu6+DuM7wvBASg
vMQKoVBVGQa8eisejwDQc+M9RjbI3XMIKvK0T7n3HFWz4eYynCVQbvLD2816
6QMM3BEWj2aAcz8sBc9oYWZ0dTr5UJI40P6bDyx+Jtx1hHvPfQasnrg/t++t
xgdaDBm+lhz+5IQXwJJYDkXQcMrjxyBj4/1PmmcltT4Y0y7rGKubQnRXi6xd
vIIyfxZotSaCtoO37+qXYufapPIAaOFS3gyEyRXsch/TrxLJn83PW/hqGWfU
8jCQit96FXjBcM6tUIHZnzhcrc7pjE9wSWF5XkSeip3opeZdvfr3m3bPRI/6
mVPY1mkg1xDOQKPV2U5uoy5qnYj4Zb2MFM0+tz5S9LOIuVKhUX5SZyRAzrgt
bwynIDMocs43HmJX21B+4kJUSI63SMnWB9SS2imHQ0bppbzC8vjlJ+GyXP7w
9k28ssbhBj0Ft7Yda1y4AVgY1WGzgwIXJ0ggXJHAmcicMLqnnlNN4qTggd/F
t0NQlhAkVetFZOGqGq4DVSVqoa6iMrWLomMtOBzg92XVpyXXsHHN4Y0XfMoh
FiL7I3m5u5gbbg6KMOgaySXhZBqDxjzIS9zHKXrqATH5YCqAsQ4WOPMz6/Rm
tJcQ7QqdPhVPmDjicnZQ0Oi2BsvhShfOL9AkXioSVBszskcz5j/CH3RuhK+t
+gWbjEKLKs7HqjIojj+WmuAAAOTn+vk7KsUegWYbqoVIx05nliEvukZoTiLw
qI8+NZw1rPjNfnJDo+hArRouIblqMsuXGbBnBzFY1sLBlbtOb8cZLVnXd0mc
JIbAO6NlY1i+xxyqWx2t/W76VFaCOb+uDywvYuvf9FpydJrkPxqHAQPVZiew
HzeMC+sBuMNB/xVoO6Px9HG0YVxaj9bIfQyMT9bMiqxHdwN09NAGxfSIPc03
jJYVAo7PrJDZjy6hpGMNjZ7P2BA0aWkUu6GIno42ZMwiZfBNPS+Jq1r7f3fz
tRWKvwAA

-->

</rfc>
