<?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-wimse-workload-creds-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="WIMSE Workload Credentials">WIMSE Workload Credentials</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-workload-creds-00"/>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author fullname="Joe Salowey">
      <organization>CyberArk</organization>
      <address>
        <email>joe@salowey.net</email>
      </address>
    </author>
    <author fullname="Arndt Schwenkschuster">
      <organization>Defakto Security</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="03"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 65?>

<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.</t>
      <t>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>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-wimse.github.io/draft-ietf-wimse-s2s-protocol/draft-ietf-wimse-workload-creds.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-wimse-workload-creds/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Workload Identity in Multi System Environments Working Group mailing list (<eref target="mailto:wimse@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/wimse/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-wimse/draft-ietf-wimse-s2s-protocol"/>.</t>
    </note>
  </front>
  <middle>
    <?line 73?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines authentication and authorization in the context of interaction between two workloads.
This is the core component of the WIMSE architecture <xref target="I-D.ietf-wimse-arch"/>.
This document focuses on the credentials that carry workload identity and bind the key material to the identity. The presentation of the proof of possession of the key material is part of other documents and out of scope for this one.</t>
      <t>In this document, two credentials are defined:</t>
      <ul spacing="normal">
        <li>
          <t>The Workload Identity Token (WIT) is a JWT that represents the identity of a workload and binds a public key to that identity.</t>
        </li>
        <li>
          <t>The Workload Identity Certificate (WIC) is an X.509 certificate that represents the identity of a workload and binds a public key to that identity.</t>
        </li>
      </ul>
      <t>The Workload Identity Token is targeted for application-level protocols. The Workload Identity Certificate is targeted for transport-level protocols. This does not preclude the use of the WIT in transport-level protocols or the WIC in application-level protocols, but these are the primary intended uses.</t>
      <t>The various protocol bindings that use these credentials to authenticate workloads to each other are out of scope for this document. At the time of writing, three such protocols are defined:</t>
      <ul spacing="normal">
        <li>
          <t>Transport level authentication mutual TLS using the Workload Identity Certificate.</t>
        </li>
        <li>
          <t>Application level authentication using the Workload Identity Token in conjunction with a JWT-based proof of possession, the Workload Proof Token (WPT).</t>
        </li>
        <li>
          <t>Application level authentication using the Workload Identity Token in conjunction with HTTP Message Signatures.</t>
        </li>
      </ul>
      <section anchor="use-in-other-protocols">
        <name>Use In Other Protocols</name>
        <t>The credentials defined in this document are designed to be used in various protocols. This document does not define the protocols themselves, but rather the credentials that can be used within them. Additional protocols <bcp14>MAY</bcp14> be defined in the future that use these credentials for workload authentication.</t>
      </section>
      <section anchor="deployment-architecture-and-message-flow">
        <name>Deployment Architecture and Message Flow</name>
        <t>Independent of the transport between the workloads, we assume the following logical architecture
(numbers refer to the sequence of steps listed below):</t>
        <figure anchor="high-level-seq">
          <name>Sequence of Operations</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="352" viewBox="0 0 352 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,176" fill="none" stroke="black"/>
                <path d="M 8,272 L 8,352" fill="none" stroke="black"/>
                <path d="M 56,184 L 56,264" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,264" fill="none" stroke="black"/>
                <path d="M 112,32 L 112,176" fill="none" stroke="black"/>
                <path d="M 112,272 L 112,352" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,176" fill="none" stroke="black"/>
                <path d="M 240,272 L 240,352" fill="none" stroke="black"/>
                <path d="M 256,184 L 256,224" fill="none" stroke="black"/>
                <path d="M 272,144 L 272,176" fill="none" stroke="black"/>
                <path d="M 304,184 L 304,264" fill="none" stroke="black"/>
                <path d="M 344,32 L 344,176" fill="none" stroke="black"/>
                <path d="M 344,272 L 344,352" fill="none" stroke="black"/>
                <path d="M 8,32 L 112,32" fill="none" stroke="black"/>
                <path d="M 240,32 L 344,32" fill="none" stroke="black"/>
                <path d="M 120,62 L 232,62" fill="none" stroke="black"/>
                <path d="M 120,66 L 232,66" fill="none" stroke="black"/>
                <path d="M 120,110 L 232,110" fill="none" stroke="black"/>
                <path d="M 120,114 L 232,114" fill="none" stroke="black"/>
                <path d="M 272,144 L 344,144" fill="none" stroke="black"/>
                <path d="M 120,158 L 232,158" fill="none" stroke="black"/>
                <path d="M 120,162 L 232,162" fill="none" stroke="black"/>
                <path d="M 8,176 L 112,176" fill="none" stroke="black"/>
                <path d="M 240,176 L 344,176" fill="none" stroke="black"/>
                <path d="M 72,224 L 256,224" fill="none" stroke="black"/>
                <path d="M 8,272 L 112,272" fill="none" stroke="black"/>
                <path d="M 240,272 L 344,272" fill="none" stroke="black"/>
                <path d="M 8,352 L 112,352" fill="none" stroke="black"/>
                <path d="M 240,352 L 344,352" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="312,264 300,258.4 300,269.6" fill="black" transform="rotate(90,304,264)"/>
                <polygon class="arrowhead" points="312,184 300,178.4 300,189.6" fill="black" transform="rotate(270,304,184)"/>
                <polygon class="arrowhead" points="264,184 252,178.4 252,189.6" fill="black" transform="rotate(270,256,184)"/>
                <polygon class="arrowhead" points="240,112 228,106.4 228,117.6" fill="black" transform="rotate(0,232,112)"/>
                <polygon class="arrowhead" points="240,64 228,58.4 228,69.6" fill="black" transform="rotate(0,232,64)"/>
                <polygon class="arrowhead" points="128,160 116,154.4 116,165.6" fill="black" transform="rotate(180,120,160)"/>
                <polygon class="arrowhead" points="128,64 116,58.4 116,69.6" fill="black" transform="rotate(180,120,64)"/>
                <polygon class="arrowhead" points="80,264 68,258.4 68,269.6" fill="black" transform="rotate(90,72,264)"/>
                <polygon class="arrowhead" points="64,264 52,258.4 52,269.6" fill="black" transform="rotate(90,56,264)"/>
                <polygon class="arrowhead" points="64,184 52,178.4 52,189.6" fill="black" transform="rotate(270,56,184)"/>
                <g class="text">
                  <text x="176" y="52">(2)</text>
                  <text x="52" y="100">Workload</text>
                  <text x="96" y="100">A</text>
                  <text x="176" y="100">(3)</text>
                  <text x="284" y="100">Workload</text>
                  <text x="328" y="100">B</text>
                  <text x="176" y="148">(5)</text>
                  <text x="304" y="164">PEP</text>
                  <text x="168" y="212">(1)</text>
                  <text x="32" y="228">(1)</text>
                  <text x="328" y="228">(4)</text>
                  <text x="60" y="308">Identity</text>
                  <text x="288" y="308">PDP</text>
                  <text x="60" y="324">Server</text>
                  <text x="292" y="324">(optional)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+------------+               +------------+
|            |      (2)      |            |
|            |<=============>|            |
|            |               |            |
| Workload A |      (3)      | Workload B |
|            |==============>|            |
|            |               |            |
|            |      (5)      |   +--------+
|            |<==============|   |  PEP   |
+------------+               +---+--------+
      ^                        ^     ^
      |            (1)         |     |
  (1) | +----------------------+     | (4)
      | |                            |
      v v                            v
+------------+               +------------+
|            |               |            |
|  Identity  |               |    PDP     |
|   Server   |               | (optional) |
|            |               |            |
+------------+               +------------+
]]></artwork>
          </artset>
        </figure>
        <t>The Identity Server provisions credentials to each of the workloads. At least Workload A (and possibly both) must be provisioned
