<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-spiffe-client-auth-01" category="std" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>OAuth SPIFFE Client Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-spiffe-client-auth-01"/>
    <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>
    <date year="2026" month="March" day="02"/>
    <area>sec</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <keyword>credential</keyword>
    <keyword>exchange</keyword>
    <abstract>
      <?line 87?>

<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 X.509-SVIDs without the need for client secrets. This approach enhances security by enabling seamless integration between SPIFFE-enabled workloads and OAuth authorization servers while eliminating the need to distribute and manage shared secrets such as static client secrets.</t>
    </abstract>
    <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/arndt-s/oauth-spiffe-client-authentication"/>.</t>
    </note>
  </front>
  <middle>
    <?line 91?>

<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. In particular, the following terms are particularly relevant:</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 unified resource identifier that uniquely and specifically 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 two types of SVIDs:</t>
        <ul spacing="normal">
          <li>
            <t><strong>X.509-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>
        </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, in case of JWT-SVID <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 X.509-SVID) to prove its identity.</t>
      <section anchor="client-authentication-with-jwt-svids">
        <name>Client Authentication with JWT-SVIDs</name>
        <t>JWT-SVID based authentication naturally follows the JWT Profile for OAuth 2.0 Client Authentication <xref target="RFC7523"/>, with specific adaptations for SPIFFE JWT-SVIDs. <xref target="RFC7521"/> remains valid.</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 <bcp14>MUST</bcp14> be present to perform client authentication in the context of this specification:</t>
        <ul spacing="normal">
          <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 only 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>Verify that the SPIFFE ID in the <tt>sub</tt> claim matches or is associated with a recognized client identifier. If the client authentication is presented with a <tt>client_id</tt> that is a URL described in <xref target="I-D.ietf-oauth-client-id-metadata-document"/>, verify that the SPIFFE ID in the <tt>sub</tt> claim matches the <tt>spiffe_id</tt> value in the Client ID Metadata Document as described in <xref target="client-registration-metadata"/>.</t>
          </li>
        </ol>
        <section anchor="jwt-svid-example">
          <name>JWT-SVID example</name>
          <t>The following examples 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.</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_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3A
