<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-http-signature-08" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <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-08"/>
    <author fullname="Joe Salowey">
      <organization>Palo Alto Networks</organization>
      <address>
        <email>joe@salowey.net</email>
      </address>
    </author>
    <author fullname="Yaron Sheffer">
      <organization>Independent</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="October" 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 (mTLS), and this usage is defined in <xref target="I-D.ietf-wimse-mutual-tls"/>.
Many deployments prefer application-layer approaches, whether for lack of Certification Authority (CA) infrastructure or because
inter-service communication consists of multiple TLS hops. This document defines one such WIMSE
approach 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>WIMSE is specifying two approaches 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 <xref target="RFC9449"/>.
The second is based on the HTTP Message Signatures RFC <xref target="RFC9421"/>, and it is defined in this document.
<xref target="app-layer-comparison"/> includes a comparison of the two approaches.</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 both application-level approaches, as well as the transport-level one.</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 HTTP 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>@path</tt></t>
        </li>
        <li>
          <t><tt>@query</tt></t>
        </li>
      </ul>
      <t>This profile covers <tt>@path</tt> and <tt>@query</tt> separately rather than <tt>@request-target</tt>,
following <xref section="2.2.5" sectionFormat="of" target="RFC9421"/>.
<tt>@query</tt> is included even when the request has no query component; in that case its value is <tt>?</tt> (<xref section="2.2.7" sectionFormat="of" target="RFC9421"/>).
The <tt>@authority</tt> derived component is not included: TLS-terminating proxies and load balancers commonly rewrite the authority (see <xref target="I-D.ietf-wimse-arch"/> and <xref target="middleboxes"/>), so signing it would break those deployments. Recipient binding is carried instead by the mandatory <tt>wimse-aud</tt> signature parameter (<xref target="wimse-aud-param"/>).</t>
      <t>Exception for CONNECT (<xref section="9.3.6" sectionFormat="of" target="RFC9110"/>): the request target is in authority-form (<tt>host:port</tt>), so <tt>@path</tt> and <tt>@query</tt> are not meaningful.
For a CONNECT request, senders <bcp14>MUST</bcp14> cover <tt>@method</tt> and <tt>@authority</tt> instead of <tt>@path</tt> and <tt>@query</tt>, and <bcp14>MUST NOT</bcp14> cover <tt>@path</tt> or <tt>@query</tt>.
The <tt>@authority</tt> value is the host and port of the CONNECT target (<xref section="2.2.3" sectionFormat="of" target="RFC9421"/>).
This exception is specific to CONNECT; this profile otherwise continues to omit <tt>@authority</tt>.</t>
      <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>@path;req</tt></t>
        </li>
        <li>
          <t><tt>@query;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>When the signed response corresponds to a CONNECT request, senders <bcp14>MUST</bcp14> cover <tt>@method;req</tt> and <tt>@authority;req</tt> instead of <tt>@path;req</tt> and <tt>@query;req</tt>, and <bcp14>MUST NOT</bcp14> cover <tt>@path;req</tt> or <tt>@query;req</tt>.</t>
      <t>To protect the integrity of the message body, if the request or response includes a body, the sender <bcp14>MUST</bcp14> include
(and the receiver <bcp14>MUST</bcp14> verify) a <tt>Content-Digest</tt> header as defined in <xref target="RFC9530"/>.
This implies the receiver <bcp14>MUST</bcp14> compute the <tt>Content-Digest</tt> value for the message content received
and compare it with the <tt>Content-Digest</tt> value provided in the message.</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. This profile is for individual request/response exchanges; mechanisms for long-lived batch-style workloads are out of scope.</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, 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.
The WIMSE signature is the one whose <tt>tag</tt> parameter is <tt>wimse-workload-to-workload</tt> (<xref section="7.2.7" sectionFormat="of" target="RFC9421"/>). If no signature has that <tt>tag</tt> value, the message does not carry a WIMSE HTTP signature. If more than one signature has that <tt>tag</tt> value, the recipient <bcp14>MUST</bcp14> reject the message. When more than one signature is present, recipients <bcp14>MUST</bcp14> use that <tt>tag</tt> to find the WIMSE signature; they <bcp14>MUST NOT</bcp14> choose by label (<xref section="7.2.5" sectionFormat="of" target="RFC9421"/>).</t>
      <t>Senders <bcp14>MUST</bcp14> generate each <tt>nonce</tt> at random with sufficient length that the probability of collision is negligible among all nonces a recipient might observe within the lifetime of a signature.
To that end, senders <bcp14>MUST</bcp14> use a cryptographically secure random number generator,
and the nonce <bcp14>MUST</bcp14> contain at least 64 bits of entropy; 96 bits or more is <bcp14>RECOMMENDED</bcp14>.
Members of a sender cluster therefore need not coordinate nonce generation.</t>
      <t>Recipients <bcp14>MAY</bcp14> maintain a replay cache and <bcp14>SHOULD</bcp14> reject a message (request or response) whose <tt>nonce</tt> they have already seen. What nonces are remembered, and for how long, is a local policy matter; this document does not require replay caches to be shared across validators. Without such sharing, replay to a different cluster member can still succeed.</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.