with a credential before the call can proceed. Details of communication with the Identity Server are out of scope
of this document, however we do describe the credential received by the workload.</t>
        <t>PEP is a Policy Enforcement Point, the component that allows the message to go through or blocks it. PDP is an optional
Policy Decision Point, which may be deployed in architectures where policy management is centralized. All details of
policy management and message authorization are out of scope of this document.</t>
        <t>The high-level message flow is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Workload A (and similarly, Workload B) obtains a credential from the Identity Server. This happens periodically, e.g. once every 24 hours.</t>
          </li>
          <li>
            <t>A transport connection is set up. This may already include the use of the Workload Identity Certificate with transport-level security, such as TLS.</t>
          </li>
          <li>
            <t>Workload A prepares to call Workload B. This may include adding application-level authentication information, such as the Workload Identity Token and proof of possession. Workload B authenticates Workload A.</t>
          </li>
          <li>
            <t>Workload B authorizes the call. This policy enforcement (Policy Enforcement Point, PEP) may include consulting with an external server (Policy Decision Point, PDP) when making this decision.</t>
          </li>
          <li>
            <t>Workload B returns a response to Workload A, which may be an error response or a regular one.</t>
          </li>
        </ol>
        <t>Depending on the protocol, the workload authentication may happen during step (2) at the transport-level or at step (3) at the application-level, or both.</t>
      </section>
      <section anchor="granular-auth">
        <name>Workload Identifiers and Authentication Granularity</name>
        <t>The specific format of workload identifiers (see <xref target="I-D.ietf-wimse-arch"/>) is set by local policy for each deployment,
and this choice has several implications.</t>
        <t>Prior to WIMSE, many use cases did not allow for fully granular authentication in containerized runtime platforms.
For instance, with mutual TLS,
there's often no clear way to map the request's external access reference
(e.g., Kubernetes Ingress path, service name, or host header)
to the SubjectAltName value in the server certificate. This means that the client could only verify
if the server certificate is valid within a trust domain, not if it's tied to a specific workload.</t>
        <t>To enable mutual and granular authentication between workloads, two things must be in place:</t>
        <ul spacing="normal">
          <li>
            <t>Each workload must know its own identifier.</t>
          </li>
          <li>
            <t>There needs to be an explicit mapping from the external handle used to access a workload (such as an Ingress path or service DNS name)
to its workload identifier.</t>
          </li>
        </ul>
        <t>Once these conditions are met, the methods described in this document can be used for the caller and callee to mutually authenticate.</t>
        <t>Implementations <bcp14>MUST</bcp14> allow for defining this mapping between the workload's access path and the workload identifier (e.g., through
