<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-spiffe-client-auth-02" category="std" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>OAuth SPIFFE Client Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-spiffe-client-auth-02"/>
    <author fullname="Arndt Schwenkschuster">
      <organization>Defakto Security</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Pieter Kasselmann">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <author fullname="Scott Rose">
      <organization>NIST</organization>
      <address>
        <email>scott.rose@nist.gov</email>
      </address>
    </author>
    <author fullname="Stian Thorgersen">
      <organization>IBM</organization>
      <address>
        <email>sthorger@ibm.com</email>
      </address>
    </author>
    <author fullname="Nancy Cam-Winget">
      <organization>Cisco Systems</organization>
      <address>
        <email>ncamwing@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="15"/>
    <area>sec</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <keyword>credential</keyword>
    <keyword>exchange</keyword>
    <abstract>
      <?line 93?>

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

<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 three 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>
          <li>
            <t><strong>WIT-SVID</strong>: WIT-SVID: A WIMSE Workload Identity Token (WIT) that contains a SPIFFE ID in the <tt>sub</tt> claim. See <xref target="SPIFFE_WIT"/> for details.</t>
          </li>
        </ul>
        <t><strong>SPIFFE Bundle</strong>: A collection of public keys and associated metadata that allow validation of SVIDs issued by a trust domain.</t>
        <t><strong>SPIFFE Bundle Endpoint</strong>: A URL that serves a SPIFFE bundle for a trust domain.</t>
      </section>
    </section>
    <section anchor="oauth-client-authentication-using-spiffe">
      <name>OAuth Client Authentication Using SPIFFE</name>
      <t>This section describes how SPIFFE identity documents can be used for OAuth 2.0 client authentication, following the patterns established in <xref target="RFC7521"/> and, 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 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/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>A WIT-SVID is a WIMSE Workload Identity Token (WIT) as defined in <xref target="I-D.draft-ietf-wimse-workload-creds"/> that contains a SPIFFE ID in the <tt>sub</tt> claim <xref target="SPIFFE_WIT"/>. It uses OAuth 2.0 Attestation-Based Client Authentication <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/> for client authentication.</t>
        <t>A WIT-SVID as issued by a SPIFFE implementation binds a key pair held by the client via the <tt>cnf</tt> claim. The key pair bound to the WIT-SVID is used to generate an attestation proof during client authentication. The attestation proof is in the form of a "Client Attestation PoP JWT" as defined in <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/> that is issued by the client and signed with the private part of the key pair bound in the WIT-SVID.</t>
        <t>The WIT-SVID and the corresponding Client Attestation PoP JWT are sent together to the authorization server as a means of client authentication using the HTTP header-based syntax defined in Section 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, X509-SVID or WIT-SVID. The methods supported <bcp14>MUST</bcp14> be advertised in the authorization servers metadata <xref target="RFC8414"/> by including <tt>spiffe_jwt</tt>, <tt>spiffe_wit</tt> and/or <tt>spiffe_x509</tt> in the <tt>token_endpoint_auth_methods_supported</tt> list. Additionally, the same should be included in <tt>revocation_endpoint_auth_methods_supported</tt> and <tt>introspection_endpoint_auth_methods_supported</tt> when applicable.</t>
      <t>Clients <bcp14>MUST</bcp14> support at least one of JWT-SVID, X509-SVID or WIT-SVID. To guarantee interoperability a client <bcp14>SHOULD</bcp14> support all.</t>
      <t>It is the responsibility of the client to select the authentication method supported by the authorization server and its deployment.</t>
    </section>
    <section anchor="spiffe-trust-establishment-and-client-registration">
      <name>SPIFFE Trust Establishment and Client Registration</name>
      <t>This specification requires previously established trust between the OAuth 2.0 Authorization Server and the SPIFFE Trust Domain. This needs to happen out of band and is not in scope of this specification. However, the 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 registered when using SPIFFE credentials for client authentication. OAuth client registration may leverage Client ID Metadata Documents <xref target="I-D.ietf-oauth-client-id-metadata-document"/>, OAuth 2.0 Dynamic Client Registration <xref target="RFC7591"/> or configure them out of band.</t>
      <section anchor="client-registration-metadata">
        <name>Client Registration Metadata</name>
        <t>This specification defines the following client metadata parameters for use in Client ID Metadata Documents <xref target="I-D.ietf-oauth-client-id-metadata-document"/>:</t>
        <dl>
          <dt>spiffe_id</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The SPIFFE ID of the client, e.g. <tt>spiffe://example.org/my-oauth-client</tt>. The value <bcp14>MAY</bcp14> include a trailing <tt>/*</tt> character sequence (e.g. <tt>spiffe://example.org/workloads/*</tt>) indicating that a prefix match against the SPIFFE ID 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, JWT-SVIDs and WIT-SVID 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, X509-SVID or JWT-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 demonstrates why the SPIFFE Bundle Endpoint cannot be derived or discovered from the JWT-SVID, X509-SVID or WIT-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 the following reasons:</t>
          <ul spacing="normal">
            <li>
              <t>OAuth Authorization Server needs to be a workload within a SPIFFE trust domain, which is a significant limitation for deployment scenarios.</t>
            </li>
            <li>
              <t>Federated trust domain bundles create ambiguity about how they are handled. When distributed via the SPIFFE Workload API the trust relationship and points where they are established become ambiguous.</t>
            </li>
          </ul>
        </section>
        <section anchor="manual-configuration">
          <name>Manual configuration</name>
          <t>In small, static environments the authorization server <bcp14>MAY</bcp14> be configured with the SPIFFE bundles manually. This approach requires human interaction to set up, rotate and manage keying material and is thus generally <bcp14>NOT RECOMMENDED</bcp14>.</t>
        </section>
        <section anchor="using-the-system-trust-store">
          <name>Using the system trust store</name>
          <t>X509-SVIDs <bcp14>MUST NOT</bcp14> be validated using the system trust store. The SPIFFE ID carried in the URI SAN is usually not a verifiable attribute in the broader X.509 ecosystem. Using the system trust store as trust anchor would allow ANY certificate authority in it to issue a trusted X509-SVID for ANY SPIFFE ID. In comparison: using SPIFFE-native validation methods restricts the signing of SPIFFE-IDs to the corresponding trust domain signing keys.</t>
        </section>
        <section anchor="svid-iss-claim">
          <name>Using the JWT-SVID or WIT-SVID <tt>iss</tt> claim</name>
          <t>JSON Web Token-based credentials carrying <tt>iss</tt> claims could technically be validated by retrieving the signing keys via OpenID Connect Discovery or OAuth 2.0 Authorization Server Metadata. This approach only applies for the JWT-SVID and WIT-SVID and only works when the <tt>iss</tt> claim is present, which is optional.</t>
          <t>Because of its narrow scope and interoperability considerations, this approach is not a general alternative to the SPIFFE Bundle Endpoint. Implementations <bcp14>SHOULD</bcp14> use the mechanisms defined in this specification when available. However, when those mechanisms are not supported by a peer deployment, implementations <bcp14>MAY</bcp14> use <tt>iss</tt>-based discovery and key retrieval for JWT-SVID or WIT-SVID validation as a compatibility mechanism, subject to local policy, appropriate trust configuration and risk mitigations described in <xref target="iss-claim-security-considerations"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t><cref>Note to RFC Editor: please remove this section, as well as the reference to RFC 7942, before publication.</cref>
