<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-http-signature-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="WIMSE Workload-to-Workload HTTP-Sig">WIMSE Workload-to-Workload Authentication with HTTP Signatures</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-http-signature-05"/>
    <author fullname="Joe Salowey">
      <organization>Palo Alto Networks</organization>
      <address>
        <email>joe@salowey.net</email>
      </address>
    </author>
    <author fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="20"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 40?>

<t>The WIMSE architecture defines authentication and authorization for software workloads
in a variety of runtime environments, from the most basic ones to complex
multi-service, multi-cloud, multi-tenant deployments.
This document defines one of the mechanisms to provide workload authentication,
using HTTP Signatures. While only applicable to HTTP traffic, the protocol provides end-to-end
protection of requests (and optionally, responses), even when service traffic is not end-to-end
encrypted, that is, when TLS proxies and load balancers are used.
Authentication is based on the Workload Identity Token (WIT).</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-http-signature/"/>.
      </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 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines authentication and authorization in the context of interaction between two workloads.
This is the core component of the WIMSE architecture <xref target="I-D.ietf-wimse-arch"/>.
This document focuses on HTTP-based services,
and the workload-to-workload call consists of a single HTTP request and its response.</t>
      <t>One option to protect such traffic is through Mutual TLS, and this usage is defined in <xref target="I-D.ietf-wimse-mutual-tls"/>.
Many deployments prefer application-layer approaches, whether for lack of CA infrastructure or because
inter-service communication consists of multiple separate TLS hops. This document defines one of the two WIMSE
approaches for application-layer protection.</t>
      <t>We define a profile of the HTTP Signatures protocol <xref target="RFC9421"/> to protect the service traffic.
Service authentication uses the Workload Identity Token (WIT) defined in <xref target="I-D.ietf-wimse-workload-creds"/>,
and the signature uses the private key associated with the WIT and thus proves possession of that key.</t>
      <t>As noted, the WIMSE working group is specifying two alternatives for application-layer protection, both using the newly introduced
Workload Identity Token <xref target="I-D.ietf-wimse-workload-creds"/>. The first alternative <xref target="I-D.ietf-wimse-wpt"/> is inspired by the OAuth DPoP specification.
The second is based on the HTTP Message Signatures RFC, and this is the one defined in this document.
<xref target="app-layer-comparison"/> includes a comparison of the two alternatives.</t>
      <section anchor="deployment-architecture-and-message-flow">
        <name>Deployment Architecture and Message Flow</name>
        <t>Refer to Sec. 1.2 of <xref target="I-D.ietf-wimse-workload-creds"/> for the deployment architecture which is common to all three
protection options, including the one described here.</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="http-sig-auth">
      <name>The Protocol: Authentication Based on HTTP Message Signatures</name>
      <t>This protocol uses the Workload Identity Token <xref target="I-D.ietf-wimse-workload-creds"/> and the private key associated with its public key,
to sign the request and optionally, the response.
Formally, this is 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>For requests only, the following signature parameter <bcp14>MUST</bcp14> also be included:</t>
      <ul spacing="normal">
        <li>
          <t><tt>wimse-aud</tt> (<xref target="wimse-aud-param"/>)</t>
        </li>
      </ul>
      <t>For responses only, when response signing is enabled, the following signature parameter <bcp14>MUST</bcp14> also be included:</t>
      <ul spacing="normal">
        <li>
          <t><tt>wimse-req-nonce</tt> (<xref target="wimse-req-nonce-param"/>)</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="I-D.ietf-wimse-workload-creds"/> 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>For clarity: the signature's lifetime (the <tt>expires</tt> signature parameter) is different and typically much shorter than the WIT's lifetime, denoted by its <tt>exp</tt> claim.</t>
      <t>Implementors need to be aware that the WIT is extracted from the message before the message signature is validated. Recipients of signed HTTP messages <bcp14>MUST</bcp14> validate the signature and content of the WIT before validating the HTTP message signature. They <bcp14>MUST</bcp14> ensure that the message is not processed further before it has been fully validated.</t>
      <section anchor="wimse-aud-param">
        <name>The <tt>wimse-aud</tt> Signature Parameter</name>
        <t><xref target="RFC9421"/> defines signature parameters for HTTP message signatures: metadata carried in the <tt>Signature-Input</tt> field
