<?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-s2s-protocol-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="WIMSE Workload to Workload">WIMSE Workload to Workload Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-s2s-protocol-06"/>
    <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>SPIRL</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>
    <date year="2025" month="July" day="04"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 60?>

<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 simplest, atomic unit of
this architecture: the protocol between two workloads that need to verify each other's identity
in order to communicate securely. The scope of this protocol is a single HTTP request-and-response
pair. To address the needs of different setups, we propose two protocols,
one at the application level and one that makes use of trusted TLS transport.
These two protocols are compatible, in the sense that a single call
chain can have some calls use one protocol and some use the other. Workload A can call
Workload B with mutual TLS authentication, while the next call from Workload B to Workload C
would be authenticated at the application level.</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-s2s-protocol.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-wimse-s2s-protocol/"/>.
      </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 74?>

<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"/>.
For simplicity, this document focuses on HTTP-based services,
and the workload-to-workload call consists of a single HTTP request and its response.
We define the credentials that both workloads should possess and how they are used to protect the HTTP exchange.</t>
      <t>There are multiple deployment styles in use today, and they result in different security properties.
We propose to address them differently.</t>
      <ul spacing="normal">
        <li>
          <t>Many use cases have various middleboxes inserted between pairs of workloads, resulting in a transport layer
that is not end-to-end encrypted. We propose to address these use cases by protecting the HTTP messages at the application
level (<xref target="app-level"/>).</t>
        </li>
        <li>
          <t>The other commonly deployed architecture has a mutual-TLS connection between each pair of workloads. This setup
can be addressed by a simpler solution (<xref target="mutual-tls"/>).</t>
        </li>
      </ul>
      <t>It is an explicit goal of this protocol that a workload deployment can include both architectures across a multi-chain call.
In other words, Workload A can call Workload B with mutual TLS protection,
while the next call to Workload C is protected at the application level.</t>
      <t>For application-level protection we currently propose two alternative solutions, one inspired by DPoP <xref target="RFC9449"/> in <xref target="dpop-esque-auth"/> and
one which is a profile of HTTP Message Signatures <xref target="RFC9421"/> in <xref target="http-sig-auth"/>. The design team believes that we need to pick
one of these two alternatives for standardization, once we have understood their pros and cons.</t>
      <section anchor="extending-this-protocol-to-other-use-cases">
        <name>Extending This Protocol to Other Use Cases</name>
        <t>The protocol defined here is narrowly scoped, targeting only HTTP-based request/response services. To secure workloads communicating over other
transports, new protocol bindings will need to be defined. We note though that this protocol is designed to allow some level
of reuse. In particular, we expect that the Workload Identity Token (WIT) construct will be reusable in other settings. The Workload Proof Token
(WPT) may be adaptable with some changes to different environments.</t>
      </section>
      <section anchor="deployment-architecture-and-message-flow">
        <name>Deployment Architecture and Message Flow</name>
        <t>Regardless 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">(1)</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">(2)</text>
                  <text x="32" y="228">(2)</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[
+------------+               +------------+
|            |      (1)      |            |
|            |<=============>|            |
|            |               |            |
| Workload A |      (3)      | Workload B |
|            |==============>|            |
|            |               |            |
|            |      (5)      |   +--------+
|            |<==============|   |  PEP   |
+------------+               +---+--------+
      ^                        ^     ^
      |            (2)         |     |
  (2) | +----------------------+     | (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 call 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>A transport connection is set up. In the case of mutual TLS, this includes authentication of both workloads to
one another. In the case of application-level security, the TLS connection is typically one-way authenticated,
and workload-level authentication does not yet take place.</t>
          </li>
          <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>Workload A makes an HTTP call into Workload B. This is a regular HTTP request, with the additional protection
mechanisms defined below.</t>
          </li>
          <li>
            <t>In the case of application-level security, Workload B authenticates Workload A (when using mutual TLS, this happened in step 1).
In either case, Workload B decides whether to authorize the call.
In certain architectures, Workload B may need to consult with an external server 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>
      </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 TLS. For these deployment styles, this document proposes application-level protections.</t>
      <t>The current version of the document includes two alternatives, both using the newly introduced
Workload Identity Token (<xref target="to-wit"/>). The first alternative (<xref target="dpop-esque-auth"/>) is inspired by the OAuth DPoP specification.
The second (<xref target="http-sig-auth"/>) is based on the HTTP Message Signatures RFC. We present both alternatives and expect
the working group to select one of them as this document progresses towards IETF consensus.
A comparison of the two alternatives is attempted in <xref target="app-level-comparison"/>.</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.
A WIT <bcp14>MUST</bcp14> contain the following claims, 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>wimse-id+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, which can be accomplished by using it in conjunction with one of the methods in <xref target="dpop-esque-auth"/> or <xref target="http-sig-auth"/>. 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 (WPT or http-sig) <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>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 ================

eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR5cCI6IndpbXNlLWlkK2p3dCJ9\
.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2IjoiRWQyNTUxOSIsImt0eSI\
6Ik9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0ptbEdXZUNIcVFWdW91Q0Y\
5MmJnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUwODkxMCwianRpIjoiYmQ\
yYTdiNWJmODU3M2E0MWFkYjRjYmYzY2ZhMDFlMTUiLCJzdWIiOiJ3aW1zZTovL2V4YW1\
wbGUuY29tL3NwZWNpZmljLXdvcmtsb2FkIn0.xpODXCUhZ2zk-1-W3VEqbqWhBX6_OJI\
l7vtjahgwJStMOCRn6J6is6f5mz-Pi5-Xk6FmV44k48NzulqMDVJbAw
]]></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": "wimse-id+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": "bd2a7b5bf8573a41adb4cbf3cfa01e15",
  "sub": "wimse://example.com/specific-workload"
}
]]></sourcecode>
        </figure>
        <t>The claims indicate that the example WIT:</t>
        <ul spacing="normal">
          <li>
            <t>was issued by an Identity Server known as <tt>wimse://example.com/trusted-central-authority</tt>.</t>
          </li>
          <li>
            <t>is valid until May 15, 2024 3:28:45 PM GMT-06:00 (represented as NumericDate <xref section="2" sectionFormat="of" target="RFC7519"/> value <tt>1717612470</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__</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": "Dy47KDeYao6kOhxSraJeJizjVxHjjo-9NsnrMqLyvOo",
 "y": "bj3s7bncoSYURzAzF0jBy0JOnnP5-5E11vx5QoYEFgk"
}
]]></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\
5cCI6IndpbXNlLWlkK2p3dCJ9.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3\
J2IjoiRWQyNTUxOSIsImt0eSI6Ik9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdk\
IwM0ptbEdXZUNIcVFWdW91Q0Y5MmJnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MT\
c0NTUwODkxMCwianRpIjoiYmQyYTdiNWJmODU3M2E0MWFkYjRjYmYzY2ZhMDFlMTUiLC\
JzdWIiOiJ3aW1zZTovL2V4YW1wbGUuY29tL3NwZWNpZmljLXdvcmtsb2FkIn0.xpODXC\
UhZ2zk-1-W3VEqbqWhBX6_OJIl7vtjahgwJStMOCRn6J6is6f5mz-Pi5-Xk6FmV44k48\
NzulqMDVJbAw
]]></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="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="dpop-esque-auth">
        <name>Option 1: DPoP-Inspired Authentication</name>
        <t>This option, inspired by the OAuth DPoP specification <xref target="RFC9449"/>, uses a DPoP-like mechanism to authenticate
