<?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-05" 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-05"/>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author fullname="Joe Salowey">
      <organization>Venafi</organization>
      <address>
        <email>joe.salowey@gmail.com</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="June" day="19"/>
    <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>
    <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.</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 of the token contains 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.</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.</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>
      <t>In this solution, the workload identity may be carried within 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 may contain SubjectAltName extensions of other types.</t>
      <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.</t>
      </section>
      <section anchor="client-name">
        <name>Client Authorization Using the Workload Identity</name>
        <t>The server application retrieves the workload identifier from the client certificate subjectAltName, 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.</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="mutual-tls"/> <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 843?>

<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-05">
        <name>draft-ietf-wimse-s2s-protocol-05</name>
        <ul spacing="normal">
          <li>
            <t>Removed the entire Workload Identity section which is now covered in the Architecture document.</t>
          </li>
          <li>
            <t>Content-Digest is mandatory with HTTP-Sig.</t>
          </li>
          <li>
            <t>Some wording on extending the protocol beyond HTTP.</t>
          </li>
          <li>
            <t>IANA considerations.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-04">
        <name>draft-ietf-wimse-s2s-protocol-04</name>
        <ul spacing="normal">
          <li>
            <t>Require <tt>cnf.jwk.alg</tt> in WIT which restricts signature algorithm of WPT or HTTP-Sig.</t>
          </li>
          <li>
            <t>Replay protection as a <bcp14>SHOULD</bcp14> for both WPT and HTTP-Sig.</t>
          </li>
          <li>
            <t>Consolidate terminology with the Architecture draft.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-03">
        <name>draft-ietf-wimse-s2s-protocol-03</name>
        <ul spacing="normal">
          <li>
            <t>Consistently use "workload".</t>
          </li>
          <li>
            <t>Implement comments from the SPIFFE community.</t>
          </li>
          <li>
            <t>Make <tt>iss</tt> claim in WIT optional and add wording about its relation to key distribution.</t>
          </li>
          <li>
            <t>Remove <tt>iss</tt> claim from WPT.</t>
          </li>
          <li>
            <t>Make <tt>jti</tt> claim in WIT optional.</t>
          </li>
          <li>
            <t>Error handling for the application level methods.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-02">
        <name>draft-ietf-wimse-s2s-protocol-02</name>
        <ul spacing="normal">
          <li>
            <t>Coexistence with bearer tokens.</t>
          </li>
          <li>
            <t>Improve the architecture diagram.</t>
          </li>
          <li>
            <t>Some more ABNF.</t>
          </li>
          <li>
            <t>Clarified identifiers and URIs.</t>
          </li>
          <li>
            <t>Moved an author to acknowledgments.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-01">
        <name>draft-ietf-wimse-s2s-protocol-01</name>
        <ul spacing="normal">
          <li>
            <t>Addressed multiple comments from Pieter.</t>
          </li>
          <li>
            <t>Clarified WIMSE identity concepts, specifically "trust domain"
and "workload identifier".</t>
          </li>
          <li>
            <t>Much more detail around mTLS, including some normative language.</t>
          </li>
          <li>
            <t>WIT (the identity token) is now included in the WPT proof of possession.</t>
          </li>
          <li>
            <t>Added a section comparing the DPoP-inspired app-level security option to
the Message Signature-based alternative.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-00">
        <name>draft-ietf-wimse-s2s-protocol-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial WG draft, an exact copy of draft-sheffer-wimse-s2s-protocol-00</t>
          </li>
          <li>
            <t>Added this document history section</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Pieter Kasselman for his detailed comments.</t>
      <t>We thank Daniel Feldman for his contributions to earlier versions of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