alongside the covered components. That metadata is covered by the signature as the <tt>@signature-params</tt> component value
(Section 2.3 of <xref target="RFC9421"/>), which is always the last line of the signature base.</t>
        <t>This document defines the <tt>wimse-aud</tt> signature metadata parameter for requests. Using a signature parameter carries the audience explicitly in <tt>Signature-Input</tt>.</t>
        <t>The default value for <tt>wimse-aud</tt> is the request's HTTP target URI (<xref section="7.1" sectionFormat="of" target="RFC9110"/>), without query or fragment components.
Senders, recipients, and intermediaries do not always derive the same string for that URI: normalization and rewriting differ by implementation and hop, so the audience that verification should use is a deployment-specific choice.
When the default string is not suitable for verification at the recipient, senders <bcp14>SHOULD</bcp14> set <tt>wimse-aud</tt> to an explicit audience value as appropriate for that deployment.</t>
        <t>The recipient <bcp14>MUST</bcp14> be able to verify that the audience refers to it. See "Workload Identifiers and Authentication Granularity" in <xref target="I-D.ietf-wimse-workload-creds"/> for more detail.</t>
      </section>
      <section anchor="wimse-req-nonce-param">
        <name>The <tt>wimse-req-nonce</tt> Signature Parameter</name>
        <t>When response signing is enabled, this document defines the <tt>wimse-req-nonce</tt> signature metadata parameter for responses.
This parameter binds requests to responses and prevents a malicious
proxy from replaying responses to the wrong client.</t>
        <t>The server <bcp14>MUST</bcp14> set <tt>wimse-req-nonce</tt> to the value of the <tt>nonce</tt> signature parameter from the <tt>Signature-Input</tt> of the request that triggered the response.</t>
      </section>
      <section anchor="signing-the-response">
        <name>Signing the Response</name>
        <t>Protecting the response by signing it with the server's WIT is <bcp14>RECOMMENDED</bcp14> but optional. In particular, if the response
may be exceptionally large or is expected to be streamed, signing it may not be practical.</t>
        <t>In practice, we expect response signing to be enabled by local policy. If response signing is enabled for a deployment,
the client (recipient of the response) <bcp14>MUST</bcp14> check that the signature exists and validate it.
The response <bcp14>MUST</bcp14> be rejected if a signature is absent or fails to validate.
The client <bcp14>MUST</bcp14> verify that <tt>wimse-req-nonce</tt> matches the <tt>nonce</tt> it included in its request's <tt>Signature-Input</tt>.
This binds the signed response to the specific request that triggered it.</t>
        <t>As described in <xref section="5" sectionFormat="of" target="RFC9421"/>, either client or server <bcp14>MAY</bcp14> send an
<tt>Accept-Signature</tt> header,
but is not required to do so. The <tt>Accept-Signature</tt> header indicates a
preference for signed messages but does not mandate that responses be signed.
When a client sends <tt>Accept-Signature</tt> in a request, it <bcp14>SHOULD</bcp14> list the
response components it wishes to have signed (including at least those specified above for signed
responses). When a server sends <tt>Accept-Signature</tt> in a response, it <bcp14>SHOULD</bcp14>
list the request components it wishes to have signed in subsequent requests (minimally those
specified above for signed requests).</t>
      </section>
      <section anchor="error-conditions">
        <name>Error Conditions</name>
        <t>Errors may occur during the processing of the message signature. 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. An HTTP status code such as 400 (Bad Request) is appropriate. The response could
include more details as per <xref target="RFC9457"/>, such as an indicator that the wrong key material or algorithm was used.  The use of HTTP
status code 401 is <bcp14>NOT RECOMMENDED</bcp14> for this purpose because it requires a WWW-Authenticate with acceptable HTTP auth mechanisms in
the error response and an associated Authorization header in the subsequent request. The use of these headers for the WIT is not compatible
with this specification.</t>
      </section>
      <section anchor="example-requests-and-responses">
        <name>Example Requests and Responses</name>
        <t>Following is a non-normative example of a signed request and a signed response.</t>
        <t>The caller uses this keypair:</t>
        <figure>
          <name>Caller Private Key</name>
          <sourcecode type="jwk"><![CDATA[
{
  "alg": "EdDSA",
  "crv": "Ed25519",
  "d": "GcIoN8JLQTLoNq6y7-KGlwXc632TU3xPpLlUGWLThPM",
  "kid": "svc-a-key",
  "kty": "OKP",
  "x": "ODpx5K2eWshinEJJd-Qpq3z_Fp5izA1YhiNdecV0ajQ"
}
]]></sourcecode>
        </figure>
        <t>The caller uses its keypair and generates the following HTTP request:</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: svcb.example.com