Recipients <bcp14>MUST</bcp14> reject signatures that fall outside their validity time window.</t>
      <t>Implementers 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 WIT as specified in <xref section="5.1.4" sectionFormat="of" target="I-D.ietf-wimse-workload-creds"/> 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>
      <t>The WIT and the HTTP message signature <bcp14>MUST</bcp14> be sent over a server-authenticated TLS connection
unless another channel provides confidentiality and server authentication comparable to TLS.
When TLS is used, the client <bcp14>MUST</bcp14> perform hostname validation according to <xref section="6.3" sectionFormat="of" target="RFC9525"/>,
and TLS deployments <bcp14>SHOULD</bcp14> follow the recommendations in <xref target="BCP195"/>.</t>
      <section anchor="sig-algs">
        <name>Signature Algorithms</name>
        <t>The HTTP message signature algorithm is determined by the <tt>alg</tt> member of the <tt>cnf.jwk</tt> object in the WIT
("The Workload Identity Token" in <xref target="I-D.ietf-wimse-workload-creds"/>).
This profile does not define a separate algorithm baseline; general-purpose implementations follow the
algorithm requirements in that document, including support for <tt>ES256</tt>.
The <tt>alg</tt> signature parameter <bcp14>MUST NOT</bcp14> be used, as specified above.</t>
        <t>Recipients <bcp14>MUST</bcp14> verify the HTTP message signature using the algorithm identified by <tt>cnf.jwk.alg</tt>
and <bcp14>MUST</bcp14> reject the message if that algorithm is not acceptable under local policy for the peer's trust domain.
See also <xref section="7.3.6" sectionFormat="of" target="RFC9421"/> on key and algorithm specification downgrades.</t>
      </section>
      <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>The <tt>wimse-aud</tt> signature metadata parameter is a String parameter for requests.
Using a signature parameter carries the audience explicitly in <tt>Signature-Input</tt>, so the value is protected by the signature and is not affected by hop-by-hop rewriting of the request URI.</t>
        <t>The sender <bcp14>MUST</bcp14> set <tt>wimse-aud</tt> to an audience value that identifies the intended recipient of the request.
By default, the sender uses the HTTP target URI (<xref section="7.1" sectionFormat="of" target="RFC9110"/>) of the request, without query or fragment components, as known to the sender.
When intermediaries rewrite the request URI, or when that string would not match what the recipient expects, the sender uses a deployment-specific audience value that the recipient can recognize.
The audience identifies the intended recipient of the proof; it is distinct from the sender's Workload Identifier in the WIT <tt>sub</tt> claim.</t>
        <t>The recipient <bcp14>MUST</bcp14> verify that <tt>wimse-aud</tt> matches one of the audience values in its trusted configuration using the Simple String Comparison method of <xref section="6.2.1" sectionFormat="of" target="RFC3986"/>.
Strings that differ only by URI normalization (for example, a trailing slash or an explicit default port) do not match under that method; if such variants are acceptable, each should be included in the configuration.
The recipient <bcp14>MUST NOT</bcp14> derive an acceptable audience from untrusted request fields such as <tt>Host</tt>.
A sender that relies on the default target-URI value is responsible for producing a string that matches one of the recipient's configured values under that comparison.
See "Workload Identifiers and Authentication Granularity" in <xref target="I-D.ietf-wimse-workload-creds"/>.</t>
      </section>
      <section anchor="wimse-sign-response-param">
        <name>The <tt>wimse-sign-response</tt> Signature Parameter</name>
        <t>The <tt>wimse-sign-response</tt> signature metadata parameter is a Boolean parameter for requests.
When present with the value true, the client requires a signed HTTP response:
the server <bcp14>MUST</bcp14> sign the response as specified in <xref target="signing-the-response"/>,
or return an error if it cannot (<xref target="error-conditions"/>).
When the parameter is omitted, or present with the value false, the client does not require a signed response via this parameter.</t>
        <t>If the client is configured to require a signed response, it <bcp14>MUST</bcp14> include <tt>wimse-sign-response</tt> with the Boolean value true in the request's <tt>Signature-Input</tt>.</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 or is present with the value false.</t>
      </section>
      <section anchor="wimse-req-nonce-param">
        <name>The <tt>wimse-req-nonce</tt> Signature Parameter</name>
        <t>The <tt>wimse-req-nonce</tt> signature metadata parameter is a String parameter for signed responses.
This parameter binds requests to responses and prevents a malicious
server-side component or middlebox from replaying responses to the wrong client.</t>
        <t>Every signed response <bcp14>MUST</bcp14> include <tt>wimse-req-nonce</tt>. The server <bcp14>MUST</bcp14> set it 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 not required. 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 of the server 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 at the server 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>The client <bcp14>MUST</bcp14> reject an unsigned response when the request's <tt>Signature-Input</tt> included <tt>wimse-sign-response</tt> with the Boolean value true.</t>
        <t>If the client did not require a signed response via <tt>wimse-sign-response</tt>, server-side local-policy signing is opportunistic from the client's point of view: the client has no signal that a signature was expected, so a middlebox that strips a signed response leaves an ordinary unsigned response that the client <bcp14>MUST</bcp14> accept. The server <bcp14>MAY</bcp14> still sign in that case. Whenever a signed response is present, the client <bcp14>MUST</bcp14> validate it and reject it if validation fails.</t>
        <t>When validating a signed response, the client <bcp14>MUST</bcp14> verify that <tt>wimse-req-nonce</tt> is present and equals the <tt>nonce</tt> from the corresponding request.</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.