the calling workload in the context of the request. The Workload Identity Token (<xref target="to-wit"/>) is sent in the request as
described in <xref target="wit-http-header"/>. An additional JWT, the Workload Proof Token (WPT), is signed by the private key
corresponding to the public key in the WIT. The WPT is sent in the <tt>Workload-Proof-Token</tt> header field of the request.
The ABNF syntax of the <tt>Workload-Proof-Token</tt> header field is:</t>
        <figure anchor="wpt-header-abnf">
          <name>Workload-Proof-Token Header Field ABNF</name>
          <sourcecode type="abnf"><![CDATA[
WPT =  JWT
]]></sourcecode>
        </figure>
        <t>where the <tt>JWT</tt> projection is defined in <xref target="wit-header-abnf"/>.</t>
        <t>A WPT <bcp14>MUST</bcp14> contain the following:</t>
        <ul spacing="normal">
          <li>
            <t>in the JOSE header:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>alg</tt>: An identifier for an appropriate JWS asymmetric digital signature algorithm corresponding to
   the confirmation key in the associated WIT. The value <bcp14>MUST</bcp14> match the <tt>alg</tt> value of the <tt>jwk</tt> in the <tt>cnf</tt> claim of the WIT. See <xref target="to-wit"/> for valid values and restrictions.</t>
              </li>
              <li>
                <t><tt>typ</tt>: the WPT is explicitly typed, as recommended in <xref section="3.11" sectionFormat="of" target="RFC8725"/>,
   using the <tt>application/wimse-proof+jwt</tt> media type.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>in the JWT claims:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>aud</tt>: The audience <bcp14>SHOULD</bcp14> contain the HTTP target URI (<xref section="7.1" sectionFormat="of" target="RFC9110"/>) of the request
   to which the WPT is attached, without query or fragment parts. However, there may be some normalization,
  rewriting or other process that requires the audience to be set to a deployment-specific value.
  See also <xref target="granular-auth"/> for more details.</t>
              </li>
              <li>
                <t><tt>exp</tt>: The expiration time of the WIT (as defined in <xref section="4.1.4" sectionFormat="of" target="RFC7519"/>). WPT lifetimes <bcp14>MUST</bcp14> be short,
   e.g., on the order of minutes or seconds.</t>
              </li>
              <li>
                <t><tt>jti</tt>: An identifier for the token. The value <bcp14>MUST</bcp14> be unique, at least within the scope of the sender.</t>
              </li>
              <li>
                <t><tt>wth</tt>: Hash of the Workload Identity Token, defined in <xref target="to-wit"/>. The value is the base64url encoding of the
   SHA-256 hash of the ASCII encoding of the token's value.</t>
              </li>
              <li>
                <t><tt>ath</tt>: Hash of the OAuth access token, if present in the request, which might convey end-user identity and
   authorization context of the request. The value, as per <xref section="4.1" sectionFormat="of" target="RFC9449"/>,
   is the base64url encoding of the SHA-256 hash of the ASCII encoding of the access token's value.</t>
              </li>
              <li>
                <t><tt>tth</tt>: Hash of the Txn-Token <xref target="I-D.ietf-oauth-transaction-tokens"/>, if present in the request,
   which might convey end-user identity and authorization context of the request. The value <bcp14>MUST</bcp14> be the result of
   a base64url encoding (as defined in <xref section="2" sectionFormat="of" target="RFC7515"/>) of the SHA-256 hash of
   the ASCII encoding of the associated token's value.</t>
              </li>
              <li>
                <t><tt>oth</tt>: Hash of any other token in the request that might convey end-user identity and authorization context of the
   request, if such a token exists.
   The value <bcp14>MUST</bcp14> be the result of a base64url encoding (as defined in <xref section="2" sectionFormat="of" target="RFC7515"/>) of the
   SHA-256 hash of the ASCII encoding of the associated token's value.
   (Note: this is less than ideal but seems we need something like this for extensibility.)</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>To clarify: the <tt>ath</tt>, <tt>tth</tt> and <tt>oth</tt> claims are each mandatory if the respective token is included in the request.</t>
        <t>An example WPT might look like the following:</t>
        <figure anchor="example-wpt">
          <name>Example Workload Proof Token (WPT)</name>
          <sourcecode type="jwt"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

