<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-spiffe-client-auth-00" 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-00"/>
    <author fullname="Arndt Schwenkschuster">
      <organization>SPIRL</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Pieter Kasselmann">
      <organization>SPIRL</organization>
      <address>
        <email>pieter@spirl.com</email>
      </address>
    </author>
    <author fullname="Scott Rose">
      <organization>NIST</organization>
      <address>
        <email>scott.rose@nist.gov</email>
      </address>
    </author>
    <date year="2025" month="December" day="01"/>
    <area>sec</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <keyword>credential</keyword>
    <keyword>exchange</keyword>
    <abstract>
      <?line 82?>

<t>This specification profiles the Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/> and JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/> 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 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 86?>

<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 JWT tokens — as client credentials for OAuth 2.0 client authentication. JWT tokens make use of the profiled version of <xref target="RFC7523"/> - the JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>.</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 (either JWT-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 a registered client identifier or is associated with a registered client identifier.</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%3Ajwt-spiffe&
client_assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjR2QzhhZ3ljSHU2cm5rRUVKWUFINlZ1Q2U0Sm9Ta1BWIiwidHlwIjoiSldUIn0.eyJhdWQiOlsiaHR0cHM6Ly9hcy5leGFtcGxlLmNvbS90b2tlbiJdLCJleHAiOjE3NDcxMjQ1NDMsImlhdCI6MTc0NzEyNDI0Mywic3ViIjoic3BpZmZlOi8vZXhhbXBsZS5vcmcvbXktb2F1dGgtY2xpZW50In0.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/token"
  ],
  "exp": 1747124543,
  "iat": 1747124243,
  "sub": "spiffe://example.org/my-oauth-client"
}
]]></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>
    <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>
    <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"
    }
  ],
  "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>Arndt: 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="using-the-jwt-svid-iss-claim">
          <name>Using the JWT-SVID <tt>iss</tt> claim</name>
          <t>JWT-SVIDs 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 JWT-SVIDs and only works when the <tt>iss</tt> claim is present, which is not guaranteed and not part of the JWT-SVID specification.</t>
          <t>The narrow scope of applicability does not make it a viable alternative to the SPIFFE Bundle Endpoint. In combination with interoperability concerns, this approach is <bcp14>NOT RECOMMENDED</bcp14>.</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: Red Hat / CNCF</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>
    <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>
  </middle>
  <back>
    <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="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="7" month="October" year="2025"/>
          <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-03"/>
      </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>
    <?line 464?>

<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-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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
xc35c7t0fj1Znz/An707js8uevjsPH523qk+dZ/bH2UfX67b9s31+VVz3bv6
0ru5uvrUa99dT/r2yehxsjYf2ledmfFt/vhwcXk16HRmE292ddUezIZWu31d
Mk4vKmdPeqtxOher0XFleHXS/dj4yRqVlqOL49rg9qrVbU06y4sn0z2aOKtP
R1cXJzde7+Hxwf90VDSO9IlR//Lct26ckVn/tq7fltfPj1PHN447vDHyZyXz
qGcNS1WzeLr46fpmOqgMjju949rYPjs5EQ+31x39vFNE/pi92dXnTmc8tsLh
7OnbN+e57B09jIzPfnv0bTlfXx09ty9xzqej80572ux3rtu99tXp0Xm7Kr9f
9ztH66s+rlPnoX0n2/b7feDBfFZ7Nk7sxd1igvl3Xy8P53qv/akzmyneXPU6
7aHb7nXs9kO/XateNefTed+sfrvZGGv9bPh8sTg6vfKWJaf0Ey8/Gc2mNSlW
6sfnlwCeo9Ll2beZf9G7nH7eBIE5aj+0Pw1cc2JVxRfrnLd+GpS9G/2hObt4
+tg+dorzs7P+ceWqt7gNTi6X7ZHf+tb96ZNuPdrXYe14aT2Wrz4cKDH8VcLH
4V5dpMqG31NFlTivm8XyjVF2J/Xy4vbmtObYs9npydliOph7tjP8vEd3o9x7
orvj8k21fGsfPwyXlWL3eHFhmfrnq+vWYHl3+u1j82MYfpz1OqtH8669paar
YXFTu/5Uqd+Mnu7cr/3KidEY14ziw2A04Kd3tcq0PLE+lobHgZsgpszCKyT2
Ed8ALDH5Xky/iHITc4nPlWIxAVo0+ffArXSCM20LInfZckyVYCSHNTnhou4s
CNSpEdqnmzIkCK8K2nloBxaicrruycfbPLBOW+16VEpDeVKJuYt8/Uwm776A
Xf2z+GsBAAn+uJeGMkJ1jetgQN/RLNCpRgL/famNmsGqOjNrrGyyaYsZJVYX
rNHE+FClzHid6TqrGxh/mhaZ3mTTKgaRSxVWbP2RNEetVP6dNMefSllUWKn1
gymLWvqDSvF3UxZpkv6bchZgSv94zkJMWWXKTB3D+2Ud01CwpByWsYqzFQ0M
7U1NXL29PVR0DCbWahisLDXwB/zXhEU2mWGyuslgCPjcMFjzhZxFq8UqJTZt
sCaMazC9iOkDeFIvYhKhWkM5aupIUumFvAkIYHmKkcpGDaOQIG4wI6OC2Ra9
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

-->

</rfc>