Signature: wimse=:WuXpe5Hr1+OZvpDP0MPwZn/MK1euq1EJcenos9xC7OXDfkYhkF\
yxZdjQgwkDrJdYKOHoO99ULjHmCzQxPof7Dw==:
Signature-Input: wimse=("@method" "@request-target" "workload-identi\
ty-token");created=1784377485;expires=1784377785;nonce="abcd1111";ta\
g="wimse-workload-to-workload";wimse-aud="https://svcb.example.com/g\
imme-ice-cream"
Workload-Identity-Token: eyJhbGciOiJFZERTQSIsImtpZCI6Imlzc3Vlci1rZXk\
iLCJ0eXAiOiJ3aXQrand0In0.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J\
2IjoiRWQyNTUxOSIsImtpZCI6InN2Yy1hLWtleSIsImt0eSI6Ik9LUCIsIngiOiJPRHB\
4NUsyZVdzaGluRUpKZC1RcHEzel9GcDVpekExWWhpTmRlY1YwYWpRIn19LCJleHAiOjE\
3ODQzNzc3ODUsImlhdCI6MTc4NDM3NzQ4NSwiaXNzIjoiaHR0cHM6Ly9leGFtcGxlLmN\
vbS9pc3N1ZXIiLCJqdGkiOiJ3aXQtMTc4NDM3NzQ4NTc1MzQyMjEwNCIsInN1YiI6Ind\
pbXNlOi8vZXhhbXBsZS5jb20vc3ZjQSJ9.OZj71_u_jpqF5tnwRdDSiHrSGcmmNMqss_\
AvgVIuasbaMQV8pgv3otLC8V6bNMGMXoCPCNK3XVBnfeNsICr5DQ

]]></sourcecode>
        </figure>
        <t>Assuming that the workload being called has the following keypair:</t>
        <figure>
          <name>Callee Private Key</name>
          <sourcecode type="jwk"><![CDATA[
{
  "alg": "EdDSA",
  "crv": "Ed25519",
  "d": "11tGJZXSalE2YRA9-9bLP3fbIgfd17FDW9b4Xrwcw1s",
  "kid": "svc-b-key",
  "kty": "OKP",
  "x": "V5Ycp6m1EjmRUAzdaqTwOkmyv71_yI5QMlpJZt5Zgog"
}
]]></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=:UHKweBl9cpjdVqgTB65El8SexXlJYGG+XIslAYqC1mY\
=:
Content-Type: text/plain
Signature: wimse=:ZIY1RzouX+83r+DwR7HCfFgTgH6j0hm8Ewlxg3rH/wcrQUr6Ek\
vb1C5uvMOEapxTk15VgcjXTiaWy6OIXWd/Dw==:
Signature-Input: wimse=("@status" "workload-identity-token" "content\
-type" "content-digest" "@method";req "@request-target";req);created\
=1784377485;expires=1784377787;nonce="abcd2222";tag="wimse-workload-\
to-workload";wimse-req-nonce="abcd1111"
Workload-Identity-Token: eyJhbGciOiJFZERTQSIsImtpZCI6Imlzc3Vlci1rZXk\
iLCJ0eXAiOiJ3aXQrand0In0.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J\
2IjoiRWQyNTUxOSIsImtpZCI6InN2Yy1iLWtleSIsImt0eSI6Ik9LUCIsIngiOiJWNVl\
jcDZtMUVqbVJVQXpkYXFUd09rbXl2NzFfeUk1UU1scEpadDVaZ29nIn19LCJleHAiOjE\
3ODQzNzc3ODcsImlhdCI6MTc4NDM3NzQ4NywiaXNzIjoiaHR0cHM6Ly9leGFtcGxlLmN\
vbS9pc3N1ZXIiLCJqdGkiOiJ3aXQtMTc4NDM3NzQ4NTc1MzU0NjEwNCIsInN1YiI6Ind\
pbXNlOi8vZXhhbXBsZS5jb20vc3ZjQiJ9.OxWtp89SLrSM1mEP5p1WQ7sWFUh9zSbxNu\
Mgt3QearHFq-uUE7pr6tAxXYpaSUjTPKUDBzHPqySUbTfmTI7SDw