callback functions). Deployments <bcp14>SHOULD</bcp14> use these features to establish a consistent set of identifiers within their environment.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>All terminology in this document follows <xref target="I-D.ietf-wimse-arch"/>.</t>
      <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>
    <section anchor="app-level">
      <name>Application Level Workload-to-Workload Authentication</name>
      <t>As noted in the Introduction, for many deployments communication between workloads cannot use
end-to-end transport security such as TLS. For these deployment styles, this document proposes a credential that can be used at the application level.</t>
      <section anchor="to-wit">
        <name>The Workload Identity Token</name>
        <t>The Workload Identity Token (WIT) is a JWS <xref target="RFC7515"/> signed JWT <xref target="RFC7519"/> that represents the identity of a workload.
It is issued by the Identity Server and binds a public key to the workload identity. See <xref target="workload-identity-key-management"/> for security considerations.</t>
        <t>A WIT <bcp14>MUST</bcp14> contain the following content, except where noted:</t>
        <ul spacing="normal">
          <li>
            <t>in the JOSE header:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>alg</tt>: An identifier for a JWS asymmetric digital signature algorithm
   (registered algorithm identifiers are listed in the IANA JOSE Algorithms registry <xref target="IANA.JOSE.ALGS"/>). The value <tt>none</tt> <bcp14>MUST NOT</bcp14> be used.</t>
              </li>
              <li>
                <t><tt>typ</tt>: the WIT is explicitly typed, as recommended in <xref section="3.11" sectionFormat="of" target="RFC8725"/>, using the <tt>wit+jwt</tt> media type.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>in the JWT claims:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>iss</tt>: The issuer of the token, which is the Identity Server, represented by a URI. The <tt>iss</tt> claim is <bcp14>RECOMMENDED</bcp14> but optional, see <xref target="wit-iss-note"/> for more.</t>
              </li>
              <li>
                <t><tt>sub</tt>: The subject of the token, which is the identity of the workload, represented by a URI. See <xref target="I-D.ietf-wimse-arch"/> for details of the Workload Identifier. And see <xref target="granular-auth"/> for security implications of these identifiers.</t>
              </li>
              <li>
                <t><tt>exp</tt>: The expiration time of the token (as defined in <xref section="4.1.4" sectionFormat="of" target="RFC7519"/>).
WITs should be refreshed regularly, e.g. on the order of hours.</t>
              </li>
              <li>
                <t><tt>jti</tt>: A unique identifier for the token. This claim is <bcp14>OPTIONAL</bcp14>. The <tt>jti</tt> claim is frequently useful for auditing issuance of individual WITs or to revoke them, but some token generation environments do not support it.</t>
              </li>
              <li>
                <t><tt>cnf</tt>: A confirmation claim referencing the public key of the workload.
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>jwk</tt>: Within the cnf claim, a <tt>jwk</tt> key <bcp14>MUST</bcp14> be present that contains the public key of the workload as defined in <xref section="3.2" sectionFormat="of" target="RFC7800"/>. The workload <bcp14>MUST</bcp14> prove possession of the corresponding private key when presenting the WIT to another party. As such, it <bcp14>MUST NOT</bcp14> be used as a bearer token and is not intended for use in the <tt>Authorization</tt> header.
                    </t>
                    <ul spacing="normal">
                      <li>
                        <t><tt>alg</tt>: Within the jwk object, an <tt>alg</tt> field <bcp14>MUST</bcp14> be present. Allowed values are listed in the IANA "JSON Web Signature and Encryption Algorithms" registry established by <xref target="RFC7518"/>. The presented proof <bcp14>MUST</bcp14> be produced with the algorithm specified in this field. The value <tt>none</tt> <bcp14>MUST NOT</bcp14> be used. Algorithms used in combination with symmetric keys <bcp14>MUST NOT</bcp14> be used. Also encryption algorithms <bcp14>MUST NOT</bcp14> be used as this would require additional key distribution outside of the WIT. To promote interoperability, the <tt>ES256</tt> signing algorithm <bcp14>MUST</bcp14> be supported by general purpose implementations of this document.</t>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>As noted in <xref target="I-D.ietf-wimse-arch"/>, a workload identifier is a URI with a trust domain component.
The runtime environment often determines which
URI scheme is used, e.g. if SPIFFE is used to authenticate workloads, it mandates "spiffe" URIs.
However for those deployments where this is not the case, this document (<xref target="iana-uri"/>)
defines the "wimse" URI scheme which can be used by any deployment that implements this protocol.</t>
        <t>An example WIT might look like this:</t>
        <figure anchor="example-wit">
          <name>An example Workload Identity Token (WIT)</name>
          <sourcecode type="jwt"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR5cCI6IndpdCtqd3QifQ.eyJjb\
mYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2IjoiRWQyNTUxOSIsImt0eSI6Ik9LU\
CIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0ptbEdXZUNIcVFWdW91Q0Y5MmJnI\
n19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUwODkxMCwianRpIjoieC1fMUNUT\
DJjY2EzQ1NFNGN3Yl9sIiwic3ViIjoid2ltc2U6Ly9leGFtcGxlLmNvbS9zcGVjaWZpY\
y13b3JrbG9hZCJ9.6KraSQUxWdl9dxFQ3Fj6dPY0Vi88OkwFwZpAIOhLeq6AbXAnLLQg\
Op8U9UDGcBuYF3KiNv6oKQD1ZWAzrMZOJw
]]></sourcecode>
        </figure>
        <t>The decoded JOSE header of the WIT from the example above is shown here:</t>
        <figure>
          <name>Example WIT JOSE Header</name>
          <sourcecode type="json"><![CDATA[
{
  "alg": "ES256",
  "kid": "June 5",
  "typ": "wit+jwt"
}
]]></sourcecode>
        </figure>
        <t>The decoded JWT claims of the WIT from the example above are shown here:</t>
        <figure>
          <name>Example WIT Claims</name>
          <sourcecode type="json"><![CDATA[
{
  "cnf": {
    "jwk": {
      "alg": "EdDSA",
      "crv": "Ed25519",
      "kty": "OKP",
      "x": "1CXXvflN_LVVsIsYXsUvB03JmlGWeCHqQVuouCF92bg"
    }
  },
  "exp": 1745512510,
  "iat": 1745508910,
  "jti": "x-_1CTL2cca3CSE4cwb_l",
  "sub": "wimse://example.com/specific-workload"
}
]]></sourcecode>
        </figure>
        <t>The claims indicate that the example WIT:</t>
        <ul spacing="normal">
          <li>
            <t>is valid until Thu Apr 24 2025 16:35:10 GMT (represented as NumericDate <xref section="2" sectionFormat="of" target="RFC7519"/> value <tt>1745512510</tt>).</t>
          </li>
          <li>
            <t>identifies the workload to which the token was issued as <tt>wimse://example.com/specific-workload</tt>.</t>
          </li>
          <li>
            <t>has a unique identifier of <tt>x-_1CTL2cca3CSE4cwb_l</tt>.</t>
          </li>
          <li>
            <t>binds the public key represented by the <tt>jwk</tt> confirmation method to the workload <tt>wimse://example.com/specific-workload</tt>.</t>
          </li>
          <li>
            <t>requires the proof to be produced with the <tt>EdDSA</tt> signature algorithm.</t>
          </li>
        </ul>
        <t>For elucidative purposes only, the workload's key, including the private part, is shown below in JWK <xref target="RFC7517"/> format:</t>
        <figure anchor="example-caller-jwk">
          <name>Example Workload's Key</name>
          <sourcecode type="jwk"><![CDATA[
{
 "kty": "OKP",
 "crv": "Ed25519",
 "x": "1CXXvflN_LVVsIsYXsUvB03JmlGWeCHqQVuouCF92bg",
 "d": "sdLX8yCYKqo_XvGBLn-ZWeKT7llYeeQpgeCaXVxb5kY"
}
]]></sourcecode>
        </figure>
        <t>The afore-exampled WIT is signed with the private key of the Identity Server.
The public key(s) of the Identity Server need to be known to all workloads in order to verify the signature of the WIT.
The Identity Server's public key from this example is shown below in JWK <xref target="RFC7517"/> format:</t>
        <figure>
          <name>Example Identity Server Key</name>
          <sourcecode type="jwk"><![CDATA[
{
 "kty": "EC",
 "kid": "June 5",
 "crv": "P-256",
 "x": "kXqnA2Op7hgd4zRMbw0iFcc_hDxUxhojxOFVGjE2gks",
 "y": "n__VndPMR021-59UAs0b9qDTFT-EZtT6xSNs_xFskLo"
}
]]></sourcecode>
        </figure>
        <section anchor="wit-http-header">
          <name>The WIT HTTP Header</name>
          <t>A WIT is conveyed in an HTTP header field named <tt>Workload-Identity-Token</tt>.</t>
          <t>ABNF <xref target="RFC5234"/> for the value of <tt>Workload-Identity-Token</tt> header field is provided in <xref target="wit-header-abnf"/>:</t>
          <figure anchor="wit-header-abnf">
            <name>Workload-Identity-Token Header Field ABNF</name>
            <sourcecode type="abnf"><![CDATA[
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9
base64url = 1*(ALPHA / DIGIT / "-" / "_")
JWT =  base64url "." base64url "." base64url
WIT =  JWT
]]></sourcecode>
          </figure>
          <t>The following shows the WIT from <xref target="example-wit"/> in an example of a <tt>Workload-Identity-Token</tt> header field:</t>
          <figure>
            <name>An example Workload Identity Token HTTP Header Field</name>
            <sourcecode type="http-message"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

Workload-Identity-Token: eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR\
5cCI6IndpdCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2Ijoi\
RWQyNTUxOSIsImt0eSI6Ik9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0pt\
bEdXZUNIcVFWdW91Q0Y5MmJnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUw\
ODkxMCwianRpIjoieC1fMUNUTDJjY2EzQ1NFNGN3Yl9sIiwic3ViIjoid2ltc2U6Ly9l\
eGFtcGxlLmNvbS9zcGVjaWZpYy13b3JrbG9hZCJ9.6KraSQUxWdl9dxFQ3Fj6dPY0Vi8\
8OkwFwZpAIOhLeq6AbXAnLLQgOp8U9UDGcBuYF3KiNv6oKQD1ZWAzrMZOJw
]]></sourcecode>
          </figure>
          <t>Note that per <xref target="RFC9110"/>, header field names are case insensitive;