That header indicates a preference for signed messages; it does not mandate that a response be signed.
Only <tt>wimse-sign-response</tt> with the Boolean value true creates such a mandate (<xref target="wimse-sign-response-param"/>, <xref target="signing-the-response"/>).
When both are present, the server <bcp14>MUST</bcp14> treat <tt>wimse-sign-response</tt> as authoritative for whether a signed response is required.
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.
<tt>Accept-Signature</tt> <bcp14>MUST NOT</bcp14> be used to request coverage weaker than this profile.</t>
      </section>
      <section anchor="error-conditions">
        <name>Error Conditions</name>
        <t>Errors may occur during the processing of the message signature.
This profile specifies the following HTTP status codes for API use.
The party generating the error <bcp14>SHOULD</bcp14> include a problem details body (<xref target="RFC9457"/>)
with the corresponding registered problem type (<xref target="iana-problem-types"/>),
unless it knows that the peer does not accept problem details responses.</t>
        <t>If authentication of a signed request fails — including WIT validation
(<xref section="5.1.4" sectionFormat="of" target="I-D.ietf-wimse-workload-creds"/>) or verification of the HTTP message signature —
for any reason such as an invalid signature, an expired validity time window, or a malformed data structure,
the server <bcp14>MUST</bcp14> return 400 (Bad Request).
The problem type for this error is
<tt>https://iana.org/assignments/http-problem-types#wimse-signature-invalid</tt>
(<xref target="iana-problem-signature-invalid"/>).
The server <bcp14>MUST NOT</bcp14> distinguish in the response which check failed,
so as not to reveal whether the WIT or the HTTP message signature was unacceptable.
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 response signing is required (<xref target="signing-the-response"/>) and the server cannot sign the response,
the server <bcp14>MUST NOT</bcp14> return a successful unsigned response.
If the server does not support response signing, it <bcp14>MUST</bcp14> return 501 (Not Implemented);
the problem type for this error is
<tt>https://iana.org/assignments/http-problem-types#wimse-signed-response-unsupported</tt>
(<xref target="iana-problem-signed-response-unsupported"/>).
If the server supports response signing but cannot sign this particular response
(for example, because the response is streamed or exceptionally large),
it <bcp14>MUST</bcp14> return 400 (Bad Request);
the problem type for this error is
<tt>https://iana.org/assignments/http-problem-types#wimse-signed-response-unavailable</tt>
(<xref target="iana-problem-signed-response-unavailable"/>).</t>
      </section>
      <section anchor="example-requests-and-responses">
        <name>Example Requests and Responses</name>
        <t>The following non-normative examples illustrate this profile with two algorithms:
<tt>Ed25519</tt> (<xref target="RFC9864"/>) for svcA/svcB, and <tt>ES256</tt> for svcC.</t>
        <t>The first exchange is svcA calling svcB; the second is svcB calling svcC.</t>
        <section anchor="ed25519-svca-calling-svcb">
          <name>Ed25519: svcA calling svcB</name>
          <t>Following is a signed request and a signed response using <tt>Ed25519</tt>.</t>
          <t>The caller (svcA) uses this keypair:</t>
          <figure>
            <name>svcA Private Key (Ed25519)</name>
            <sourcecode type="jwk"><![CDATA[
{
  "alg": "Ed25519",
  "crv": "Ed25519",
  "d": "fNVx2xkvU-jbsowg3cHMGLPzODvkM8Rd1UClQxv_VP0",
  "kid": "svc-a-key",
  "kty": "OKP",
  "x": "QDYLWc32T8hljQoolDi0ukqXtvNB1h-qNbpfuwZkZDg"
}
]]></sourcecode>
          </figure>
          <t>The caller uses its keypair and generates the following HTTP request:</t>
          <figure>
            <name>Signed Request (svcA to svcB)</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: sig1=:wfnk8T0ysp3a6bvqZAoeBoa2dFgRHooSel8jIAbKnbIP13cpy/O\