This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>
      <t>According to RFC 7942, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.  It is up to the individual working groups to use this information as they see fit".</t>
      <t>Keycloak</t>
      <ul spacing="normal">
        <li>
          <t>Organization: CNCF / IBM</t>
        </li>
        <li>
          <t>Maturity: preview</t>
        </li>
        <li>
          <t>Coverage: JWT-SVID client authentication using SPIFFE Trust Bundle Endpoint</t>
        </li>
        <li>
          <t>Contact: <eref target="https://www.keycloak.org/community">Keycloak community &amp; maintainers</eref></t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Client authentication using JWT-SVIDs has the same security considerations as described in <xref target="RFC6749"/>, <xref target="RFC7521"/> and <xref target="RFC7523"/>.</t>
      <t>Client authentication using X509-SVIDs has the same security considerations as described in <xref target="RFC8705"/>. The validation rules in 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>Client authentication using X509-SVIDs has the same security considerations as described in <xref target="I-D.draft-ietf-wimse-workload-creds"/> and <xref target="I-D.draft-ietf-oauth-attestation-based-client-auth"/></t>
      <t>The issues described in 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 trusted by the authorization server, and that <tt>iss</tt> value is explicitly associated with the configured SPIFFE Trust Domain being validated.</t>
        <t>In addition implementations <bcp14>MUST NOT</bcp14> assume that keys advertised via OpenID Connect Discovery or OAuth 2.0 Authorization Server Metadata are dedicated to JWT-SVID issuance. The same provider infrastructure may issue multiple JWT types (e.g., OAuth/OIDC tokens, JWT-SVIDs, WIT-SVIDs). A token <bcp14>MUST NOT</bcp14> be accepted as a JWT-SVID or WIT-SVID solely because it is a JWT, its signature validates under keys discovered from iss, and its <tt>sub</tt> resembles a SPIFFE ID. Doing so can enable token confusion (e.g., presenting an OAuth/OIDC token issued for another purpose as a JWT-SVID). Implementations <bcp14>MUST</bcp14> validate SVIDs according to SVID-specific requirements and <bcp14>MUST</bcp14> use a trust anchor or key source explicitly bound to the configured SPIFFE Trust Domain, rather than generic issuer-based discovery from untrusted token input.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests a new entry to be added to the Oauth URI registry found at <eref target="https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#uri">https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#uri</eref>. The registration process is defined in <xref target="RFC6755"/>. This document requests the following entry to be added to the registry:</t>
      <ul spacing="normal">
        <li>
          <t>URN: urn:ietf:params:oauth:client-assertion-type:jwt-spiffe</t>
        </li>
        <li>
          <t>Common Name: SPIFFE JWT-SVID Profile for OAuth 2.0 Client Authentication</t>
        </li>
        <li>
          <t>Change Controller: IETF</t>
        </li>
        <li>
          <t>Reference: This Document</t>
        </li>
      </ul>
      <section anchor="oauth-dynamic-client-registration-metadata">
        <name>OAuth Dynamic Client Registration Metadata</name>
        <t>This document requests the following entries to be added to the "OAuth Dynamic Client Registration Metadata" registry defined in <xref target="RFC7591"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Client Metadata Name: <tt>spiffe_id</tt></t>
          </li>
          <li>
            <t>Client Metadata Description: SPIFFE ID of the client</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: This Document</t>
          </li>
          <li>
            <t>Client Metadata Name: <tt>spiffe_bundle_endpoint</tt></t>
          </li>
          <li>
            <t>Client Metadata Description: URL of the SPIFFE Bundle Endpoint for the client's trust domain</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: This Document</t>
          </li>
        </ul>
      </section>
    </section>
  </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_WIT" target="https://github.com/spiffe/spiffe/blob/draft-wit-svid/standards/WIT-SVID.md">
          <front>
            <title>WIT-SVID</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPIFFE_BUNDLE" target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE_Trust_Domain_and_Bundle.md#4-spiffe-bundle-format">
          <front>
            <title>SPIFFE Bundle</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SPIFFE_FEDERATION" target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE_Federation.md">
          <front>
            <title>SPIFFE Federation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="I-D.draft-ietf-oauth-rfc7523bis">
          <front>
            <title>Updates to OAuth 2.0 JSON Web Token (JWT) Client Authentication and Assertion-Based Authorization Grants</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
              <organization>Disney</organization>
            </author>
            <author fullname="Filip Skokan" initials="F." surname="Skokan">
              <organization>Okta</organization>
            </author>
            <date day="28" month="April" year="2026"/>
            <abstract>
              <t>   This document updates RFC7521, RFC7522, RFC7523 and RFC9126 with
   respect to the treatment of audience values in OAuth 2.0 Client
   Assertion Authentication and Assertion-based Authorization Grants to
   address a security vulnerability identified in the previous
   requirements for those audience values in multiple OAuth 2.0
   specifications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc7523bis-11"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="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="25" month="May" year="2026"/>
            <abstract>
              <t>   This specification defines an extension to the OAuth 2.0 protocol
   [RFC6749] that enables a client instance to include a key-bound
   attestation when interacting with an Authorization Server or Resource
   Server.  This mechanism allows a client instance to prove its
   authenticity verified by a client attester without revealing its
   target audience to that attester.  It may also serve as a mechanism
   for client authentication as per OAuth 2.0.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-09"/>
        </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="5" month="May" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones up to complex multi-service, multi-cloud, multi-
   tenant deployments.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-workload-creds-01"/>
        </reference>
      </references>
    </references>
    <?line 652?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <ul spacing="normal">
        <li>
          <t>latest</t>
        </li>
      </ul>
      <section anchor="draft-ietf-oauth-spiffe-client-auth-02">
        <name>draft-ietf-oauth-spiffe-client-auth-02</name>
        <ul spacing="normal">
          <li>
            <t>Add Nancy Cam-Winget as co-author.</t>
          </li>
          <li>
            <t>Editorial updates to clarify WIT-SVID support.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-oauth-spiffe-client-auth-01">
        <name>draft-ietf-oauth-spiffe-client-auth-01</name>
        <ul spacing="normal">
          <li>
            <t>Add mechanism to use Client ID Metadata Document for SPIFFE client metadata discovery.</t>
          </li>
          <li>
            <t>Add WIT-SVID variant using Workload Identity Tokens and Attestation-Based Client Authentication.</t>
          </li>
          <li>
            <t>Add interoperability section.</t>
          </li>
          <li>
            <t>Add more guidance and security considerations when using the iss claim.</t>
          </li>
          <li>
            <t>Add Stian Thorgersen as co-author.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-oauth-spiffe-client-auth-00">
        <name>draft-ietf-oauth-spiffe-client-auth-00</name>
        <ul spacing="normal">
          <li>
            <t>Document name update to reflect adoption into the OAuth working group</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-schwenkschuster-oauth-spiffe-client-auth-01">
        <name>draft-schwenkschuster-oauth-spiffe-client-auth-01</name>
        <ul spacing="normal">
          <li>
            <t>Rephrase introduction to make the focus on client authentication more clear.</t>
          </li>
          <li>
            <t>Add implementation section.</t>
          </li>
          <li>
            <t>Add audience restrictions from RFC7523bis adopted WG document.</t>
          </li>
          <li>
            <t>Add security and IANA considerations section.</t>
          </li>
          <li>
            <t>Add Scott Rose as co-author.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-schwenkschuster-oauth-spiffe-client-auth-00">
        <name>draft-schwenkschuster-oauth-spiffe-client-auth-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial document</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