client-assertion-type=jwt-spiffe&
client_assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjR2QzhhZ3ljSHU2cm5rRUVKWUFINlZ1Q2U0Sm9Ta1BWIiwidHlwIjoiSldUIn0.eyJhdWQiOlsiaHR0cHM6Ly9hcy5leGFtcGxlLmNvbS8iXSwiZXhwIjoxNzQ3MTI0NTQzLCJpYXQiOjE3NDcxMjQyNDMsInN1YiI6InNwaWZmZTovL2V4YW1wbGUub3JnL215LW9hdXRoLWNsaWVudCJ9.Xlv5lW4cbxDsQk4l0paewG4nXOR7MxF_FMn_c27DX45Bxr2HUZf9a6Untfq5S47xpwbw495HBL6_1Lc6TMJxmw
]]></artwork>
          <t>For clarify, the SPIFFE-JWT header and body decoded:</t>
          <artwork><![CDATA[
{
  "alg": "ES256",
  "kid": "4vC8agycHu6rnkEEJYAH6VuCe4JoSkPV",
  "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%3A
client-assertion-type=jwt-spiffe&
client_assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjR2QzhhZ3ljSHU2cm5rRUVKWUFINlZ1Q2U0Sm9Ta1BWIiwidHlwIjoiSldUIn0.eyJhdWQiOlsiaHR0cHM6Ly9hcy5leGFtcGxlLmNvbS8iXSwiZXhwIjoxNzQ3MTI0NTQzLCJpYXQiOjE3NDcxMjQyNDMsInN1YiI6InNwaWZmZTovL2V4YW1wbGUub3JnL2NsaWVudC8xMjM0In0.Xlv5lW4cbxDsQk4l0paewG4nXOR7MxF_FMn_c27DX45Bxr2HUZf9a6Untfq5S47xpwbw495HBL6_1Lc6TMJxmw
]]></artwork>
          <t>For clarity, the SPIFFE-JWT header and body decoded:</t>
          <artwork><![CDATA[
{
  "alg": "ES256",
  "kid": "4vC8agycHu6rnkEEJYAH6VuCe4JoSkPV",
  "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="client-authentication-using-x509-svid">
        <name>Client Authentication using X509-SVID</name>
        <t>X.509-SVID based authentication uses mutual TLS as defined in OAuth 2.0 Mutual-TLS Client Authentication <xref target="RFC8705"/>, with specific adaptations for SPIFFE X.509-SVIDs.</t>
        <t>To authenticate using an X.509-SVID, the client establishes a mutual TLS connection with the authorization server using its X.509-SVID as the client certificate. The authorization server validates the client certificate as an X.509-SVID and extracts the SPIFFE ID from the URI SAN. The server certificate <bcp14>MUST</bcp14> be validated by the client using its system trust store, and NOT the SPIFFE trust bundle.</t>
        <t>The request <bcp14>MUST</bcp14> include the <tt>client_id</tt> parameter containing the SPIFFE-ID of the client. It <bcp14>MUST</bcp14> match the URI SAN of the presented X509-SVID client credential.</t>
        <t>The server validates the client certificates according the following rules</t>
        <ol spacing="normal" type="1"><li>
            <t>Perform standard X.509 path validation against the trust anchors according to <xref target="spiffe-bundle-validation"/>.</t>
          </li>
          <li>
            <t>Verify that the certificate contains exactly one URI SAN with a valid SPIFFE ID.</t>
          </li>
          <li>
            <t>Verify that the certificate is a leaf certificate (Basic Constraints extension has CA=FALSE).</t>
          </li>
          <li>
            <t>Verify that the certificate has the <tt>digitalSignature</tt> key usage bit set.</t>
          </li>
          <li>
            <t>Verify that the SPIFFE ID in the URI SAN matches a registered client identifier or is associated with a registered client identifier.</t>
          </li>
        </ol>
        <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>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=spiffe://example.org/my-oauth-client
]]></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:
            dd:48:ec:d4:a4:c6:b2:ea:8e:9b:54:35:e8:30:65:7b
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: C=US, O=SPIFFE, serialNumber=6968729192859147614695638370388029008
        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:c2:0b:b6:8e:47:9a:20:ab:33:f1:a9:a5:77:97:
                    fa:a0:95:7d:2c:9f:e9:94:3d:e9:ed:e6:35:52:7f:
                    ff:82:34:74:20:97:5a:1b:4e:87:5f:32:3e:9d:da:
                    60:6a:05:8b:86:9d:0b:59:5f:67:be:93:3b:26:de:
                    ea:1e:18:98:96
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment, Key Agreement
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                D8:7A:2F:8B:E3:CF:08:83:EA:DD:5E:0A:59:33:6E:4C:E0:CC:6B:AD
            X509v3 Authority Key Identifier:
                C2:41:49:B0:ED:E0:94:7B:FA:7D:C2:F1:02:24:20:B9:1E:3D:56:FA
            X509v3 Subject Alternative Name:
                URI:spiffe://example.org/my-oauth-client
    Signature Algorithm: ecdsa-with-SHA256
    Signature Value:
        30:44:02:20:48:c3:5f:68:b2:c5:5d:96:c4:96:32:37:1f:af:
        b8:1c:1c:45:ad:41:26:dd:e2:92:b5:73:62:83:34:c6:16:2a:
        02:20:0f:48:02:8e:6b:1d:09:01:80:d8:85:2b:ca:25:c6:2c:
        9e:f2:27:c2:3c:e4:03:58:a8:47:21:f6:3c:5e:7a:c8
]]></artwork>
        </section>
      </section>
      <section anchor="client-authentication-with-wit-svids">
        <name>Client Authentication with WIT-SVIDs</name>
        <t>WIT-SVIDs are the SPIFFE variant of the WIMSE Workload Identity Token (WIT) as defined in <xref target="I-D.draft-ietf-wimse-workload-creds"/> and make use of concepts defined in OAuth 2.0 Attestation-Based Client Authentication <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/>.</t>
        <t>A WIT-SVID as issued by a SPIFFE implementation binds a key held by the client via the <tt>cnf</tt> claim. This key is used as 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 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 6.1 of <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/>.</t>
        <section anchor="wit-svid-validation">
          <name>Authorization Server Validation</name>
          <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 3.1 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 5.2 of <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/>.</t>
            </li>
          </ul>
          <ul empty="true">
            <li>
              <t>TODO: What to do with <tt>attest_jwt_client_auth</tt> method in AS metadata?</t>
            </li>
          </ul>
        </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.</t>
          <t>The WIT-SVID (OAuth-Client-Attestation) header and body decoded:</t>
          <artwork><![CDATA[
{
  "typ": "wit+jwt",
  "alg": "ES256",
  "kid": "4vC8agycHu6rnkEEJYAH6VuCe4JoSkPV"
}.
{
  "iss": "spiffe://example.org/my-spiffe-workload-api",
  "sub": "spiffe://example.org/my-oauth-client",
  "exp": 1747128000,
  "iat": 1747124400,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "18wHLeIgW9wVN6VD1Txgpqy2LszYkMf6J8njVAibvhM",
      "y": "-V4dS4UaLMgP_4fY4j8ir7cl1TXlFdAgcx55o7TkcSA"
    }
  }
}
]]></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: eyJ0eXAiOiJ3aXQrand0IiwiYWxnIjoiRVMyNTYiL...
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hdXRoLWN...

grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&
client_id=spiffe://example.org/my-oauth-client
]]></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 or X509-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 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, WIT-SVID or X509-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 mechanisms of key distribution is in scope and described in <xref target="spiffe-bundle-validation"/>.</t>
      <t>Similar to the trust establishment, corresponding OAuth clients need to be established prior of using SPIFFE as client authentication. This is also out of scope, implementors may for example choose to leverage OAuth 2.0 dynamic client registration according to <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 in the <tt>sub</tt> claim of the JWT-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.</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 <tt>sub</tt> claim value <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 <tt>sub</tt> claim <bcp14>MUST</bcp14> be an exact match of the <tt>spiffe_id</tt> value.</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 an X509 or JWT-SVID. It recommends two SPIFFE-native approaches.</t>
      <t>Trust bundles in general <bcp14>MUST</bcp14> be keyed by the trust domain identifier to prevent mix up between trust domain and their corresponding bundles. 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>
      <section anchor="spiffe-bundle-endpoint">
        <name>SPIFFE Bundle Endpoint</name>
        <t>The SPIFFE Bundle Endpoint exposes the signing keys for X509-SVIDs and JWT-SVIDs over HTTP via a JSON Web Key Set according to <xref target="RFC7517"/>.</t>
        <t>Server authentication on this endpoint is available in two flavors. For the sake of interoperability, in the context of this specification the WebPKI flavor <bcp14>MUST</bcp14> be used. This effectively means that the server certificate of the bundle endpoint is trusted by the authorization server accessing it. See Sec 5.2.1 of <xref target="SPIFFE_FEDERATION"/> for details.</t>
        <t>The authorization server <bcp14>SHOULD</bcp14> periodically poll the bundle endpoint to retrieve updated trust bundles, following the refresh hint and period provided in the bundle. See <xref target="SPIFFE_FEDERATION"/> for details.</t>
        <t>The SPIFFE bundle endpoint cannot be derived from the JWT-SVID and X509-SVID and <bcp14>MUST</bcp14> be configured manually out of band. Bundle endpoints <bcp14>MUST</bcp14> be keyed by the trust domain identifier.</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 undermines the fact that the SPIFFE Bundle Endpoint cannot be derived or discovered  from the X509-SVID 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": "9XBzty8W_ex4Xr0RdzUBgie_okdaUTheSF0PQvVAaTsXaP1J7yv0Dhlaw45I7Cv9",
      "y": "HP21HOmMxIlZ0XeqsOl9sM5H57HBQWu0bINXfw4jdeHdB5vk1XyNyBQQxeUpSxhn",
      "x5c": [
        "MIIB2DCCAV6gAwIBAgIURJ20yIzal3ZT9NXkdwrsm0selwwwCgYIKoZIzj0EAwQwHjELMAkGA1UEBhMCVVMxDzANBgNVBAoMBlNQSUZGRTAeFw0yMzA1MTUwMjA1MDZaFw0yODA1MTMwMjA1MDZaMB4xCzAJBgNVBAYTAlVTMQ8wDQYDVQQKDAZTUElGRkUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT1cHO3Lxb97HhevRF3NQGCJ7+iR1pROF5IXQ9C9UBpOxdo/UnvK/QOGVrDjkjsK/0c/bUc6YzEiVnRd6qw6X2wzkfnscFBa7Rsg1d/DiN14d0Hm+TVfI3IFBDF5SlLGGejXTBbMB0GA1UdDgQWBBSSiuNgxqqnz2r/jRcWsARqphwQ/zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAZBgNVHREEEjAQhg5zcGlmZmU6Ly9sb2NhbDAKBggqhkjOPQQDBANoADBlAjEA54Q8hfhEd4qVycwbLNzOm/HQrp1n1+a2xc88iU036FMPancR1PLqgsODPfWyttdRAjAKIodUi4eYiMa9+I2rVbj8gOxJAFn0hLLEF3QDmXtGPpARs9qC+KbiklTu5Fpik2Q="
      ]
    },
    {
      "use": "jwt-svid",
      "kty": "EC",
      "kid": "6d02Vc2oU62mXVH5nlggHGLmfIhrlnNW",
      "crv": "P-256",
      "x": "S2V42XlFjNp30CFmOidbWQT9IpZHqJ8JuuJgDBvkdZA",
      "y": "vN0y5TK36VRxZo_E3Gc7S5c0jIRIaHZ53f2UiJ1NFto"
    },
    {
      "use": "wit-svid",
      "kty": "EC",
      "kid": "b7f3K2oPz8nQvT1xYl9gHGLmfIhrlnXY",
      "crv": "P-256",
      "x": "18wHLeIgW9wVN6VD1Txgpqy2LszYkMf6J8njVAibvhM",
      "y": "-V4dS4UaLMgP_4fY4j8ir7cl1TXlFdAgcx55o7TkcSA"
    }
  ],
  "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 indended 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:
            5c:4b:d5:2d:f9:c1:6e:78:2c:32:a6:bb:6c:73:f0:b8:f4:be:13:09
        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:ef:3f:db:67:2b:e8:5c:a1:64:23:e7:f2:fd:f0:
                    3b:16:55:68:17:55:17:d4:bd:cd:6d:04:fd:cc:8f:
                    99:31:f7:8c:ac:b0:1e:31:60:18:45:32:8b:a1:17:
                    4b:2f:01:75:27:6c:3f:c3:a5:b9:da:56:fb:29:54:
                    63:cb:08:96:81:35:0e:96:04:03:40:fe:51:0d:26:
                    da:d5:99:6c:8f:c2:45:43:cb:2c:b4:8d:9b:68:78:
                    9f:c0:2d:68:36:b8:5e
                ASN1 OID: secp384r1
                NIST CURVE: P-384
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                8D:79:D2:26:5E:4C:83:30:40:C7:E9:1D:E1:35:12:F6:60:CF:0B:DB
            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:64:02:30:0a:e9:fd:d4:cd:99:52:90:cb:14:86:93:4e:f8:
        02:52:d6:17:12:9f:2e:65:99:0e:38:b6:b9:a6:fe:43:0f:60:
        30:04:87:ec:24:20:80:a4:75:ee:3c:ad:9d:a2:72:0d:02:30:
        55:93:0e:14:8c:47:47:3b:74:7c:a7:2a:2a:96:1d:a4:85:46:
        4f:3f:95:a4:c2:ab:3c:2e:04:b3:1b:cf:02:0f:33:fc:dd:dc:
        d5:2f:44:c8:2a:dc:ce:3f:c5:c6:89:d0
]]></artwork>
          <ul empty="true">
            <li>
              <t>TODO: Bundle doesn't match X509-SVID. This needs to be fixed.</t>
            </li>
          </ul>
        </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 interopability 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 build in a way that the workload proactively retrieves trust bundles updates and does not need to poll 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 to retrieve trust bundles from federated trust domains.</t>
          <t>This approach is <bcp14>NOT RECOMMENDED</bcp14> for OAuth SPIFFE Client Authentication for several 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 rarely 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>
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"/> and <xref target="RFC7521"/>.</t>
      <t>Client authentication using X509-SVIDs has the same security considerations as described in <xref target="RFC8705"/>. The validation rules in section 3.2 protect against an OAuth2 token being issued (or being issued incorrectly) to a client that did not present an appropriate X509-SVID.</t>
      <t>The issues described in Section 5.2 above include the threat 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="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 known to 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 sub 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>
  </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="1" month="March" 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-01"/>
        </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_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="12" month="January" year="2026"/>
            <abstract>
              <t>   This specification updates the requirements for 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-05"/>
        </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="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="15" month="September" year="2025"/>
            <abstract>
              <t>   This specification defines an extension to the OAuth 2 protocol as
   defined in [RFC6749] which enables a Client Instance to include a
   key-bound attestation in interactions with an Authorization Server or
   a Resource Server.  This new method enables Client Instances involved
   in a client deployment that is traditionally viewed as a public
   client, to be able to utilize this key-bound attestation to
   authenticate.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-07"/>
        </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>CyberArk</organization>
            </author>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="3" month="November" year="2025"/>
            <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-00"/>
        </reference>
      </references>
    </references>
    <?line 642?>