eyJhbGciOiJFZERTQSIsInR5cCI6IndpbXNlLXByb29mK2p3dCJ9.eyJhdGgiOiJDTDR\
3amZwUm1OZi1iZFlJYllMblY5ZDVyTUFSR3dLWUUxMHdVd3pDMGpJIiwiYXVkIjoiaHR\
0cHM6Ly93b3JrbG9hZC5leGFtcGxlLmNvbS9wYXRoIiwiZXhwIjoxNzQ1NTA5MjEwLCJ\
qdGkiOiJlMzI5YmI4Njk2YWE0YWVjYTA0ODg2ZGQ3NmU3OGIyNiIsInd0aCI6InJvN3h\
GT1NHX2pZeG1VV2Z3ZXFrNVgxc2M2TDBzQ2o3NVdLVDkxZ014eFUifQ.oSegRTrBxuQN\
55oyWRK5PnPEZLhgRy0Va7BpxBw-a64E3map15dbDo9ArRcJ8M4Z4QZ829CCppfnuaLI\
ei1bBQ
]]></sourcecode>
        </figure>
        <t>The decoded JOSE header of the WPT from the example above is shown here:</t>
        <figure>
          <name>Example WPT JOSE Header</name>
          <sourcecode type="json"><![CDATA[
{
  "alg": "EdDSA",
  "typ": "wimse-proof+jwt"
}
]]></sourcecode>
        </figure>
        <t>The decoded JWT claims of the WPT from the example above are shown here:</t>
        <figure>
          <name>Example WPT Claims</name>
          <sourcecode type="json"><![CDATA[
{
  "ath": "CL4wjfpRmNf-bdYIbYLnV9d5rMARGwKYE10wUwzC0jI",
  "aud": "https://workload.example.com/path",
  "exp": 1740755048,
  "jti": "0c740386ca1dcad37de1b5f9de1b0705",
  "wth": "aA0W_oFJK7qV7zYhcmzR1KOXVCHjd2x6c4sOQLvE90Y"
}
]]></sourcecode>
        </figure>
        <t>An example of an HTTP request with both the WIT and WPT from prior examples is shown below:</t>
        <figure>
          <name>Example HTTP Request with WIT and WPT</name>
          <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

POST /path HTTP/1.1
Host: workload.example.com
Content-Type: application/json
Authorization: Bearer 16_mAd0GiwaZokU26_0902100
Workload-Identity-Token: eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR\
5cCI6IndpbXNlLWlkK2p3dCJ9.eyJjbmYiOnsiandrIjp7ImNydiI6IkVkMjU1MTkiLC\
JrdHkiOiJPS1AiLCJ4Ijoiclp3VUEwVHJIazRBWEs5MkY2Vll2bUhIWDN4VU0tSUdsck\
11VkNRaG04VSJ9fSwiZXhwIjoxNzQwNzU4MzQ4LCJpYXQiOjE3NDA3NTQ3NDgsImp0aS\
I6IjRmYzc3ZmNlZjU3MWIzYmIzM2I2NzJlYWYyMDRmYWY0Iiwic3ViIjoid2ltc2U6Ly\
9leGFtcGxlLmNvbS9zcGVjaWZpYy13b3JrbG9hZCJ9.j-WlF3bufTwWeVZQntPhlzvST\
Pwf37-4wfazJZARdHYmW9S_olB5nKEqwqTZpIX_LoVVIcyK0VBE7Fa0CMvw2g
Workload-Proof-Token: eyJhbGciOiJFZERTQSIsInR5cCI6IndpbXNlLXByb29mK2\
p3dCJ9.eyJhdGgiOiJDTDR3amZwUm1OZi1iZFlJYllMblY5ZDVyTUFSR3dLWUUxMHdVd\
3pDMGpJIiwiYXVkIjoiaHR0cHM6Ly93b3JrbG9hZC5leGFtcGxlLmNvbS9wYXRoIiwiZ\
XhwIjoxNzQwNzU1MDQ4LCJqdGkiOiIwYzc0MDM4NmNhMWRjYWQzN2RlMWI1ZjlkZTFiM\
DcwNSIsInd0aCI6ImFBMFdfb0ZKSzdxVjd6WWhjbXpSMUtPWFZDSGpkMng2YzRzT1FMd\
kU5MFkifQ.W9RZqieXeD-UgdtbYf8ZNkf2_6_6b_kJSfkODQdq3_QDSSGOhVbRAR3qQo\
Ou0SzihiG6HCsGwslfo4WdvnH5AQ