No ice cream today.

]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t><cref>Note to RFC Editor: please remove this section, as well as the reference to RFC 7942, before publication.</cref></t>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>
      <t>According to RFC 7942, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.  It is up to the individual working groups to use this information as they see fit".</t>
      <section anchor="cofide">
        <name>Cofide</name>
        <ul spacing="normal">
          <li>
            <t>Organization: Cofide</t>
          </li>
          <li>
            <t>Implementation: <eref target="https://github.com/cofide/wimse-s2s-httpsig-poc">https://github.com/cofide/wimse-s2s-httpsig-poc</eref></t>
          </li>
          <li>
            <t>Maturity:
            </t>
            <ul spacing="normal">
              <li>
                <t>WIT + HTTP Message Signatures: proof-of-concept</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Coverage: WIT, HTTP Message Signatures</t>
          </li>
          <li>
            <t>License: Apache 2.0</t>
          </li>
          <li>
            <t>Contact: jason@cofide.io</t>
          </li>
          <li>
            <t>Last updated: 13-Nov-2025</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section includes security considerations that are specific to the HTTP Signature protocol defined here. Refer to
<xref target="I-D.ietf-wimse-workload-creds"/> for more generic security considerations associated with the workload identity
and its WIT representation.</t>
      <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="I-D.ietf-wimse-workload-creds"/>. 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-layer options, and neither is 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.</t>
        <t>The HTTP Signature profile presented here binds the proof of possession to the critical parts of the HTTP request (and potentially
response), including the Request URI and the message body. This
eliminates most of the risk associated with active attackers on a middlebox.</t>
        <t>In addition, the following mitigations should be used:</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. Hostname validation according
to Section 6.3 of <xref target="RFC9525"/> <bcp14>MUST</bcp14> be performed by the client.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Signature Lifespan</t>
          </li>
        </ul>
        <t>The signature lifespan <bcp14>MUST</bcp14> be limited by using a tight <tt>expires</tt> value, taking into account potential clock skew and
processing latency, but usually within minutes of the message sending time. Signatures received outside their validity time <bcp14>MUST</bcp14> be rejected.</t>
        <ul spacing="normal">
          <li>
            <t>Replay Protection</t>
          </li>
        </ul>
        <t>A signed message includes the <tt>nonce</tt> signature parameter that <bcp14>MUST</bcp14> uniquely identify it, within the scope of a particular sender.
This parameter <bcp14>SHOULD</bcp14> be used by the receiver to perform basic replay protection against messages it has already seen.
Depending upon the design of the system it may be difficult to synchronize the replay cache across all message 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>
      </section>
      <section anchor="middleboxes">
        <name>Middle Boxes</name>
        <t>In some deployments the Workload Identity Token and proof of possession
(signature) may pass through multiple systems. The communication between the
systems is over TLS, but the WIT and signature are available in the clear at each
intermediary.  While the intermediary cannot modify the token or the
information within the signature they can attempt to capture and replay the message or modify
unsigned information, such as proprietary HTTP headers that may remain unsigned.</t>
        <t>Mitigations listed in the protocol provide a reasonable level of security in these situations, in particular
if responses are signed in addition to requests.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>WITs and the signatures may contain private information such as user names or other identities. Care must be taken to prevent disclosure of this information. The use of TLS helps protect the privacy of WITs and proofs of possession.</t>
        <t>WITs 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 signatures can be used to track a user.</t>
      </section>
    </section>
    <section anchor="security-goals">
      <name>Security Goals</name>
      <t>This section defines semiformal security goals for this protocol, when used in conjunction with the WIT credential. Our aim
is to inform developers and for these goals to eventually evolve into formal verification of the protocol.</t>
      <section anchor="prerequisites">
        <name>Prerequisites</name>
        <t>The following are out of scope of the protocol and their security is assumed.</t>
        <ul spacing="normal">
          <li>
            <t>There exists a WIT Issuer which is trusted to issue credentials honestly.</t>
          </li>
          <li>
            <t>Workloads have a way to authenticate themselves to the Issuer and be provisioned with a valid WIT, associated
with their WIMSE identity.</t>
          </li>
          <li>
            <t>All workloads are provisioned with trust anchors that allow them to validate incoming WITs.</t>
          </li>
          <li>
            <t>The entire authorization subsystem is out of scope and trusted. This can potentially include
