<?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-06" 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-06"/>
    <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="August" day="04"/>
    <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 requests only, the following signature parameter <bcp14>MAY</bcp14> also be included:</t>
      <ul spacing="normal">
        <li>
          <t><tt>wimse-sign-response</tt> (<xref target="wimse-sign-response-param"/>)</t>
        </li>
      </ul>
      <t>For responses only, when response signing is required (<xref target="signing-the-response"/>), 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-sign-response-param">
        <name>The <tt>wimse-sign-response</tt> Signature Parameter</name>
        <t>This document defines the <tt>wimse-sign-response</tt> signature metadata parameter for requests.
It is a Boolean parameter (<xref section="3.3.6" sectionFormat="of" target="RFC8941"/>).
When present with the value true, the client requires the server to sign the HTTP response
to this request as specified in <xref target="signing-the-response"/>.</t>
        <t>This parameter is not mandatory. Moreover, the server <bcp14>MAY</bcp14> sign the response even if this parameter is missing from the request.</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>Response signing is required for a given exchange when either of the following is true:</t>
        <ul spacing="normal">
          <li>
            <t>The request's <tt>Signature-Input</tt> includes <tt>wimse-sign-response</tt> with the Boolean value true (<xref target="wimse-sign-response-param"/>).</t>
          </li>
          <li>
            <t>Local policy requires response signing for that exchange.</t>
          </li>
        </ul>
        <t>If the server is required to sign the response but cannot produce a signed response (for example, because the response is streamed or
exceptionally large), it <bcp14>MUST NOT</bcp14> return a successful unsigned response; it <bcp14>MUST</bcp14> return an error
as described in <xref target="error-conditions"/>.</t>
        <t>If response signing is required, 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>.</t>
        <t>If response signing is not required, the server <bcp14>MAY</bcp14> still sign the response. In that case, the client <bcp14>MUST</bcp14> still validate
the signed response and reject it if it fails to validate.</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>MUST</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>MUST</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>
        <t>If the client required a signed response via <tt>wimse-sign-response</tt> and the server cannot sign the response,
the server <bcp14>SHOULD</bcp14> return 400 (Bad Request) or 501 (Not Implemented), optionally with a
<xref target="RFC9457"/> problem details body indicating that a signed response cannot be provided.</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": "HQdG2ekHF4COyoHNYvCh2fMHhIaKvkrStjmyfndFyGI",
  "kid": "svc-a-key",
  "kty": "OKP",
  "x": "ZjlVT4COsCkQO9HIo6tDWAXayQ0MymoFUKJRIQ7S8R8"
}
]]></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=:zSK+kx5EnoZct9FZ6LMYzfx0mk32oI/hHpB7y4rgHxkRDcAA72\
yBW5xgzA03nKviXLjL7nphq840Uwznp6IKAw==:
Signature-Input: wimse=("@method" "@request-target" "workload-identi\
ty-token");created=1785155797;expires=1785156097;nonce="abcd1111";ta\
g="wimse-workload-to-workload";wimse-aud="https://svcb.example.com/g\
imme-ice-cream";wimse-sign-response
Workload-Identity-Token: eyJhbGciOiJFZERTQSIsImtpZCI6Imlzc3Vlci1rZXk\
iLCJ0eXAiOiJ3aXQrand0In0.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J\
2IjoiRWQyNTUxOSIsImtpZCI6InN2Yy1hLWtleSIsImt0eSI6Ik9LUCIsIngiOiJaamx\
WVDRDT3NDa1FPOUhJbzZ0RFdBWGF5UTBNeW1vRlVLSlJJUTdTOFI4In19LCJleHAiOjE\
3ODUxNTYwOTcsImlhdCI6MTc4NTE1NTc5NywiaXNzIjoiaHR0cHM6Ly9leGFtcGxlLmN\
vbS9pc3N1ZXIiLCJqdGkiOiJ3aXQtMTc4NTE1NTc5NzIxNjU0NTcxOSIsInN1YiI6Ind\
pbXNlOi8vZXhhbXBsZS5jb20vc3ZjQSJ9.BqJfcsbrYlS9GSQ7NpFBBVz4CeszShqleI\
yr2sSnd0Ic6l2HXX27giZcdAOGnXjtv_7h-9vV16GZbVcrQt6hCg

]]></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": "nn132WU82duEPtUbQtoQLqWoC1hKl8zeWavCDIR0VeI",
  "kid": "svc-b-key",
  "kty": "OKP",
  "x": "lBtLS8cNt_7pWsdi2xgx760lWpzEvqYe2DpSk9ELH2w"
}
]]></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=:57ZChndLoz5toS+/0RGeQJG53gLrZD/bBterOWnHF1vb0cdcee\
UOKH/t4A+/bvquC/0VCb5DYFRdFNz4CW8yBQ==:
Signature-Input: wimse=("@status" "workload-identity-token" "content\
-type" "content-digest" "@method";req "@request-target";req);created\
=1785155797;expires=1785156099;nonce="abcd2222";tag="wimse-workload-\
to-workload";wimse-req-nonce="abcd1111"
Workload-Identity-Token: eyJhbGciOiJFZERTQSIsImtpZCI6Imlzc3Vlci1rZXk\
iLCJ0eXAiOiJ3aXQrand0In0.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J\
2IjoiRWQyNTUxOSIsImtpZCI6InN2Yy1iLWtleSIsImt0eSI6Ik9LUCIsIngiOiJsQnR\
MUzhjTnRfN3BXc2RpMnhneDc2MGxXcHpFdnFZZTJEcFNrOUVMSDJ3In19LCJleHAiOjE\
3ODUxNTYwOTksImlhdCI6MTc4NTE1NTc5OSwiaXNzIjoiaHR0cHM6Ly9leGFtcGxlLmN\
vbS9pc3N1ZXIiLCJqdGkiOiJ3aXQtMTc4NTE1NTc5NzIxNjY3MDUxOCIsInN1YiI6Ind\
pbXNlOi8vZXhhbXBsZS5jb20vc3ZjQiJ9.HIAU2288ryXoym1M9fnKZqd0p2Vl7spOh-\
FY2jCFY-05H74-WPUFWrg5lH5f2rHl47TfxEGri3fmMP4zhYzeAw

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 validate the signature and identify the sender when response signing is required
(<xref target="signing-the-response"/>).</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> and <tt>wimse-sign-response</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 when response signing is required
(<xref target="signing-the-response"/>) and 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 required, 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 required (via <tt>wimse-sign-response</tt> or 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-sign-response</tt>, per <xref target="iana-wimse-sign-response-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-sign-response-param">
          <name><tt>wimse-sign-response</tt></name>
          <ul spacing="normal">
            <li>
              <t>Name: <tt>wimse-sign-response</tt></t>
            </li>
            <li>
              <t>Description: Boolean; when true on a request signature, the client requires the server to sign the corresponding HTTP response.</t>
            </li>
            <li>
              <t>Reference: RFC XXX, <xref target="wimse-sign-response-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="30" 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-11"/>
        </reference>
        <reference anchor="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </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 498?>

<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-06">
        <name>draft-ietf-wimse-http-signature-06</name>
        <ul spacing="normal">
          <li>
            <t>Add <tt>wimse-sign-response</tt> request signature parameter so clients can mandate a signed response; regenerate examples (#277).</t>
          </li>
        </ul>
      </section>
      <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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
fsfMt3oLgLlyTTau5GPf898BmsEWZON7AAA=

-->

</rfc>