1J6xAYkziiUnVQ+NlMoR+ANDBHRwoB7ZIAA==:
Signature-Input: sig1=("@method" "@path" "@query" "workload-identity\
-token");created=1789405135;expires=1789405435;nonce="abcd1111";tag=\
"wimse-workload-to-workload";wimse-aud="https://svcb.example.com/gim\
me-ice-cream";wimse-sign-response
Workload-Identity-Token: eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiaXNzdWVyLWt\
leSIsInR5cCI6IndpdCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkMjU1MTki\
LCJjcnYiOiJFZDI1NTE5Iiwia2lkIjoic3ZjLWEta2V5Iiwia3R5IjoiT0tQIiwieCI6\
IlFEWUxXYzMyVDhobGpRb29sRGkwdWtxWHR2TkIxaC1xTmJwZnV3WmtaRGcifX0sImV4\
cCI6MTc4OTQwNTQzNSwiaWF0IjoxNzg5NDA1MTM1LCJpc3MiOiJodHRwczovL2V4YW1w\
bGUuY29tL2lzc3VlciIsImp0aSI6IndpdC0xNzg5NDA1MTM1OTUxMjQ5OTY1Iiwic3Vi\
Ijoid2ltc2U6Ly9leGFtcGxlLmNvbS9zdmNBIn0.XDaCtnf42Z4bYKqQxTkMGJ-Gtcg5\
iG7Z0QdBxj4J_d8Q4PVcoFwxfaeKnJD_iuTF8Nt_0eyZOiGYgngCk2omAg

]]></sourcecode>
          </figure>
          <t>Assuming that the workload being called (svcB) has the following keypair:</t>
          <figure>
            <name>svcB Private Key (Ed25519)</name>
            <sourcecode type="jwk"><![CDATA[
{
  "alg": "Ed25519",
  "crv": "Ed25519",
  "d": "uJf73cksN9k54kJtgrc0nBc3_WzkcJovRXWjEIYyESE",
  "kid": "svc-b-key",
  "kty": "OKP",
  "x": "WUZzabuwlwS9xlhndvLRMWQdkyjdOqVySiwqqd6brLM"
}
]]></sourcecode>
          </figure>
          <t>A signed response would be:</t>
          <figure>
            <name>Signed Response (svcB to svcA)</name>
            <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

HTTP/1.1 404 Not Found
Content-Length: 20
Content-Digest: sha-256=:uJC3qmCc7n6/6w4N2I0vAfj1cd/hTOAhxLEYXmPbNno\
=:
Content-Type: text/plain
Signature: sig1=:CUsdmPCDf6I587umdsSTKJvC00fMkj48Z7g1sWzYWAzhB2OZgZa\
ujchkP1Xw2dsJlTngAIbhyIq07diOYnHIBQ==:
Signature-Input: sig1=("@status" "workload-identity-token" "content-\
type" "content-digest" "@method";req "@path";req "@query";req);creat\
ed=1789405135;expires=1789405437;nonce="abcd2222";tag="wimse-workloa\
d-to-workload";wimse-req-nonce="abcd1111"
Workload-Identity-Token: eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiaXNzdWVyLWt\
leSIsInR5cCI6IndpdCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkMjU1MTki\
LCJjcnYiOiJFZDI1NTE5Iiwia2lkIjoic3ZjLWIta2V5Iiwia3R5IjoiT0tQIiwieCI6\
IldVWnphYnV3bHdTOXhsaG5kdkxSTVdRZGt5amRPcVZ5U2l3cXFkNmJyTE0ifX0sImV4\
cCI6MTc4OTQwNTQzNywiaWF0IjoxNzg5NDA1MTM3LCJpc3MiOiJodHRwczovL2V4YW1w\
bGUuY29tL2lzc3VlciIsImp0aSI6IndpdC0xNzg5NDA1MTM1OTUxNTEzODY2Iiwic3Vi\
Ijoid2ltc2U6Ly9leGFtcGxlLmNvbS9zdmNCIn0.T9hsSJX6aaMAbF5lnB47vHXj4k_c\
gOVRQtENfrdj0_Ut9vv5eEnGXcR_vqyfcm8mi-tQyg57sEvfFuoseRoCBA

No ice cream today.
]]></sourcecode>
          </figure>
        </section>
        <section anchor="es256-svcb-calling-svcc">
          <name>ES256: svcB calling svcC</name>
          <t>The following exchange uses <tt>ES256</tt> at the callee (svcC).
The caller is svcB, using the <tt>Ed25519</tt> keypair above.</t>
          <t>The callee (svcC) uses this keypair:</t>
          <figure>
            <name>svcC Private Key (ES256)</name>
            <sourcecode type="jwk"><![CDATA[
{
  "alg": "ES256",
  "crv": "P-256",
  "d": "RuJQPzrHlQrRllszMFQQw3e8bSdArcYeXjhnXRXclHs",
  "kid": "svc-c-key",
  "kty": "EC",
  "x": "dquxM0LHBbWlYCDxcNRHe9kb41lrnL0h_9ntNXKxzxw",
  "y": "HPqRls-EZoPrHY9gNRcZGq5pkypeovfnzLSfsYP2L6o"
}
]]></sourcecode>
          </figure>
          <t>A signed request from svcB to svcC:</t>
          <figure>
            <name>Signed Request (svcB to svcC)</name>
            <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