<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-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>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ewD5pF5vMX0MPTRQ/lVMncFEAP6mbjRRCpZL+riOz2tMbxi62ZQ+zOeC9SqR
NZeLc1optS/WHxegExhuKK2Jm/7JoKfdyJwjlRokEmigm3drdu9mhuvSngUs
L/OW8miFBDwhI5VQCyqXyebhFiP6X59g21b4oTBlIsFG5q0gwaLIEjmvtosV
B6SeT5mzbkPK9LA70x2r7CFKjsEXZBoJmrcxZJiBAZgQhb5bkqLJlt54x04X
71Ka9I5EUaL1uXeOLuKdF1ftlTUvItIYoysZtcRENmBOaUxwPZMXLWCKnyQy
RMjIi1xLTkEuhDBT43UR2YVgKYK6Ovdcshe3z5KIW+QuTBjP0X0mOYdSPGbM
cClYnB16jYPLaAUI36VKcAbaeEwlJApvSr1Qwi5/njjRzEpnqot97zq2rb+/
ASzngwVoZAl7OZ3WYMTIfDaxYff5xAYya1ZZzgDK79jq7uHvmsjn2h1A+8v9
Es21QFnkPFIs6OIObKI7LeEijt0lMvjM88s5BeQTFHAnXqGUL5krTkklKV9p
AvEESkEAr5C06SkiYLcJxJQTQy5+ZdviZwvGDRjizAYFDSVrMusHUh1+xL/C
x3+GrTKwkjXxWqH836P637ThWfdM127IyeHBVLggueOvfoUl+yrDNvDOnUzj
h+m2ByqX8q+cfRQ+tzgpskN33OKPHRg81paSSMZzqNqasrcu295uI+V3rwmQ
iAiHYCke9fj5oIkKkoBYfy6OKohIUbAxt3d+OP66EV9pFovFzfhKVTyE7RQe
ilDF/fJBfcH5hSua8b4IG2Bzf4GPyN6Jnz7is1JzeXTM+pOb1vL6tH7dLQ0f
J/Nvq/Jx8PT54WRc/9h076/b9mgxPYnfpAHy11VrUL0yjk8m51+r48/V+6bt
N0ynNLx1Dqz2xHys1bzG8MEctHfoxd9z+F8i4vMMxWwlhDy0+BFi2Cbp8nNv
voVKXrvwmwvIw2lbAmm8yX1oYxOrXLOKRWOUr9XKo3y1PjbzBiu18q3mGBZ5
XK4V69WdzPVPInAtXC4YVP9XO+u2rQ3YJquPRXbbxmhxxbi98GGBihj5/Xzz
6GLk9/L6ZHU6/GwfFwqFrd3gElNXm4Fn97JmYuB5ppJGsKM/OKfnh3yI4hAh
b858Y2Q76NDK9V0N9gGuZxnm1GYLUTKUaKWqxbYrYq50Nr+QYAlb+wI9i2BB
LCmNP1On4bsCN3WCaD73+LlEuXZGtyLtVTQDRRu9/ugidtNZ45g9rY4+oP1S
jqJGiFNOJZBKwc2uTlbJ/zwgWC1hyRSo1Dx6hDuPTKpDXWVXfQOpTz7vPQBK
PkMv7J1Sk4gVVNiUNsuvAt6vCt47zcGzObS2Kq1zhHM4wJObgqkXoZXDZDSL
ZnPns4XH8fxy/5SpSgcgYYDzde/wYl3OmLzcdl9QxqsWKs54X18yT5tEBnIP
yyBRQ5KSqPtSwzgYO+uTzRNSlA/NkMAWr6WCdcgDAcO6D7XmG0SZoBZhO21l
CJtM47njrWY8h+eNNEx5UVRPRnVn0vYSm8xlIncys3ZMJBtTUunC9qIAVPtk
JYWIbia4NmGXZxkla1VgyaItYQOrs7emWPiXrk0X0RvMVwYCC0xYl+xc8oJ2
5C0xBYpT6YzhcUJ2MCMFGI3KVJU7t5B5d1QCn040fU4hzg3sGR4ZpHK1aEIs
ifDdNaM0XXEuC9bxdLAEYsEY9ihhOlXlERdMb5r+ZGrzulaBMprQbuycwFjq
zFglD9PSzKnnBSxVYRuvoLVyjVl8kkEy0zajJgGPwwGp5FHEemxPIu4+miVX
MFU1kqS+OI3l+5tnE3szyVQee5FZXKFkZ6KAAVGAziVY32cyaYIfzIkGHUPl
r+R0TRaa8k0gjsKmRMGuxgqTwivDl7wnbgmftD+r5AEsyzJsOh3jbu/9HZ5Z
h1kQwG8Baj+uybS3zwyjDgSAd99BpxbhlcxHLDWj08/sR5FYkIzTP5vyHVfe
cyFrB8K+p1LCZGF0onbb5aF5PlZB4XMtuweQK0tjOUowmV2Ml13iRiseY/3P
QcoE3sXjP8xnslqwCi3ifOIzEByovGzY1jiElA7C9lajiUKj/piEF51OYeFJ
gM/rMCL6nTnS1snAL74XTaZagGcH8nMIk6JFCcNddYgFLXFesa2VrvzDbW28
JXNfxO2XtmOZho91dCILBZYqdu2FSy+fQZM7SKw7VPtLIhwL8F5CiawzMiiB
JB+wCW1qSRLVN0hRcAxXuiZ2Iodpc0bsUapUXJ4Lvtq5A1C1t3aBFXa1aE5a
LLklk61BChkOTutu552seOYVGQgcjR/vBdgFGBpzOlWSsmHEZN4G79aIGZ0A
Cam9u4WPZWrcncrseLZdqVy5o6MoLY/xTZVz+HMv4TvvCtoZUtXSlsuVxLVS
bVOsrBx36/hOaisYn+omN2bEYMqNuXUrfra6dL2eQ2U3cWdZoBiM+9J4gjUq
hHSWiawCwwQrrMyZwRqhhrL0ZC6WPO1GnF/EKPMukfdF6sWEubC/Ogo/wMix
apfi32T5t0eaF21jQEFAd0rXSnnwuFZl+2uqhhiey8hyAsBUWa1NpYz3kWvK
Clr0omK6lsmE2TxMjraTIAuwwpXHs33e13i1+iPQzt7C8PfEWRfyTDJQL0A/
DTzzYa3HuTruZ0ffJsGh6/WMTszExZVVZ57FaZ0q6pXdW+qIk/WR2OPcCxJk
kZK7t/HRVoj2+CAaShUi1z8GeIzUOYKg/oaZKlOpwbVIoR2nDQFPyEXly8At
VJ4uRFsu0ODYMRZ4WCydg8tNsgd+AMOa5bL7qipMHmVho/NPfdG1olgkFqFp
MsC2iUQP9gAPi6hss4ykSsH7oo48ORui4pcsHMr64mmXvChwwEz0IEvn+cYx
ehuV91ujDsKGAyTZniXOVJiDApkJb3Lzj+bcu51M7wzWi89lNtvUFmYXH0dt
/3JBBNmmTxB4YTrp2nwFI/A1CnJYLQvGWmDRvEx9VYoYQnKbypqVK5zQAGaG
GxE6ktq75BQ5XPBD0kwEq553svNDXagUH0U3dpdpSKIAk7qAMOhM5MCVUo5S
UNwlZBao0f0ZmtYGX1RAGJNWuzzfF7QTKWlTr27K3buEMLrTHOHxUFBkixjB
RlN7MnXgP+HMsgVUJrEMSCHHNu1QrUp8MhV0Roe+SJPHIEdCOt1zXahtUgbS
lMAafIsJJaYNebhSNiiwnjKJfw3EMOEKyFw9QfgkIsVxmLGTOr29fH8hzV+5
+CPfycr6xz0ile6/4XX/DRPmMpc+AYnILo/9w2ruW/CtwqXCESS30sPeUEsC
tO6GTo1B+MCtRxWkxNMNqIwCvXkU2Y0DEc/FOirN6lqso3XbeQpXzZuv7LF6
6xcvraerzsRmX70Hy7gCFh0cFM8vFtdtYxjcGuelj43VotidOsayWus39het
tQDI0Xm5dHQ2O3nsO1+Kt+xbcOa0gpPaUa1x1Lm4iYqj/unteFm9t9iR1akt
Hkq3q9NV5+LikV3NB49TNwFdzVSzpgcn/X6n3N3fb1/XJ+1lv9Oe9K8uP5aL
q/6T4VS+DFuntw/W0g9mxYA5y+Vyf/K5/8n70n+6L/bay4vl0X3v+KT9cNgu
XfU605P96+uTx+5T+7QzOb3utL2TjnN6Mbj6cng5bLODZXF18tQunQyvlif3
8G/3i4HPzrr47EQ9O+lUH/ef2h95H5+Hbed6eHLRXHYvPnevLy4+ddtfhlc9
5/Dy4Wpp3bcvOhPz2/Th/uz8ot/pTK78ycVFuz85tdvtYck8OqscP45ajaMp
W1weVE4vDvc/Nn6xL0vzy7ODWv/2orXfuurMzx4tb+/KXXzauzg7vPa79w/3
wae9ork3ujLrn5969rV7adW/Leu35eXTw9gNzIOO0bgMJiVrr2uflqpW8Wj2
y/B63K/0Dzrdg9rAOT48ZPe3w87opFNE/FjdycVNpzMY2NHp5PHbN/ep7O/d
X5o3Qfvy23y6vNh7ap/jnI8uTzrtcbPXGba77YujvZN2lb+/7HX2lhc9XKfO
ffsLb9vr9QAH00ntyTx0Zl9mV1jZFozKp9NRt/2pM5kI3Fx0O+1Tr93tOO37
XrtWvWhOx9OeVf12vTKXo+PTp7PZ3tGFPy+5pV+M8qPZbNpXxUr94OQchOdl
6fz42yQ4656Pb1ZhaF2279uf+p51ZVfZZ/vEaP3SL/vXo/vm5OzxY/vALU6P
j3sHlYvu7DY8PJ+3L4PWt/1fPo3sB2cY1Q7m9kP54sOOIMN/cPGxm8mLVDP4
EiuKSGvdKpavzbJ3VS/Pbq+Paq4zmRwdHs/G/anvuKc3r4pTDsrX1fKtc3B/
Oq8U9w9mZ7Y1urkYtvrzL0ffPjY/RtHHSbezeLC+tNfYdHFaXNWGnyr168vH
L97XXuXQbAxqZvG+f9k3jr7UKuPylf2xdHoQejvPTVnmlbxmyqPGuPKp7J0/
Nd2LxbD0+NlpJaZ8+/n/xdAsr/ETm490XGDosZj8QWbjT/mWVIkDkr+R6XUH
2LrbzFFJWQjC7SZLbeKTC8W9ATIdipzVFk+ChZ8K2knkhDZuRMkED4rLoMdK
GHoiiV8oj/EOL82bVO3KXQG7+nvxHwWQwfDPHdcN5EamGSPQGd7RLNCOQAD/
dcn8NVOvjnSrppctfdzSzZJeZ3qjiRmRlbJu1PXRSK+bmHE5Luqjpj6uYtp0
qaIXWz+S2F8rlV9I7P+pJP2KXmq9Mkm/lnyhUnwxST8J0r8pSx+0hx/P0mdj
vTLWrREmtJdHWHgBS2rAMlZxtqyByaxjC1cvs4fKCNNnazVMzy018AP834JF
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

-->

</rfc>