thus, <tt>Workload-Identity-Token</tt>, <tt>workload-identity-token</tt>, <tt>WORKLOAD-IDENTITY-TOKEN</tt>,
etc., are all valid and equivalent header field names. However, case is significant in the header field value.</t>
        </section>
        <section anchor="add-claims">
          <name>Including Additional Claims</name>
          <t>The WIT contains JSON structures and therefore can be trivially extended by adding more claims beyond those defined in the current specification.
This, however, could result in interoperability issues, which the following rules are addressing.</t>
          <ul spacing="normal">
            <li>
              <t>To ensure interoperability in WIMSE environments, the use of Private claim names (Sec. 4.3 of <xref target="RFC7519"/>) is <bcp14>NOT RECOMMENDED</bcp14>.</t>
            </li>
            <li>
              <t>In closed environments, deployers <bcp14>MAY</bcp14> freely add claims to the WIT. Such claims <bcp14>SHOULD</bcp14> be collision-resistant, such as <tt>example.com/myclaim</tt>.</t>
            </li>
            <li>
              <t>A recipient that does not understand such claims <bcp14>MUST</bcp14> ignore them, as per Sec. 4 of <xref target="RFC7519"/>.</t>
            </li>
            <li>
              <t>Outside of closed environments, new claims <bcp14>MUST</bcp14> be registered with IANA <xref target="IANA.JWT.CLAIMS"/> before they can be used.</t>
            </li>
          </ul>
        </section>
        <section anchor="wit-iss-note">
          <name>A note on <tt>iss</tt> claim and key distribution</name>
          <t>It is <bcp14>RECOMMENDED</bcp14> that the WIT carries an <tt>iss</tt> claim. This specification itself does not make use of a potential <tt>iss</tt> claim but also carries the trust domain in the workload identifier (see <xref target="I-D.ietf-wimse-arch"/> for a definition
of the identifier and related rules). Implementations <bcp14>MAY</bcp14> include the <tt>iss</tt> claim in the form of a <tt>https</tt> URL to facilitate key distribution via mechanisms like the <tt>jwks_uri</tt> from <xref target="RFC8414"/> but alternative key distribution methods may make use of the trust domain included in the workload identifier which is carried in the mandatory <tt>sub</tt> claim.</t>
        </section>
      </section>
      <section anchor="error-conditions">
        <name>Error Conditions</name>
        <t>Errors may occur during the processing of the WIT. If the WIT validation fails for any reason,
such as an invalid signature, an expired validity time window, or a malformed data structure, an error is returned. Typically,
this will be in response to an API call, so an HTTP status code such as 400 (Bad Request) is appropriate. This response could
include more details as per <xref target="RFC9457"/>, such as an indicator that the wrong key material or algorithm was used.  The use of HTTP
status code 401 is <bcp14>NOT RECOMMENDED</bcp14> for this purpose because it requires a WWW-Authenticate with acceptable http auth mechanisms in
the error response and an associated Authorization header in the subsequent request. The use of these headers for the WIT is not compatible
with this specification.</t>
      </section>
      <section anchor="coexist">
        <name>Coexistence with JWT Bearer Tokens</name>
        <t>The WIT defines new HTTP headers. It can therefore be presented along with existing headers used for JWT bearer tokens. This
property allows for transition from mechanisms using identity tokens based on bearer JWTs to proof of possession based WITs.
A workload may implement a policy that accepts both bearer tokens and WITs during a transition period. This policy may be configurable
per-caller to allow the workload to reject bearer tokens from callers that support WITs. Once a deployment fully supports WITs, then the use of
bearer tokens for identity can be disabled through policy.  Implementations should be careful when implementing such a transition strategy,
since the decision which token to prefer is made when the caller's identity has still not been authenticated, and needs to be revalidated following the authentication step.</t>
        <t>The WIT can also coexist with tokens used to establish security context, such as transaction tokens <xref target="I-D.ietf-oauth-transaction-tokens"/>. In this case a workload's
authorization policy may take into account both the sending workload's identity and the information in the context token. For example, the
identity in the WIT may be used to establish which API calls can be made and information in the context token may be used to determine
which specific resources can be accessed.</t>
      </section>
    </section>
    <section anchor="transport-level">
      <name>Transport Level Workload-to-Workload Authentication</name>
      <t>As noted in the introduction, for many deployments, transport-level protection of application traffic is ideal.</t>
      <section anchor="to-wic">
        <name>The Workload Identity Certificate</name>
        <t>The Workload Identity Certificate is an X.509 certificate. The workload identity <bcp14>MUST</bcp14> be encoded in a SubjectAltName extension of type URI. There <bcp14>MUST</bcp14> be only one SubjectAltName extension of type URI in a Workload Identity Certificate. If the workload will act as a TLS server for clients that do not understand workload identities it is <bcp14>RECOMMENDED</bcp14> that the Workload Identity Certificate contain a SubjectAltName of type DNSName with the appropriate DNS names for the server. The certificate <bcp14>MAY</bcp14> contain SubjectAltName extensions of other types.</t>
      </section>
      <section anchor="client-name">
        <name>Client Authorization Using the Workload Identity</name>
        <t>The server application retrieves the workload identifier from the client certificate subjectAltName. The identifier is used in authorization, accounting and auditing.