POST /inventory/cones HTTP/1.1
Host: svcc.example.com
Content-Digest: sha-256=:TzKXT0tUEfiTFkjRzwE8nCFnQljMuX5xwJaJgJCp+1g\
=:
Content-Length: 31
Content-Type: application/json
Signature: sig1=:EzNtEBAW99awIJtUjPxMqtHXYh0Y6MpOwzeMePSMCx6oqU2gh68\
0rk5+B1zFD8Xv7TRRffiM6nCOd58u4bvGDg==:
Signature-Input: sig1=("@method" "@path" "@query" "workload-identity\
-token" "content-type" "content-digest");created=1789405135;expires=\
1789405437;nonce="abcd3333";tag="wimse-workload-to-workload";wimse-a\
ud="https://svcc.example.com/inventory/cones";wimse-sign-response
Workload-Identity-Token: eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiaXNzdWVyLWt\
leSIsInR5cCI6IndpdCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkMjU1MTki\
LCJjcnYiOiJFZDI1NTE5Iiwia2lkIjoic3ZjLWIta2V5Iiwia3R5IjoiT0tQIiwieCI6\
IldVWnphYnV3bHdTOXhsaG5kdkxSTVdRZGt5amRPcVZ5U2l3cXFkNmJyTE0ifX0sImV4\
cCI6MTc4OTQwNTQzNywiaWF0IjoxNzg5NDA1MTM3LCJpc3MiOiJodHRwczovL2V4YW1w\
bGUuY29tL2lzc3VlciIsImp0aSI6IndpdC0xNzg5NDA1MTM1OTUxNTEzODY2Iiwic3Vi\
Ijoid2ltc2U6Ly9leGFtcGxlLmNvbS9zdmNCIn0.T9hsSJX6aaMAbF5lnB47vHXj4k_c\
gOVRQtENfrdj0_Ut9vv5eEnGXcR_vqyfcm8mi-tQyg57sEvfFuoseRoCBA

{"flavor":"vanilla","amount":1}
]]></sourcecode>
          </figure>
          <t>A signed response from svcC:</t>
          <figure>
            <name>Signed Response (svcC to svcB)</name>
            <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

HTTP/1.1 409 Conflict
Content-Length: 43
Content-Digest: sha-256=:xKyvC1Ob10QItKe0NdnKhtZ/6R7/JkpTxdH20RccxFY\
=:
Content-Type: application/json
Signature: sig1=:opZnqGnxaozdrf8ecfV+pAQ2wH2aIOtM5+dS6NI/MozKaVF3OUf\
xFyAC34i2+KbMNZHYlTzJzCPqXRucMbgFlA==:
Signature-Input: sig1=("@status" "workload-identity-token" "content-\
type" "content-digest" "@method";req "@path";req "@query";req);creat\
ed=1789405135;expires=1789405439;nonce="abcd4444";tag="wimse-workloa\
d-to-workload";wimse-req-nonce="abcd3333"
Workload-Identity-Token: eyJhbGciOiJFZDI1NTE5Iiwia2lkIjoiaXNzdWVyLWt\
leSIsInR5cCI6IndpdCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVTMjU2Iiwi\
Y3J2IjoiUC0yNTYiLCJraWQiOiJzdmMtYy1rZXkiLCJrdHkiOiJFQyIsIngiOiJkcXV4\
TTBMSEJiV2xZQ0R4Y05SSGU5a2I0MWxybkwwaF85bnROWEt4enh3IiwieSI6IkhQcVJs\
cy1FWm9QckhZOWdOUmNaR3E1cGt5cGVvdmZuekxTZnNZUDJMNm8ifX0sImV4cCI6MTc4\
OTQwNTQzOSwiaWF0IjoxNzg5NDA1MTM5LCJpc3MiOiJodHRwczovL2V4YW1wbGUuY29t\
L2lzc3VlciIsImp0aSI6IndpdC0xNzg5NDA1MTM1OTUxNTcwODY2Iiwic3ViIjoid2lt\
c2U6Ly9leGFtcGxlLmNvbS9zdmNDIn0.kaMHAoW7nZ5NrkwOzHE1zGEm-S9Dk5rWICPj\
KQenhHuwksZqhW2EO1MV0vh_dcBQzvnMS710Do9KEZkcg4QyDQ

{"error":"out_of_stock","flavor":"vanilla"}
]]></sourcecode>
          </figure>
        </section>
      </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 anchor="wimsey">
        <name>wimsey</name>
        <ul spacing="normal">
          <li>
            <t>Organization: independent</t>
          </li>
          <li>
            <t>Implementation: <eref target="https://github.com/kanywst/wimsey">https://github.com/kanywst/wimsey</eref></t>
          </li>
          <li>
            <t>Maturity:
            </t>
            <ul spacing="normal">
              <li>
                <t>WIT + HTTP Message Signatures: alpha</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Coverage: WIT, HTTP Message Signatures, signed responses</t>
          </li>
          <li>
            <t>License: Apache 2.0</t>
          </li>
          <li>
            <t>Contact: <eref target="https://github.com/kanywst">kanywst on GitHub</eref></t>
          </li>
          <li>
            <t>Last updated: 08-Sep-2026</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 (PoP) 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. As specified in that document,