{"do stuff":"please"}
]]></sourcecode>
        </figure>
        <t>To validate the WPT in the request, the recipient <bcp14>MUST</bcp14> ensure the following:</t>
        <ul spacing="normal">
          <li>
            <t>There is exactly one <tt>Workload-Proof-Token</tt> header field in the request.</t>
          </li>
          <li>
            <t>The <tt>Workload-Proof-Token</tt> header field value is a single and well-formed JWT.</t>
          </li>
          <li>
            <t>The signature algorithm in the <tt>alg</tt> JOSE header string-equal matches the <tt>alg</tt> attribute of the <tt>jwk</tt> in the <tt>cnf</tt> claim of the WIT.</t>
          </li>
          <li>
            <t>The WPT signature is valid using the public key from the confirmation claim of the WIT.</t>
          </li>
          <li>
            <t>The <tt>typ</tt> JOSE header parameter of the WPT conveys a media type of <tt>wimse-proof+jwt</tt>.</t>
          </li>
          <li>
            <t>The <tt>aud</tt> claim of the WPT matches the target URI, or an acceptable alias or normalization thereof, of the HTTP request
 in which the WPT was received, ignoring any query and fragment parts. See also <xref target="granular-auth"/> for implementation advice
 on this verification check.</t>
          </li>
          <li>
            <t>The <tt>exp</tt> claim is present and conveys a time that has not passed. WPTs with an expiration time unreasonably
 far in the future <bcp14>SHOULD</bcp14> be rejected.</t>
          </li>
          <li>
            <t>The <tt>wth</tt> claim is present and matches the hash of the token value conveyed in the <tt>Workload-Identity-Token</tt> header.</t>
          </li>
          <li>
            <t>It is <bcp14>RECOMMENDED</bcp14> to check that the value of the <tt>jti</tt> claim has not been used before in the time window in which the
 respective WPT would be considered valid.</t>
          </li>
          <li>
            <t>If presented in conjunction with an OAuth access token, the value of the <tt>ath</tt> claim matches the hash of that token's value.</t>
          </li>
          <li>
            <t>If presented in conjunction with a Txn-Token, the value of the <tt>tth</tt> claim matches the hash of that token's value.</t>
          </li>
          <li>
            <t>If presented in conjunction with a token conveying end-user identity or authorization context, the value of
 the <tt>oth</tt> claim matches the hash of that token's value.</t>
          </li>
        </ul>
      </section>
      <section anchor="http-sig-auth">
        <name>Option 2: Authentication Based on HTTP Message Signatures</name>
        <t>This option uses the Workload Identity Token (<xref target="to-wit"/>) to sign the request and optionally, the response.
This section defines a profile of the Message Signatures specification <xref target="RFC9421"/>.</t>
        <t>The request is signed as per <xref target="RFC9421"/>. The following derived components <bcp14>MUST</bcp14> be signed:</t>
        <ul spacing="normal">
          <li>
            <t><tt>@method</tt></t>
          </li>
          <li>
            <t><tt>@request-target</tt></t>
          </li>
        </ul>
        <t>In addition, the following request headers <bcp14>MUST</bcp14> be signed when they exist:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Content-Type</tt></t>
          </li>
          <li>
            <t><tt>Content-Digest</tt></t>
          </li>
          <li>
            <t><tt>Authorization</tt></t>
          </li>
          <li>
            <t><tt>Txn-Token</tt> <xref target="I-D.ietf-oauth-transaction-tokens"/></t>
          </li>
          <li>
            <t><tt>Workload-Identity-Token</tt></t>
          </li>
        </ul>
        <t>If the response is signed, the following components <bcp14>MUST</bcp14> be signed:</t>
        <ul spacing="normal">
          <li>
            <t><tt>@status</tt></t>
          </li>
          <li>
            <t><tt>@method;req</tt></t>
          </li>
          <li>
            <t><tt>@request-target;req</tt></t>
          </li>
          <li>
            <t><tt>Content-Type</tt> if it exists</t>
          </li>
          <li>
            <t><tt>Content-Digest</tt> if it exists</t>
          </li>
          <li>
            <t><tt>Workload-Identity-Token</tt></t>
          </li>
        </ul>
        <t>To ensure the message is fully integrity-protected, if the request or response includes a message body, the sender <bcp14>MUST</bcp14> include
(and the receiver <bcp14>MUST</bcp14> verify) a Content-Digest header.</t>
        <t>For both requests and responses, the following signature parameters <bcp14>MUST</bcp14> be included:</t>
        <ul spacing="normal">
          <li>
            <t><tt>created</tt></t>
          </li>
          <li>
            <t><tt>expires</tt> - expiration <bcp14>MUST</bcp14> be short, e.g. on the order of minutes. The WIMSE architecture will provide separate