j9uLfqc97l+efywXl/0ny6t8uWgd39w7izCaFiPmLRaL3fHn/qfgS//prthr
L84WB3e9w6P2/X67dNnrTI52r66OHrtP7ePO+Piq0w6OOt7x2eDyy/75RZvt
LYrLo6d26ejicnF0B/92v1j47KSLz47Us6NO9XH3qf2R9/H5ou1dXRydNRfd
s8/dq7OzT932l4vLnrd/fn+5cO7aZ52x/W1yf3dyetbvdMaX4fjsrN0fH7vt
9kXJPjipHD4OW42DCXs436scn+3vfmz85J6XZucne7X+zVlrt3XZmZ08OsHO
pf/waefsZP8q7N7d30Wfdor2zvDSrn9+6rlX/rlT/7ao35QXT/cjP7L3Olbj
PBqXnJ2ue1yqOsWD6U8XV6N+pb/X6e7VBt7h/j67u7noDI86RcSP0x2fXXc6
g4E7Px4/fvvmP5XDnbtz+zpqn3+bTRZnO0/tU5zzwflRpz1q9joX7W777GDn
qF3l7y96nZ3FWQ/XqXPX/sLb9no9wMFkXHuy973pl+kllt5Fw/LxZNhtf+qM
xwI3Z91O+zhodzte+67XrlXPmpPRpOdUv10t7cXw8PjpZLpzcBbOSn7pJ6v8
aDeb7mWxUt87OgVJel46Pfw2jk66p6PrZRw75+279qd+4Fy6VfbZPbJaP/XL
4dXwrjk+efzY3vOLk8PD3l7lrDu9ifdPZ+3zqPVt96dPQ/feu5jX9mbuffns
w5Ygw39y8bGdyYtU1PgSK4q4bd0plq/scnBZL09vrg5qvjceH+wfTkf9Sej5
x9evinoOylfV8o23d3c8qxR396YnrjO8Prto9WdfDr59bH6czz+Ou52He+dL
e4VNH46Ly9rFp0r96vzxS/C1V9m3G4OaXbzrn/etgy+1yqh86X4sHe/FwdZz
U5ZZKq+Z8rAxqnwqB6dPTf/s4aL0+NlraVO++fz/YqCXFyGKzUc6NjCQWdR/
kOUCE74lVZLw5i9kmt0Ctm7XM15SdoNwy8laoOSsR3F/hMywIoe3w7N04aeC
cTT3Yhc3Ij1dhGI76NEShqCoMhAqZbLbS/MnVVxzW8Cu/lH8ZwFkMPxzyzUG
uZEZ1hAUiXc0C7QuEMA/r9qgZpvVoenUzLJjjlqmXTLrzGw0MWWzUjatujkc
mnUbU0JHRXPYNEdVzOsuVcxi63sqD2ql8guVBz9URVAxS61XVhHU9BcqxRer
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
2RJsu/8DGdPHvzuQAAA=

-->

</rfc>