For example, the full workload identifier may be matched against ACLs to authorize actions requested by the peer and the identifier may be included in log messages to associate actions to the client workload for audit purposes.
A deployment may specify other authorization policies based on the specific details of how the workload identifier is constructed. The path portion of the workload identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
See <xref target="granular-auth"/> on additional security implications of workload identifiers.</t>
      </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>SPIFFE (Standard)</t>
      <ul spacing="normal">
        <li>
          <t>Organization: CNCF</t>
        </li>
        <li>
          <t>Maturity:
          </t>
          <ul spacing="normal">
            <li>
              <t>Workload Identity Certificate: fully compatible with the X509-SVID and widely used.</t>
            </li>
            <li>
              <t>Workload Identity Token: beta</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Coverage: Workload Identity Certificate, WIT</t>
        </li>
        <li>
          <t>Contact: <eref target="https://github.com/spiffe/spiffe/tree/main/community/sig-spec">SPIFFE sig-spec community</eref></t>
        </li>
      </ul>
      <t>Defakto Security</t>
      <ul spacing="normal">
        <li>
          <t>Organization: Defakto Security (prior SPIRL)</t>
        </li>
        <li>
          <t>Maturity:
          </t>
          <ul spacing="normal">
            <li>
              <t>Workload Identity Certificate: production</t>
            </li>
            <li>
              <t>Workload Identity Token: alpha</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Coverage: Workload Identity Certificate, WIT</t>
        </li>
        <li>
          <t>Contact: arndt@defakto.security</t>
        </li>
      </ul>
      <t>Teleport - Machine &amp; Workload Identity</t>
      <ul spacing="normal">
        <li>
          <t>Organization: Teleport</t>
        </li>
        <li>
          <t>Maturity:
          </t>
          <ul spacing="normal">
            <li>
              <t>Workload Identity Certificate: production</t>
            </li>
            <li>
              <t>Workload Identity Token: research</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Coverage: Workload Identity Certificate</t>
        </li>
        <li>
          <t>Contact: noah@goteleport.com</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="workload-identity">
        <name>Workload Identity</name>
        <t>The Workload Identifier is scoped within an issuer and therefore any sub-components (path portion of Identifier) are only unique within a trust domain defined by the issuer. Using a Workload Identifier without taking into account the trust domain could allow one domain to issue tokens to spoof identities in another domain. Additionally, the trust domain must be tied to an authorized issuer cryptographic trust anchor through some mechanism such as a JWKS or X.509 certificate chain. The association of an issuer, trust domain and a cryptographic trust anchor <bcp14>MUST</bcp14> be communicated securely out of band.</t>
      </section>
      <section anchor="workload-identity-token-and-proof-of-possession">
        <name>Workload Identity Token and Proof of Possession</name>
        <t>The Workload Identity Token (WIT) is bound to a secret cryptographic key and is always presented with a proof of possession as described in <xref target="to-wit"/>. The WIT is a general purpose token that can be presented in multiple contexts. The WIT and its PoP are only used in the application-level options, and both are not used in MTLS. The WIT <bcp14>MUST NOT</bcp14> be used as a bearer token. While this helps reduce the sensitivity of the token it is still possible that a token and its proof of possession may be captured and replayed within the PoP's lifetime. The following are some mitigations for the capture and reuse of the proof of possession (PoP):</t>
        <ul spacing="normal">
          <li>
            <t>Preventing Eavesdropping and Interception with TLS</t>
          </li>
        </ul>
        <t>An attacker observing or intercepting the communication channel can view the token and its proof of possession and attempt to replay it to gain an advantage. In order to prevent this the