the WIT is not used as a bearer token. While this helps reduce the sensitivity of the token it
is still possible that a token and its PoP may be captured and
replayed within the PoP's lifetime.</t>
        <t>The HTTP Signature profile presented here binds the PoP to the critical parts of the HTTP request (and potentially
response), including the request method, path, query, the intended audience (<tt>wimse-aud</tt>), and the message content.
The audience is a signed signature parameter rather than a re-derived URI component, so it survives intermediaries that rewrite the authority.
This profile does not cover <tt>@authority</tt> for that reason (<xref target="http-sig-auth"/>).
This eliminates most of the risk associated with active attackers on a middlebox.</t>
        <t>In addition, the following mitigations apply:</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 PoP and attempt to replay it to gain an advantage.
Sending the token and PoP on a server-authenticated TLS connection (<xref target="http-sig-auth"/>), with hostname validation,
mitigates passive capture on the path. TLS-terminating intermediaries still see the cleartext WIT and signature; see <xref target="middleboxes"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Signature Lifespan</t>
          </li>
        </ul>
        <t>A short <tt>expires</tt> value (<xref target="http-sig-auth"/>) limits the window during which a captured signature can be replayed.
Rejecting signatures outside their validity time is required by that section.</t>
        <ul spacing="normal">
          <li>
            <t>Replay Protection</t>
          </li>
        </ul>
        <t>The <tt>nonce</tt> signature parameter and optional replay caching (<xref target="http-sig-auth"/>) provide basic replay detection.
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 PoP
(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 without detection, it can attempt to capture and replay the message or modify
unsigned information, such as any HTTP headers that remain unsigned.</t>
        <t>HTTP permits intermediaries to transform messages (<xref target="RFC9421"/>).
This profile is intended to remain verifiable across common TLS-terminating proxies and load balancers:
it does not cover <tt>@authority</tt>, and it carries recipient binding in <tt>wimse-aud</tt> (<xref target="http-sig-auth"/>).
An intermediary can add its own HTTP message signature to a message that already carries a WIMSE signature.
Recipients continue to identify the WIMSE signature by its <tt>tag</tt> value <tt>wimse-workload-to-workload</tt>
and do not select by label (<xref target="http-sig-auth"/>).</t>
        <t>If an intermediary changes a component covered by the WIMSE signature, verification of that signature fails.
This document does not define a profile for stripping the origin WIMSE signature and replacing it with a new
WIMSE signature at the intermediary.
Such resigning would authenticate the intermediary rather than the origin workload and is left to
deployment-specific policy outside this specification.</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.
See also <xref target="signing-the-response"/> for the distinction between client-mandated and opportunistic response signing.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Privacy considerations for the Workload Identity Token and its proof of possession are discussed in
<xref target="I-D.ietf-wimse-workload-creds"/>. This profile does not introduce additional privacy concerns beyond those.</t>
    </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: String; 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: String; 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 anchor="iana-problem-types">
        <name>HTTP Problem Types Registration</name>
        <t>IANA is requested to register the following entries in the "HTTP Problem Types" registry
of <xref target="RFC9457"/>.</t>
        <section anchor="iana-problem-signature-invalid">
          <name><tt>wimse-signature-invalid</tt></name>
          <ul spacing="normal">
            <li>
              <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#wimse-signature-invalid</tt></t>
            </li>
            <li>
              <t>Title: WIMSE HTTP Signature Invalid</t>
            </li>
            <li>
              <t>Recommended HTTP status code: 400</t>
            </li>
            <li>
              <t>Reference: RFC XXX, <xref target="error-conditions"/></t>
            </li>
          </ul>
        </section>
        <section anchor="iana-problem-signed-response-unsupported">
          <name><tt>wimse-signed-response-unsupported</tt></name>
          <ul spacing="normal">
            <li>
              <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#wimse-signed-response-unsupported</tt></t>
            </li>
            <li>
              <t>Title: WIMSE Signed Response Unsupported</t>
            </li>
            <li>
              <t>Recommended HTTP status code: 501</t>
            </li>
            <li>
              <t>Reference: RFC XXX, <xref target="error-conditions"/></t>
            </li>
          </ul>
        </section>
        <section anchor="iana-problem-signed-response-unavailable">
          <name><tt>wimse-signed-response-unavailable</tt></name>
          <ul spacing="normal">
            <li>
              <t>Type URI: <tt>https://iana.org/assignments/http-problem-types#wimse-signed-response-unavailable</tt></t>
            </li>
            <li>
              <t>Title: WIMSE Signed Response Unavailable</t>
            </li>
            <li>
              <t>Recommended HTTP status code: 400</t>
            </li>
            <li>
              <t>Reference: RFC XXX, <xref target="error-conditions"/></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="RFC9530">
          <front>
            <title>Digest Fields</title>
            <author fullname="R. Polli" initials="R." surname="Polli"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document defines HTTP fields that support integrity digests. The Content-Digest field can be used for the integrity of HTTP message content. The Repr-Digest field can be used for the integrity of HTTP representations. Want-Content-Digest and Want-Repr-Digest can be used to indicate a sender's interest and preferences for receiving the respective Integrity fields.</t>
              <t>This document obsoletes RFC 3230 and the Digest and Want-Digest HTTP fields.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9530"/>
          <seriesInfo name="DOI" value="10.17487/RFC9530"/>
        </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>
        <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195">
          <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996">
            <front>
              <title>Deprecating TLS 1.0 and TLS 1.1</title>
              <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
              <author fullname="S. Farrell" initials="S." surname="Farrell"/>
              <date month="March" year="2021"/>
              <abstract>
                <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
                <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
                <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="8996"/>
            <seriesInfo name="DOI" value="10.17487/RFC8996"/>
          </reference>
          <reference anchor="RFC9325" target="https://www.rfc-editor.org/info/rfc9325">
            <front>
              <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
              <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
              <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
              <author fullname="T. Fossati" initials="T." surname="Fossati"/>
              <date month="November" year="2022"/>
              <abstract>
                <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
                <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="9325"/>
            <seriesInfo name="DOI" value="10.17487/RFC9325"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA.HTTP.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="27" month="August" 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-layer 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-02"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-transaction-tokens">
          <front>
            <title>Transaction Tokens</title>
            <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale">
              <organization>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="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
      </references>
    </references>
    <?line 644?>

<section anchor="security-goals">
      <name>Security Goals</name>
      <t>This appendix presents semiformal security goals for this protocol, when used in conjunction with the WIT credential.
The intent is to inform developers and to support eventual formal verification of the protocol; the goals are not
normative requirements beyond those stated in the body of this document.</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 a signed response is present.</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>Covered components of a request cannot 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 content (when present).</t>
          </li>
          <li>
            <t>Covered components of a signed response cannot be modified without detection by the recipient.</t>
          </li>
          <li>
            <t>This profile is designed so that, for typical REST APIs, the essential parts of the message are covered by the signature.</t>
          </li>
          <li>
            <t>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 are encouraged 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 a signed response is present, validating <tt>wimse-req-nonce</tt> mitigates replay of that response to a client other than the one that sent the triggering request.</t>
          </li>
          <li>
            <t>Undetected deletion of a request/response pair is prevented only when the client required a signed response via <tt>wimse-sign-response</tt> with the Boolean value true and rejects an unsigned response. Server local-policy signing alone does not provide that guarantee (<xref target="signing-the-response"/>).</t>
          </li>
        </ul>
      </section>
    </section>
    <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-08">
        <name>draft-ietf-wimse-http-signature-08</name>
        <ul spacing="normal">
          <li>
            <t>Address Justin Richer's shepherd review (#385).</t>
          </li>
          <li>
            <t>Exception for CONNECT: cover <tt>@authority</tt> instead of <tt>@path</tt>/<tt>@query</tt> (#368).</t>
          </li>
          <li>
            <t>Specify Simple String Comparison for <tt>wimse-aud</tt> verification (#396).</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-http-signature-07">
        <name>draft-ietf-wimse-http-signature-07</name>
        <ul spacing="normal">
          <li>
            <t>WGLC: replace <tt>@request-target</tt> with <tt>@path</tt>/<tt>@query</tt>; select the WIMSE signature by <tt>tag</tt> (#297, #301).</t>
          </li>
          <li>
            <t>WGLC: tighten signed-response rules (<tt>wimse-sign-response</tt>, <tt>Accept-Signature</tt>, opportunistic local-policy signing, deletion detection) and require <tt>wimse-req-nonce</tt> on every signed response (#297, #301, #305).</t>
          </li>
          <li>
            <t>WGLC: clarify <tt>wimse-aud</tt> (defaults, deployment-specific values) and why <tt>@authority</tt> is not covered; nonce replay caching; algorithms via WIT <tt>cnf.jwk.alg</tt>; middlebox/proxy considerations (#297, #305).</t>
          </li>
          <li>
            <t>Clarify parameter types, <tt>wimse-sign-response</tt> false vs omitted, integrity goals, and short <tt>expires</tt>; make <tt>wimse-arch</tt> and RFC 9457 normative (#305).</t>
          </li>
          <li>
            <t>Regenerate examples for the profile changes; add an <tt>ES256</tt> svcB-to-svcC exchange alongside <tt>Ed25519</tt> svcA/svcB (#312, <xref target="RFC9864"/>).</t>
          </li>
          <li>
            <t>Reference the WIT validation procedure in <xref target="I-D.ietf-wimse-workload-creds"/> (#290); consistent "proof of possession"/"PoP" wording.</t>
          </li>
        </ul>
      </section>
      <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 specification (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,
Flemming Andreasen, Kieran Sweeney and Anton Sokolov for their WGLC reviews,
Justin Richer for his document shepherd review,
as well as Jason Costello, Maartje Eyskens, Radosław Piliszek and kanywst 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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
u9zA563l/AJ/FzD5N+co2t+7uX78evt0Mv2y20vaB8PL9upmdnnQnwQ3+ePN
4eVqq3/06O2sPLYGx5O7+MvazSD3LmGzna/L2dHgy/o3Bzdy0vLXz1oXk9PW
xdPpFcx3s78M8z2ePnU3TnebsOqTFVjz0F87wTUnASCU/5SMP69+Wb+9WZl8
c9oH16Pb1c3882r05K99ifwQwDQYLntXCkzLhdHOWtePJw8XG2et2xXcEXwD
cME9BqtR7q9ev/s83YzEwX7uHzxGnwen4/bV5lMwON0+ipcbX3e9nTzurK/e
rbdvP32/eGz1Tw6O6we539345oQH7++WL4Ltx4f141+DDxfr51/8ZH/y2PHE
p/h499dw1Nr/cJr/uiymd2fhwW037u70V5NBs/snp8SSrphbS2HH/Jjc2cDv
iSs1s2w00KFyigmpCHdbUNUnsqyAvtxekgUVNnv6Izj66Ljzfs3vZ6eb/Y31
/nHeTf3leNtf+/Xmqe8fJ+PLrzcPe0e3072rvQpHb7/A0W+u75689mgSTa42
H6NeHIw/X57cXAT96UNw9v3L9CqcfP8evGunn09mcvTt+Ry9WRGGsipd/BP4
tOLBoH+tu6jk7iejOPiTo+oaP1Mxx5a7umyeca3jFqbS10Gt+HlrdLyz9n2w
47+P3719N1k/XT1aHjc7Dyt+8LbXOmv2Hj/v3X4dnLdP4+Sbg5zWrs0FqIjH
/O0w8sJ4Bsffuc6CwfnObufd0caH96NBkF21Ph2Pd5aXOyf9h/UPd++7K9nN
0+1N86m3vXp2173zvjmjB7/XP1/5OlkNsuOoFXebR+3e9Oj78vsgPLuND4+2
L57n+Gz7zWLwkr0D2sk9fHNQs7QeBAQelBJSbmC5rZId8meWH/iLlBPfnBck
xXtbUqzCPywpinLimzNTUmhntiVn/m/k/Ecvcv7gy0087N0CR28fBq2zr73M
O9joB/3Hq9aX4PLuIN/wBpfn/pe7jevVaM3/ut8/HRxPW3vLz3H+6UzOv/bH
c37YNaibt6u/i/PvIOdvbfayq+Ov7zzvpNne34ji7fX348OvD+v9X/1vTvfs
y+VFvnfaSYOH5V+v883xeEPsxQdf/ctfx9+nHX/wYRDW84tpd+N9tjfu7I+S
TFwmO9vNPzl/ck4Tl9qwoRIBTD7wpo154kCFJ4nBsTxoEk8jEwFtkK2qBVE2
jrQ9QvqsMl1UAArlBs+wI31JUvuVxknNSsAzJpLWiGVmeKs81OuNCVxOQfCc
1/UTEh+Xo+OL86f0MLpIL6MoezrZv7iYrIkP7augmfq34utDL/56+dWPDrOK
2PErYmdvx5I6wffR48ny58Pt9k10u7P76J9eHorNfnt9JUrjz8u9Xzfj/PTr
p8enxwl/RUMcnn+/jLL63l1ynh7ebnZPL/27g+8bwz7wrWTciZ8+X3Wy2/PV
z++SmbJqpySrEAJlSSXdsRgIsw5/558gsc7PrsC0CKmNV5JO3/rUXnSGLeEX
bYm50qv19Okr8JHrvU7Y2u8/XD5N9j7EO/vxRfRwMvq68Tg59o67xzvDn1a6
RemlZOPaSlmiWa3K3j5kySy5tvd0mu9tN282N73J0XF+/XD+ePI9P/x621u+
fXcyPJs8iRNxfnWy8/gu+X692u29+/DNWU77Gz9trzzt7374On7furzsdMKT
d/HOWbDxYbTeHh/sdv94S8ZIttmC7llLB6yvmRJsDf6ZJcFmWzog0Yu2TuFs
y8jw/4yl8//l3X+EvPuxwH6Kha0F6alYqC14A9CL84WtlTJ/nGEKae43R51X
XPKfwR0tfX4T45kd4EN5lWWtrz3DEB8/Tcc7K2ftleWLo/yTWD4N4k+9/O7t
u8v3b4/7w9ZjcLi6fOn7j/u3s9T5VzC/ZHgXfz+IH73kKUg7H4Tf+fLTsHmx
Ojlc9Y7O8pONn4Krd6dHb0+Sp0/el/21s+vON+dxf9rcWVsPV3/61D45vTu8
jVpPx08759+/Xo78k3Z3P3rBjfOfT6nftFniOvzzjyv1xFD/EzC5FjA5Iuhv
zu3a8SoOfb2zPD1t3YbAQFLv5gKXAIR8kt9OV9K7r316Hhz2aWkXU5y4iz/3
/a/Inlqt7ZOrvePwy+rj3cXy5frt8sbV1cH1hgdW5snN47Tdn0y8/Q8b7fjy
7GYvXxdxb41YJDKefu/C/3KcAZObruzfDDYv/H7v7uwmOLsenHqXa3srPrBI
/+DLOBjcjUT/sXUXn95d7x6fnA4+aBapGOQ3R7HIs9nOoI3nWKRikMD8fxeL
9Cc2i1QMEnY0n0XuIovseyeHzeTmfXy3cZr2J2dPh3srTwd7g/rV5m5/I705
2jl/+OZ8ugB4HY4m/ezue+9mde9s5eTL8rj3a+BvXzyN45Or9yvLu8nmp727
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
l7zXZrAAAA==

-->

</rfc>