mechanisms in support of long-lived compute processes.</t>
          </li>
          <li>
            <t><tt>nonce</tt></t>
          </li>
          <li>
            <t><tt>tag</tt> - the value for implementations of this specification is <tt>wimse-workload-to-workload</tt></t>
          </li>
        </ul>
        <t>The following signature parameters in the <tt>Signature-Input</tt> header <bcp14>MUST NOT</bcp14> be used:</t>
        <ul spacing="normal">
          <li>
            <t><tt>keyid</tt> - The signing key is sent along with the message in the WIT. Additionally specifying the key identity would add confusion.</t>
          </li>
          <li>
            <t><tt>alg</tt> - The signature algorithm is specified in the <tt>jwk</tt> section of the <tt>cnf</tt> claim in the WIT. See <xref target="to-wit"/> and Sec. 3.3.7 of <xref target="RFC9421"/> for details.</t>
          </li>
        </ul>
        <t>It is <bcp14>RECOMMENDED</bcp14> to include only one signature with the HTTP message.
If multiple ones are included, then the signature label included in both the <tt>Signature-Input</tt> and <tt>Signature</tt> headers <bcp14>SHOULD</bcp14>
be <tt>wimse</tt>.</t>
        <t>A sender <bcp14>MUST</bcp14> ensure that each nonce it generates is unique, at least among messages sent to the same recipient.
To detect message replays,
a recipient <bcp14>SHOULD</bcp14> reject a message (request or response) if a nonce generated by a certain peer is seen more than once.</t>
        <t>Following is a non-normative example of a signed request and a signed response,
where the caller is using the keys specified in <xref target="example-caller-jwk"/>.</t>
        <figure>
          <name>Signed Request</name>
          <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /gimme-ice-cream?flavor=vanilla HTTP/1.1
Host: example.com
Signature: wimse=:K4dfGnguF5f1L4DKBSp5XeFXosLGj8Y9fiUX06rL/wdOF+x3zT\
WmsvKWiY0B1oFZaOtm2FHru+YLjdkqa2WfCQ==:
Signature-Input: wimse=("@method" "@request-target" "workload-identi\
ty-token");created=1718291357;expires=1718291657;nonce="abcd1111";ta\
g="wimse-workload-to-workload"
Workload-Identity-Token: aGVhZGVyCg.VGhpcyBpcyBub3QgYSByZWFsIHRva2Vu\
Lgo.c2lnbmF0dXJlCg

]]></sourcecode>
        </figure>
        <t>Assuming that the workload being called has the following keypair:</t>
        <figure>
          <name>Callee Private Key</name>
          <sourcecode type="jwk"><![CDATA[
{
 "kty":"OKP",
 "crv":"Ed25519",
 "x":"CfaY1XX-aHJpenRP8ATm3yGlbcKA_treqOfwKrilwyg",
 "d":"fycSKS-iHZ6TC1BNwN6cE0sOBP3-4KgR-eqxNpnyhws"
}
]]></sourcecode>
        </figure>
        <t>A signed response would be:</t>
        <figure>
          <name>Signed Response</name>
          <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

HTTP/1.1 404 Not Found
Connection: close
Content-Digest: sha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU\
=:
Content-Type: text/plain
Signature: wimse=:NMrMn3xhI6m9PI8mKVfpnH5qFGcEfuFxiCmsB5PJhGjUHT/5J4\
612EZwRw3V4kU4gGJmO+ER8RC4DM2HKVOYDQ==:
Signature-Input: wimse=("@status" "workload-identity-token" "content\
-type" "content-digest" "@method";req "@request-target";req);created\
=1718295368;expires=1718295670;nonce="abcd2222";tag="wimse-workload-\
to-workload"
Workload-Identity-Token: aGVhZGVyCg.VGhpcyBhaW4ndCBvbmUsIHRvby4K.c2l\
nbmF0dXJlCg

No ice cream today.

]]></sourcecode>
        </figure>
      </section>
      <section anchor="app-level-comparison">
        <name>Comparing the DPoP Inspired Option with Message Signatures</name>
        <t>The two workload protection options have different strengths and weaknesses regarding implementation
complexity, extensibility, and security.
Here is a summary of the main differences between
<xref target="dpop-esque-auth"/> and <xref target="http-sig-auth"/>.</t>
        <ul spacing="normal">
          <li>
            <t>The DPoP-inspired solution is less HTTP-specific, making it easier to adapt for
other protocols beyond HTTP. This flexibility is particularly valuable for
asynchronous communication scenarios, such as event-driven systems.</t>
          </li>
          <li>
            <t>Message Signatures, on the other hand, benefit from an existing HTTP-specific RFC with
some established implementations. This existing groundwork means that this option could
be simpler to deploy, to the extent such implementations are available and easily integrated.</t>
          </li>
          <li>
            <t>Given that the WIT (Workload Identity Token) is a type of JWT, the
DPoP-inspired approach that also uses JWT is less complex and technology-intensive than Message
Signatures. In contrast, Message Signatures introduce an additional layer of
technology, potentially increasing the complexity of the overall system.</t>
          </li>
          <li>
            <t>Message Signatures offer superior integrity protection, particularly by mitigating