token and proof of possession <bcp14>MUST</bcp14> be sent over a secure, server authenticated TLS connection unless a secure channel is provided by some other mechanisms.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Proof of Possession Lifespan</t>
          </li>
        </ul>
        <t>The proof of possession <bcp14>MUST</bcp14> be time limited. A PoP should only be valid over the time necessary for it to be successfully used for the purpose it is needed. This will typically be on the order of minutes.  PoPs received outside their validity time <bcp14>MUST</bcp14> be rejected.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Proof of Possession Scope</t>
          </li>
        </ul>
        <t>In order to reduce the risk of theft and replay the PoP should have a limited scope. For example, a PoP may be targeted for use with a specific workload and even a specific transaction to reduce the impact of a stolen PoP. In some cases a workload may wish to reuse a PoP for a period of time or have it accepted by multiple target workloads. A careful analysis is warranted to understand the impacts to the system if a PoP is disclosed allowing it to be presented by an attacker along with a captured WIT.</t>
        <ul spacing="normal">
          <li>
            <t>Replay Protection</t>
          </li>
        </ul>
        <t>Proof of possession mechanisms should include replay protection to prevent reuse of a captured PoP. Without it an attacker can replay a captured PoP within its validity period.</t>
        <ul spacing="normal">
          <li>
            <t>Binding to TLS Endpoint</t>
          </li>
        </ul>
        <t>The POP <bcp14>MAY</bcp14> be bound to a transport layer sender such as the client identity of a TLS session or TLS channel binding parameters. The mechanisms for binding are outside the scope of this specification.</t>
      </section>
      <section anchor="workload-identity-key-management">
        <name>Workload Identity Key Management</name>
        <t>Both the Workload Identity Token and the Workload Identity Certificate carry a public key. The corresponding private key:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST</bcp14> be kept private</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> be individual for each Workload Identifier (see <xref target="I-D.ietf-wimse-arch"/>)</t>
          </li>
          <li>
            <t><bcp14>MUST NOT</bcp14> be used once the credential is expired</t>
          </li>
          <li>
            <t><bcp14>SHOULD</bcp14> be re-generated for each new Workload Identity Token or Certificate.</t>
          </li>
        </ul>
      </section>
      <section anchor="middleboxes">
        <name>Middle Boxes</name>
        <t>In some deployments the Workload Identity Token and proof of possession may pass through multiple systems. The communication between the systems is over TLS, but the token and PoP are available in the clear at each intermediary.  While the intermediary cannot modify the token or the information within the PoP they can attempt to capture and replay the token or modify the data not protected by the PoP.</t>
        <t>Mitigations listed in <xref target="app-level"/> can be used to provide some protection from middle boxes.</t>
        <t>Deployments should perform analysis on their situation to determine if it is appropriate to trust and allow traffic to pass through a middle box.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>WITs and the proofs of possession may contain private information such as user names or other identities. Care should be taken to prevent the disclosure of this information. The use of TLS helps protect the privacy of WITs and proofs of possession.</t>
        <t>WITs and certificates with workload identifiers are typically associated with a workload and not a specific user, however in some deployments the workload may be associated directly to a user. While these are exceptional cases a deployment should evaluate if the disclosure of WITs or certificates can be used to track a user.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="media-type-registration">
        <name>Media Type Registration</name>
        <t>IANA is requested to register the following entries to the "Media Types" registry <xref target="IANA.MEDIA.TYPES"/>:</t>
        <ul spacing="normal">
          <li>
            <t>application/wit+jwt, per <xref target="iana-wit"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wit">
          <name>application/wit+jwt</name>
          <t>Type name: application</t>
          <t>Subtype name: wit+jwt</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: Encoding considerations are identical to those specified for the "application/jwt" media type. See <xref target="RFC7519"/>.</t>
          <t>Security considerations: See the Security Considerations section of RFC XXX.</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: RFC XXX, <xref target="to-wit"/>.</t>
          <t>Applications that use this media type: Identity servers that vend Workload Identity Tokens, and Workloads that