provisioning and enforcement of an authorization policy, issuance of transaction tokens
and workload attestation.</t>
          </li>
          <li>
            <t>All workload-to-workload traffic is TLS-protected. However TLS may be terminated on one or more middleboxes
and the TLS endpoint identity (or identities) is not associated with a WIMSE identity.</t>
          </li>
          <li>
            <t>As a result, all workload-to-workload traffic is confidential and (assuming honest participants) is only available to sender,
receiver, and any TLS-terminating middleboxes that process the traffic.</t>
          </li>
        </ul>
      </section>
      <section anchor="authentication">
        <name>Authentication</name>
        <ul spacing="normal">
          <li>
            <t>A workload receiving a request can validate that it is signed correctly, and can identify the sender.</t>
          </li>
          <li>
            <t>A workload receiving a response can similarly authenticate its sender, provided that optional response signing has
been activated and likewise, the recipient validates this signature.</t>
          </li>
          <li>
            <t>The above implies that a stolen WIT cannot be used by an entity other than its owner.</t>
          </li>
        </ul>
      </section>
      <section anchor="integrity">
        <name>Integrity</name>
        <ul spacing="normal">
          <li>
            <t>No requests can be modified without detection by the recipient. Integrity of
all present HTTP headers specified in this document is protected, as well as
the derived components listed in <xref target="http-sig-auth"/>, the signature parameters
(including <tt>wimse-aud</tt> on requests and <tt>wimse-req-nonce</tt> on responses) as covered by <tt>@signature-params</tt> in <xref target="RFC9421"/>, and
the message body (when present).</t>
          </li>
          <li>
            <t>No responses can be modified without detection, provided that optional response signing has been activated and
that the recipient validates incoming responses.</t>
          </li>
          <li>
            <t>Note: Headers not specified in this document may remain unsigned and could
potentially be modified or deleted by intermediaries without detection.</t>
          </li>
        </ul>
      </section>
      <section anchor="replay-and-deletion">
        <name>Replay and Deletion</name>
        <ul spacing="normal">
          <li>
            <t>Replay protection is not strictly mandated because of implementation