message modification by middleboxes. See also <xref target="middleboxes"/>.</t>
          </li>
          <li>
            <t>A key advantage of Message Signatures is that they support response signing.
This opens up the possibility for future decisions about whether to make
response signing mandatory, allowing for flexibility in the specification
and/or in specific deployment scenarios.</t>
          </li>
          <li>
            <t>In general, Message Signatures provide greater flexibility compared to
the DPoP-inspired approach. Future versions of this draft (and subsequent implementations) can decide
whether specific aspects of message signing, such as coverage of particular fields,
should be mandatory or optional. Covering more fields will constrain the proof
so it cannot be easily reused in another context, which is often a security improvement. The DPoP inspired approach could
be designed to include extensibility to sign other fields, but this would make it closer to
trying to reinvent Message Signatures.</t>
          </li>
        </ul>
      </section>
      <section anchor="error-conditions">
        <name>Error Conditions</name>
        <t>Errors may occur during the processing of the message signature or WPT. If the signature verification 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.</t>
      </section>
      <section anchor="coexist">
        <name>Coexistence with JWT Bearer Tokens</name>
        <t>The WIT and WPT define new HTTP headers. They 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="mutual-tls">
      <name>Using Mutual TLS for Workload To Workload Authentication</name>
      <t>As noted in the introduction, for many deployments, transport-level protection of application traffic using TLS 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 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 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="wic-validation">
        <name>Workload Identity Certificate Validation</name>
        <t>Workload certificates may be used to authenticate both the server and client side of the connections.  When validating a workload certificate, the relying party <bcp14>MUST</bcp14> use the trust anchors configured for the trust domain in the workload identity to validate the peer's certificate.  Other PKIX <xref target="RFC5280"/> path validation rules apply. WIMSE clients and servers <bcp14>MUST</bcp14> validate that the trust domain portion of the workload certificate matches the expected trust domain for the other side of the connection.</t>
        <t>Servers wishing to use the workload certificate for authorizing the client <bcp14>MUST</bcp14> require client certificate authentication in the TLS handshake. Other methods of post handshake authentication are not specified by this document.</t>
        <t>WIMSE server certificates <bcp14>SHOULD</bcp14> have the <tt>id-kp-serverAuth</tt> extended key usage <xref target="RFC5280"/> field set and WIMSE client certificates <bcp14>SHOULD</bcp14> have the <tt>id-kp-clientAuth</tt> extended key usage field set. A certificate that is used for both client and server connections may have both fields set. This specification does not make any other requirements beyond <xref target="RFC5280"/> on the contents of workload certificates or on the certification authorities that issue workload certificates.</t>
        <section anchor="server-name">
          <name>Server Name Validation</name>
          <t>If the WIMSE client uses a hostname to connect to the server and the server certificate contain a DNS SAN the client <bcp14>MUST</bcp14> perform standard host name validation (<xref section="6.3" sectionFormat="of" target="RFC9525"/>) unless it is configured with the information necessary to validate the peer's workload identity.
If the client did not perform standard host name validation then the WIMSE client <bcp14>SHOULD</bcp14> further use the workload identifier to validate the server.
The host portion of the workload identifier is NOT treated as a host name as specified in section 6.4 of <xref target="RFC9525"/> but rather as a trust domain. The server identity is encoded in the path portion of the workload identifier in a deployment specific way.
Validating the workload identity could be a simple match on the trust domain and path portions of the identifier or validation may be based on the specific details on how the identifier is constructed. The path portion of the WIMSE identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
In most cases it is preferable to validate the entire workload identifier, see <xref target="granular-auth"/> for additional implementation advice.</t>
        </section>
      </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, which in turn is obtained from the TLS layer. 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="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. Host name validation according