use these tokens to authenticate to each other.</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <t>Deprecated alias names for this type: N/A</t>
          <t>Magic number(s): N/A</t>
          <t>File extension(s): None</t>
          <t>Macintosh file type code(s): N/A</t>
          <t>Person &amp; email address to contact for further information:</t>
          <t>See the Authors' Addresses section of RFC XXX.</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: See the Authors' Addresses section of RFC XXX.</t>
          <t>Change controller: Internet Engineering Task Force (iesg@ietf.org).</t>
        </section>
      </section>
      <section anchor="hypertext-transfer-protocol-http-field-name-registration">
        <name>Hypertext Transfer Protocol (HTTP) Field Name Registration</name>
        <t>IANA is requested to register the following entries to the "Hypertext Transfer Protocol (HTTP) Field Name Registry" <xref target="IANA.HTTP.FIELDS"/>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Workload-Identity-Token</tt>, per <xref target="iana-wit-field"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wit-field">
          <name>Workload-Identity-Token</name>
          <ul spacing="normal">
            <li>
              <t>Field Name: Workload-Identity-Token</t>
            </li>
            <li>
              <t>Status: permanent</t>
            </li>
            <li>
              <t>Structured Type: N/A</t>
            </li>
            <li>
              <t>Specification Document: RFC XXX, <xref target="wit-http-header"/></t>
            </li>
            <li>
              <t>Comments: see reference above for an ABNF syntax of this field</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="iana-uri">
        <name>URI Scheme Registration</name>
        <t>IANA is requested to register the "wimse" scheme to the "URI Schemes" registry <xref target="IANA.URI.SCHEMES"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Scheme name: wimse</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Applications/protocols that use this scheme name: the WIMSE workload-to-workload authentication protocol.</t>
          </li>
          <li>
            <t>Contact: IETF Chair <eref target="mailto:chair@ietf.org">chair@ietf.org</eref></t>
          </li>
          <li>
            <t>Change controller: IESG <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></t>
          </li>
          <li>
            <t>References: <xref target="app-level"/> of this document (RFC XXX).</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="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </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="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="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="IANA.HTTP.FIELDS" target="https://www.iana.org/assignments/http-fields">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JOSE.ALGS" target="https://www.iana.org/assignments/jose">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JWT.CLAIMS" target="https://www.iana.org/assignments/jwt">
          <front>
            <title>JSON Web Token Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.MEDIA.TYPES" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.URI.SCHEMES" target="https://www.iana.org/assignments/uri-schemes">
          <front>
            <title>Uniform Resource Identifier (URI) Schemes</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-arch">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="30" month="September" year="2025"/>
            <abstract>
              <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as a
   running instance of software executing for a specific purpose.  This
   document discusses an architecture for designing and standardizing
   protocols and payloads for conveying workload identity and security
   context information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-06"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-transaction-tokens">
          <front>
            <title>Transaction Tokens</title>
            <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale">
              <organization>SGNL</organization>
            </author>
            <author fullname="George Fletcher" initials="G." surname="Fletcher">
              <organization>Practical Identity LLC</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</organization>
            </author>
            <date day="28" month="July" year="2025"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) are designed to maintain and
   propagate user identity and authorization context across workloads
   within a trusted domain during the processing of external
   programmatic requests, such as API calls.  They ensure that this
   context is preserved throughout the call chain, even when new
   transactions are initiated internally, thereby enhancing security and
   consistency in complex, multi-service architectures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-06"/>
        </reference>
      </references>
    </references>
    <?line 570?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-ietf-wimse-workload-creds-00">
        <name>draft-ietf-wimse-workload-creds-00</name>
        <ul spacing="normal">
          <li>
            <t>Remove WPT, HTTP-Sig and mutual TLS sections, which are going to be covered by individual documents. This includes re-phrasing of various sections to focus on the credentials only.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-07">
        <name>draft-ietf-wimse-s2s-protocol-07</name>
        <ul spacing="normal">
          <li>
            <t>Rework the WPT's <tt>oth</tt> claim.</t>
          </li>
          <li>
            <t>update the media types.</t>
          </li>
          <li>
            <t>Discuss extensibility of WIT and WPT.</t>
          </li>
          <li>
            <t>Clarify error handling, specifically why not HTTP 401.</t>
          </li>
          <li>
            <t>Correct the code examples.</t>
          </li>
          <li>
            <t>Add registration request content for a <tt>wimse</tt> URI scheme.</t>
          </li>
          <li>
            <t>New section on key management.</t>
          </li>
          <li>
            <t>Use of the <tt>Accept-Signature</tt> header.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-06">
        <name>draft-ietf-wimse-s2s-protocol-06</name>
        <ul spacing="normal">
          <li>
            <t>Explicit definition of the Workload Identity Certificate.</t>
          </li>
          <li>
            <t>Definition of the validation of workload identifiers as part of workload authentication. Still work in progress.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-05">
        <name>draft-ietf-wimse-s2s-protocol-05</name>
        <ul spacing="normal">
          <li>
            <t>Removed the entire Workload Identity section which is now covered in the Architecture document.</t>
          </li>
          <li>
            <t>Content-Digest is mandatory with HTTP-Sig.</t>
          </li>
          <li>
            <t>Some wording on extending the protocol beyond HTTP.</t>
          </li>
          <li>
            <t>IANA considerations.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-04">
        <name>draft-ietf-wimse-s2s-protocol-04</name>
        <ul spacing="normal">
          <li>
            <t>Require <tt>cnf.jwk.alg</tt> in WIT which restricts signature algorithm of WPT or HTTP-Sig.</t>
          </li>
          <li>
            <t>Replay protection as a <bcp14>SHOULD</bcp14> for both WPT and HTTP-Sig.</t>
          </li>
          <li>
            <t>Consolidate terminology with the Architecture draft.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-03">
        <name>draft-ietf-wimse-s2s-protocol-03</name>
        <ul spacing="normal">
          <li>
            <t>Consistently use "workload".</t>
          </li>
          <li>
            <t>Implement comments from the SPIFFE community.</t>
          </li>
          <li>
            <t>Make <tt>iss</tt> claim in WIT optional and add wording about its relation to key distribution.</t>
          </li>
          <li>
            <t>Remove <tt>iss</tt> claim from WPT.</t>
          </li>
          <li>
            <t>Make <tt>jti</tt> claim in WIT optional.</t>
          </li>
          <li>
            <t>Error handling for the application level methods.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-02">
        <name>draft-ietf-wimse-s2s-protocol-02</name>
        <ul spacing="normal">
          <li>
            <t>Coexistence with bearer tokens.</t>
          </li>
          <li>
            <t>Improve the architecture diagram.</t>
          </li>
          <li>
            <t>Some more ABNF.</t>
          </li>
          <li>
            <t>Clarified identifiers and URIs.</t>
          </li>
          <li>
            <t>Moved an author to acknowledgments.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-01">
        <name>draft-ietf-wimse-s2s-protocol-01</name>
        <ul spacing="normal">
          <li>
            <t>Addressed multiple comments from Pieter.</t>
          </li>
          <li>
            <t>Clarified WIMSE identity concepts, specifically "trust domain"
and "workload identifier".</t>
          </li>
          <li>
            <t>Much more detail around mTLS, including some normative language.</t>
          </li>
          <li>
            <t>WIT (the identity token) is now included in the WPT proof of possession.</t>
          </li>
          <li>
            <t>Added a section comparing the DPoP-inspired app-level security option to
the Message Signature-based alternative.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-00">
        <name>draft-ietf-wimse-s2s-protocol-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial WG draft, an exact copy of draft-sheffer-wimse-s2s-protocol-00</t>
          </li>
          <li>
            <t>Added this document history section</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Pieter Kasselman for his detailed comments.</t>
      <t>We thank Daniel Feldman for his contributions to earlier versions of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