considerations (e.g., distributed system challenges with synchronizing replay
caches across validators). Therefore it is not claimed as
a goal, though implementations <bcp14>SHOULD</bcp14> attempt to detect replays where feasible.
We note that since most of the message is signed, replay attacks are only possible in a
context where the request would be accepted as valid, and this mitigates the risk to some extent.</t>
          </li>
          <li>
            <t>When response signing is enabled, validating <tt>wimse-req-nonce</tt> mitigates replay of a signed response to a client other than the one that sent the triggering request.</t>
          </li>
          <li>
            <t>Unless response signing is mandated by local policy, complete deletion of a request/response pair is possible without detection.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="http-signature-metadata-parameters-registration">
        <name>HTTP Signature Metadata Parameters Registration</name>
        <t>IANA is requested to register the following entries in the "HTTP Signature Metadata Parameters" registry <xref target="IANA.HTTP.MESSAGE.SIGNATURE"/>, per the registration template in Section 6.3.1 of <xref target="RFC9421"/>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>wimse-aud</tt>, per <xref target="iana-wimse-aud-param"/>.</t>
          </li>
          <li>
            <t><tt>wimse-req-nonce</tt>, per <xref target="iana-wimse-req-nonce-param"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wimse-aud-param">
          <name><tt>wimse-aud</tt></name>
          <ul spacing="normal">
            <li>
              <t>Name: <tt>wimse-aud</tt></t>
            </li>
            <li>
              <t>Description: the WIMSE message audience. Request signatures only; binds the HTTP message signature to the intended recipient.</t>
            </li>
            <li>
              <t>Reference: RFC XXX, <xref target="wimse-aud-param"/>.</t>
            </li>
          </ul>
        </section>
        <section anchor="iana-wimse-req-nonce-param">
          <name><tt>wimse-req-nonce</tt></name>
          <ul spacing="normal">
            <li>
              <t>Name: <tt>wimse-req-nonce</tt></t>
            </li>
            <li>
              <t>Description: on response signatures, the <tt>nonce</tt> value from the triggering request's <tt>Signature-Input</tt>; binds the response to that request.</t>
            </li>
            <li>
              <t>Reference: RFC XXX, <xref target="wimse-req-nonce-param"/>.</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="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="I-D.ietf-wimse-workload-creds">
          <front>
            <title>WIMSE Workload Credentials</title>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="2" month="July" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones up to complex multi-service, multi-cloud, multi-
   tenant deployments.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-workload-creds-02"/>
        </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="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="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <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.MESSAGE.SIGNATURE" target="https://www.iana.org/assignments/http-message-signature/http-message-signature.xhtml#signature-metadata-parameters">
          <front>
            <title>HTTP Message Signature</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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>Palo Alto Networks</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 the Bundeswehr Munich</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <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
   software executing for a specific purpose, potentially comprising one
   or more running instances.  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-08"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-mutual-tls">
          <front>
            <title>Workload Authentication Using Mutual TLS</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones to complex multi-service, multi-cloud, multi-tenant
   deployments.  This document profiles a workload authentication based
   on X.509 workload identity certificates using mutual TLS (mTLS).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-mutual-tls-02"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-wpt">
          <front>
            <title>WIMSE Workload Proof Token</title>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from basic
   deployments to complex multi-service, multi-cloud, multi-tenant
   systems.  This document specifies the Workload Proof Token (WPT), a
   mechanism for workloads to prove possession of the private key
   associated with a Workload Identity Token (WIT).  The WPT is a signed
   JWT that binds the workload's authentication to a specific HTTP
   request, providing application-level proof of possession for
   workload-to-workload communication.  This specification is designed
   to work alongside the WIT credential format defined in draft-ietf-
   wimse-workload-creds and can be combined with other WIMSE protocols
   in multi-hop call chains.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-wpt-01"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-transaction-tokens">
          <front>
            <title>Transaction Tokens</title>
            <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale">
              <organization>CrowdStrike</organization>
            </author>
            <author fullname="George Fletcher" initials="G." surname="Fletcher">
              <organization>Practical Identity LLC</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) are designed to maintain and
   propagate user identity, workload identity and authorization context
   throughout the Call Chain within a trusted domain during the
   processing of external requests (e.g. such as API calls) or requests
   initiated internally within the Trust Domain.  Txn-Tokens ensure that
   this context is preserved throughout the Call Chain thereby enhancing
   security and consistency in complex, multi-service architectures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-09"/>
        </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>
      </references>
    </references>
    <?line 463?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-ietf-wimse-http-signature-05">
        <name>draft-ietf-wimse-http-signature-05</name>
        <ul spacing="normal">
          <li>
            <t>Regenerate non-normative request/response examples so the signed response includes <tt>wimse-req-nonce</tt> matching the request <tt>nonce</tt> (#274).</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-http-signature-04">
        <name>draft-ietf-wimse-http-signature-04</name>
        <ul spacing="normal">
          <li>
            <t>On signed responses, require <tt>wimse-req-nonce</tt> (request binding); register with IANA. Non-normative response example not updated accordingly; the <tt>Signature</tt> value was not regenerated (see issue tracker).</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-http-signature-03">
        <name>draft-ietf-wimse-http-signature-03</name>
        <ul spacing="normal">
          <li>
            <t>Replace <tt>Wimse-Audience</tt> HTTP header with the <tt>wimse-aud</tt> signature metadata parameter (<xref target="RFC9421"/>); register with IANA (HTTP Signature Metadata Parameters). Non-normative request example updated accordingly; the <tt>Signature</tt> value was not regenerated (see issue tracker).</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-http-signature-02">
        <name>draft-ietf-wimse-http-signature-02</name>
        <ul spacing="normal">
          <li>
            <t>Add new <tt>Wimse-Audience</tt> HTTP header (superseded by <tt>wimse-aud</tt> in -03).</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-http-signature-01">
        <name>draft-ietf-wimse-http-signature-01</name>
        <ul spacing="normal">
          <li>
            <t>Clarified response signing.</t>
          </li>
          <li>
            <t>Clarified signature vs. token lifetime.</t>
          </li>
          <li>
            <t>Added security goals.</t>
          </li>
          <li>
            <t>Added an Implementation Status section.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-http-signature-00">
        <name>draft-ietf-wimse-http-signature-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial version, extracted from the -07 draft with minimal edits.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-07">
        <name>draft-ietf-wimse-s2s-protocol-07</name>
        <ul spacing="normal">
          <li>
            <t>Rework the WPT's <tt>oth</tt> claim.</t>
          </li>
          <li>
            <t>Update the media types.</t>
          </li>
          <li>
            <t>Discuss extensibility of WIT and WPT.</t>
          </li>
          <li>
            <t>Clarify error handling, specifically why not HTTP 401.</t>
          </li>
          <li>
            <t>Correct the code examples.</t>
          </li>
          <li>
            <t>Add registration request content for a <tt>wimse</tt> URI scheme.</t>
          </li>
          <li>
            <t>New section on key management.</t>
          </li>
          <li>
            <t>Use of the <tt>Accept-Signature</tt> header.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-06">
        <name>draft-ietf-wimse-s2s-protocol-06</name>
        <ul spacing="normal">
          <li>
            <t>Explicit definition of the Workload Identity Certificate.</t>
          </li>
          <li>
            <t>Definition of the validation of workload identifiers as part of workload authentication. Still work in progress.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-05">
        <name>draft-ietf-wimse-s2s-protocol-05</name>
        <ul spacing="normal">
          <li>
            <t>Removed the entire Workload Identity section which is now covered in the Architecture document.</t>
          </li>
          <li>
            <t>Content-Digest is mandatory with HTTP-Sig.</t>
          </li>
          <li>
            <t>Some wording on extending the protocol beyond HTTP.</t>
          </li>
          <li>
            <t>IANA considerations.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-04">
        <name>draft-ietf-wimse-s2s-protocol-04</name>
        <ul spacing="normal">
          <li>
            <t>Require <tt>cnf.jwk.alg</tt> in WIT which restricts signature algorithm of WPT or HTTP-Sig.</t>
          </li>
          <li>
            <t>Replay protection as a <bcp14>SHOULD</bcp14> for both WPT and HTTP-Sig.</t>
          </li>
          <li>
            <t>Consolidate terminology with the Architecture draft.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-03">
        <name>draft-ietf-wimse-s2s-protocol-03</name>
        <ul spacing="normal">
          <li>
            <t>Consistently use "workload".</t>
          </li>
          <li>
            <t>Implement comments from the SPIFFE community.</t>
          </li>
          <li>
            <t>Make <tt>iss</tt> claim in WIT optional and add wording about its relation to key distribution.</t>
          </li>
          <li>
            <t>Remove <tt>iss</tt> claim from WPT.</t>
          </li>
          <li>
            <t>Make <tt>jti</tt> claim in WIT optional.</t>
          </li>
          <li>
            <t>Error handling for the application-level methods.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-02">
        <name>draft-ietf-wimse-s2s-protocol-02</name>
        <ul spacing="normal">
          <li>
            <t>Coexistence with bearer tokens.</t>
          </li>
          <li>
            <t>Improve the architecture diagram.</t>
          </li>
          <li>
            <t>Some more ABNF.</t>
          </li>
          <li>
            <t>Clarified identifiers and URIs.</t>
          </li>
          <li>
            <t>Moved an author to acknowledgments.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-01">
        <name>draft-ietf-wimse-s2s-protocol-01</name>
        <ul spacing="normal">
          <li>
            <t>Addressed multiple comments from Pieter.</t>
          </li>
          <li>
            <t>Clarified WIMSE identity concepts, specifically "trust domain"
and "workload identifier".</t>
          </li>
          <li>
            <t>Much more detail around mTLS, including some normative language.</t>
          </li>
          <li>
            <t>WIT (the identity token) is now included in the WPT proof of possession.</t>
          </li>
          <li>
            <t>Added a section comparing the DPoP-inspired app-level security option to
the Message Signature-based alternative.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-00">
        <name>draft-ietf-wimse-s2s-protocol-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial WG draft, an exact copy of draft-sheffer-wimse-s2s-protocol-00</t>
          </li>
          <li>
            <t>Added this document history section</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="app-layer-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="I-D.ietf-wimse-wpt"/> 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 numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Pieter Kasselman for his detailed comments,
as well as Jason Costello, Maartje Eyskens and Radosław Piliszek for implementing this draft and sharing their learnings.</t>
      <t>We thank Daniel Feldman for his contributions to earlier versions of this document. We also thank Arndt Schwenkschuster and Brian Campbell who coauthored
the grand unified WIMSE Workload to Workload protocol draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
3/N/AYSAycSncwAA

-->

</rfc>