to <xref target="server-name"/> <bcp14>MUST</bcp14> be performed. The WIT itself is not usable without a proof of possession.</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>A proof of possession includes the <tt>jti</tt> claim that <bcp14>MUST</bcp14> uniquely identify it, within the scope of a particular sender.
This claim <bcp14>SHOULD</bcp14> be used by the receiver to perform basic replay protection against tokens it has already seen.
Depending upon the design of the system it may be difficult to synchronize the replay cache across all token validators.
If an attacker can somehow influence the identity of the validator (e.g. which cluster member receives the message) then
replay protection would not be effective.</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="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. Mitigations listed in the previous section can be used to provide some protection from middle boxes. 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="json-web-token-claims">
        <name>JSON Web Token Claims</name>
        <t>IANA is requested to add the following entries to the "JSON Web Token Claims" registry <xref target="IANA.JWT.CLAIMS"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim Name</th>
              <th align="left">Claim Description</th>
              <th align="left">Change Controller</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">tth</td>
              <td align="left">Transaction Token hash</td>
              <td align="left">IESG</td>
              <td align="left">RFC XXX, <xref target="dpop-esque-auth"/></td>
            </tr>
            <tr>
              <td align="left">wth</td>
              <td align="left">Workload Identity Token hash</td>
              <td align="left">IESG</td>
              <td align="left">RFC XXX, <xref target="dpop-esque-auth"/></td>
            </tr>
            <tr>
              <td align="left">oth</td>
              <td align="left">Other Token hash</td>
              <td align="left">IESG</td>
              <td align="left">RFC XXX, <xref target="dpop-esque-auth"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <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/wimse-id+jwt, per <xref target="iana-wit"/>.</t>
          </li>
          <li>
            <t>application/wimse-proof+jwt, per <xref target="iana-wpt"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wit">
          <name>application/wimse-id+jwt</name>
          <t>Type name: application</t>
          <t>Subtype name: wimse-id+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 anchor="iana-wpt">
          <name>application/wimse-proof+jwt</name>
          <t>Type name: application</t>
          <t>Subtype name: wimse-proof+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="dpop-esque-auth"/>.</t>
          <t>Applications that use this media type: Workloads that use these tokens to integrity-protect messages in the WIMSE workload-to-workload protocol.</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>
          <li>
            <t><tt>Workload-Proof-Token</tt>, per <xref target="iana-wpt-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 anchor="iana-wpt-field">
          <name>Workload-Proof-Token</name>
          <ul spacing="normal">
            <li>
              <t>Field Name: Workload-Proof-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="dpop-esque-auth"/></t>
            </li>
            <li>
              <t>Comments: see reference above for an ABNF syntax of this field</t>
            </li>
          </ul>
        </section>
      </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="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </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="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </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="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>Venafi</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="2" month="March" 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-04"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </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>Capital One</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) enable workloads in a trusted domain
   to ensure that user identity and authorization context of an external
   programmatic request, such as an API invocation, are preserved and
   available to all workloads that are invoked as part of processing
   such a request.  Txn-Tokens also enable workloads within the trusted
   domain to initiate transactions with protected user identity an
   authorization context throughout the call chain of the workloads
   required to complete the request.

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

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <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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
/NPGWXC2f3syGp7Pq5fW1u7keXdWtjbX99fG1qS24fSb4XYjOrePP7TXb9c/
336ob+/tTSaDYGqdtO4M16v1dz8vhvEnybIQzaIt95YA/tk/GcBXce5stF5p
wK+Egs9+NmC/fK0/CNgDTePS9k7WZw+Dyfm4Myj3nZtW/+YkuNx2NqJ24/xw
9ulmv1adXcxe9qoPLd4S6KQrWsdOlSCoxy6xImklG3ivbm1sVNc/6DH2qg1f
r33YtK2aY1vO2pbj1vobg238T3WrKmLsM16n1ahefQkPjj9tfb3cerkZ2eOX
89qn0+vLvaMHp/68aa/Hp59Pnva3qzevgzeNtDeyDvsg24WMQnaU4y+1X+R8
Ct4TKrEU78e5QJjm1P+z+NPZKYglAiwt832tUjOOQmyeWnQCxh5KQjAPetQE
VrfGCAMyeX875i7nDdY2v4wbTvXQm1m34eNFffNLdbtar1Wr/49CCZ2543Eo
of2ArvxHdrxHzhExtrNurYHpRuvIOG1/snZ5sT+7PDpuWS/nu1f78Ub78aZ+
6fv1/sWoddXsrF9eVJPuhRPbj3dGrXb52Dm3Dqvrl93j7UE3w0hnnZeL9fbL
53UYfXJz/VmEExprnR6wy+YQtjipWt07A1b3cD6+ebHXbscd//bhYq191XoB
ZvvSrrfqnZdj/+bqZt5uwjNXN1Vk1/bapYfrdep+YtcvgM3fGdt55v5iH14+
WFe3k5t5TRMCAKiH8pV/sNafDnqzK/fy9nOQnI38l6du7844mw3Wtsrrs4H1
cnzbOHeObsZX290vob+7EXza/zr72rudtK6/nISXly17/ql6ubu/dWBV99pP
s/rQKPLsZI/3x1LxziiWiz8nFUGKFsrFn5OKd0b2OGvtJh2nkIqtGRxatd1s
r3fGnVH76vzh5urzS6d+7sMB1m4f/Mfb3oHXvjOa9ozxV8jF8cFu+8AZ9Ku3
n7ovzvPlg7N5dTV66F9Puu2L5Ozq4LbZPZw8toNh/ebl/KVXO2jDjh4vNtoH
jygXr7bPb7967rXbLF8MnaR/M/hw23kc1L9sftnsf3k87g4eT5ufna9rXz43
u93D09Fl/7xxvvb1c3hnnE6r3Rdv5B1uHu3Fh7PYH4TrV85TcLTR+GwY31ac
0IyT6WCwsrMyQUvXXVnGCInTneucTmNwJHVCdiVx9pFwi+SMRf5gexOqgya9
GSuUokVd7TdRIcyZA3bCvSje5qrMqYncCfAtbyrDW3WZpEYXru+XMZ7A4lQO
WOTxk9438s7pegJ61IJhGZYEeja58YS/hh+1Eg4X/JQzT6wD4ZyuJc3AigtS
9JXcL8jsXxyZnH6ZbUysyAKLIKv4sLVFzQWVl44yCvJePDUueulys571MmBJ
nXNUkI8+WBsLqqh+HfZnka8n4yxjZ1o4KMkxddlsICyzLrsZ+yupUw6YekMY
jJKSwcpkxx2efd5z9wM/WTZF2bQcLDc32F2FJ4P5NDJKAnu1HxVI0JmW1oNI
94DozyfAS741MnMxDQ2jeRMrpmRv2E+sddDIeuOmQQSUHWLt/9wwB1zaS/Q2
JZQRDlIqiXmgzoxqVTNltOVXpR+Wbpey1caEpOetZOMMxekNOG1B5DNkUKUh
0JzbO62kkWDpu9T3hHqrUIsmsQACBzAYhxOPFD4Yut1JuCGLhKhc3aFKOiIr
WuJAqxEoqtqAMyhyoi0u3UrBWwxP3HDWjn/L9KlLqmjS5F80KZ88nzkS0qL3
JYyKnS/ZVRq8zPDnl2no4c76Tj7AuStLdpc27fwlW0CTiX9yHPMVl2422oi1
u9TaUw81YrG9qACUGZNpx2LRSZZhqvo/681G8fmCZeeDr2nnUVGnLedPQ5LK
q5o+ysXUKoEJcJ5aiKlOYJo7nsYgGX3/dw5u39Pfsms5M+97A5sBybBpKSvh
1ZqY8vODc3FVgq2RyefGk+kWyr3+RdMbwlj0VbY8Cb9RxHD/RgctvrSMU8Ge
BplzS4Ga3+GPIBeDkJjG9xoU/wJAKYKk+j4DAG77InySBdBY+H35nqg1jFLD
ZGsz9PVRkx+s5hlijndZ9e4tpQ47Pke9kVLauUyN1Q8dgfAcMWGQiAeNd7IV
iZDH4mdOP12FYbJbU+KCUpLJ4BbLUAFMWkicP5JUTVKKTHo40s3Ix2ODzIR9
EthJoLrxvVnWZWs2OlVcOSriUiKIv9hTnZq8inxKgAyuKnH1HmHYnEvUZ8Jw
fgg6pK/oEvVFEQnE3uC/UUWZzaSRWENcb8pYF9WTtIIqlzIkM+JVHrnekv1+
IdWxCKhS4is2VW4FsF6lb+dL0BjooKJ6Di5b6tc4PoXHRe6DhRBIU6MVpmrp
Eg2Vp4H9h2ljc6kJ01CSabOMB/5EyvCUW4qJPABtCQsqfpyv7ZPauuTdUtBq
Wru+wFwIHhG269oVc62yVtnClzWurNdhVwrTwkKVCEVtXNBGSletAKV3Ua8g
C1Mt6ulODitK0Z9oRkQ61UC+1Xf9jCNeubkWj5jc/erbe8XiWc80+rJmn/KS
M/xAMSGQ7RQfIHxGLiZqmNltthCdtcaIFqpLPFcOiw7B2KxLmZwVZHUAT6yk
l8gTuRPfmuNFBJppKnRiVog1PvaugN+tIi+0xFrlQkWhveyFN3FREcKlYTc7
7hqKLTIDbIkIbEwSE9meMFJZXXqTzRAW4lHXKLQveT0lLZNGNJpCoMUaFeRw
OE1NTksYSHv4s12Sh/s98/3QG4/dMhhGZWSy478NfOspjD4+AcvzfSvvq9Rd
lAqpdkzCoI87n9adwWEwnB5sDGon681Pu93JxrV7cB3GJ4cPH262B97FdXUz
Onk/c04Pfn9ee+ndGVfj+OnTlXdT3a2FB7fWaTKuHxxF099vTh6cx69W/Wqw
9/njxx0jh9hyzncrQlyvmCs5QQ3f5NJT7wyZoLqy+hchUz7Wtmof6tu1tY2t
vwjRIr/ahK8Ijz6uWH3bqcG/lb8k1p0x/LiynCWvLHe2WoeXo9vDy/nesHJ5
OJrY8138v2l/7fPwprs7v706iFtH509W/XJ6Z5wMw4pd94P++KDqXB/7e0Mj
5wzqMqYJNxB5xLGDN2OWsM5U4l7fJTUIMcoh0ywrjAEN8T6FojqPbHVPvrhn
ZW9g3dSur8vW0fHEDc7PPjR647X5od+3PzW+JHAkp4PZp8jzZ3NV27MymNvd
T92yd3S72dur7XZmnU17vxqf7p6tldc/Dc/L7tfnziSYj2bxYjBgj3u0nYkM
PlHL0cgTnjIb/wXOfEkV5np13eyAjXsQTgMHnfaib+sOiJowdo2sqrQD6omF
weOPO+tbzf3Pk4cPR7td6/f3vdb46veN4z13+tk9fxxvdNqT46vbw7VRd3pw
cWcA+mfjAWinvQdG6QUFVNhpR+1g7XnU2hxvn7U+jD9dDibB0cbXg0N7fzA9
ePb2xvHuxtnx6PDh4qj3fuN4/c7YrNX3b2fns7XL9ceL9eHh8fj09/3zD+d7
6812/ejT5elN8wdUyAr0Is0pigP84T3cGXRZVvpF2SHoIAULWkYde5Ge8VtF
twAVJtONtc0POcrd2Nyq6pRbh39IuYt0CxzhH6TckXW1Hjh7u0/98QVRbX++
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
eETMPpXIRwtoscGEEkH/F7OBffu8ugAA

-->

</rfc>
