<?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-07" 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-07"/>
    <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="September" 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 uses <tt>@path</tt> and <tt>@query</tt> rather than <tt>@request-target</tt>, which is <bcp14>NOT RECOMMENDED</bcp14> outside HTTP/1.1 (<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>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>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. This implies the receiver <bcp14>MUST</bcp14> compute the Content-Digest value for the message content received and compare it with the Content-Digest 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. 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.</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>
      <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 inherit the
requirement that <tt>ES256</tt> <bcp14>MUST</bcp14> be supported from that document.
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>This document defines the <tt>wimse-aud</tt> signature metadata parameter for requests.
It is a String parameter.
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.
The recipient <bcp14>MUST</bcp14> be able to verify that the audience refers to it, using trusted configuration rather than untrusted request fields such as <tt>Host</tt>.
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>This document defines the <tt>wimse-sign-response</tt> signature metadata parameter for requests.
It is a Boolean parameter.
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"/>.
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>This document defines the <tt>wimse-req-nonce</tt> signature metadata parameter for signed responses.
It is a String parameter.
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. 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>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. 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 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 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 PoP and attempt to replay it to gain an advantage. In order to prevent this, the
token and PoP <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. This parameter <bcp14>SHOULD</bcp14> be used by the receiver to perform basic replay protection: a nonce that has already been seen <bcp14>SHOULD</bcp14> cause the message to be rejected.
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 <bcp14>MAY</bcp14> 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 <bcp14>MUST NOT</bcp14> 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 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 PoPs.</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. In those 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 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 <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 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="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>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="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>
        <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-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 630?>

<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-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,
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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
/sWak8e9ZYvpUa994Ppn/tH+/W6zftra22j6E99ZDfrNx8h3bk+fvZuv0+Ob
9JsViKtm0gwvN9yd5vtm6A29nfSHt3bhdy5qMNBje3Dnn4HVCRgZNx+Hm83B
fnI/hVf7X/snj9f1k1bf/2Yd7xw9uuHd3CndtfvH45u91Fn9ys/XLjfweWsl
vcDfBUz+zWoG+3s310+3d88n06+7vah9MLxsr35MLg/6E+8mfbo5vFxt9ZtP
zk79qTU4mtyHX9duBqlzCZvt3K4kzcHX9W8WbuSk5a6ftS4mp62L59MrmO9m
fwXmezp97m6c7jZg1Sd1WPPQXTvBNUceIJT7HI2PV7+u393UJ9+s9sH16G71
Y3q8Gjy7a18D1wcwDYYrzpUC00putLPW9dPJ48XGWeuujjuCbwAuuEdvNUjd
1ev3x9OPgTjYT92Dp+B4cDpuX3189gan281wpXa76+ykYWd99X69ffflx8VT
q39ycFQ9SN3uxjfLP9i8X7nwtp8e14++ex8u1s+/utH+5KnjiC/h0e53f9Ta
/3Cafl8R0/sz/+CuG3Z3+qvRoNH9xSqwpCvm1lLYMT8mbxfwe+JKjSQZDbQc
JSVNxb3agooakGV59OX2ksyGNNnTv4Kjj446m2tuPzn92N9Y7x+l3dhdCbfd
te83z333KBpf3t487jXvpntXeyWO3n6Fo99c3z877dEkmFx9fAp6oTc+vjy5
ufD600fv7MfX6ZU/+fHDe9+Oj09mcvTt+Ry9URKGshZH/CfwaV1Ptb6ybqMW
tR+NQu8XS9UkHFMm5pa9upI94zqFLczYq4Ja8XlrdLSz9mOw426G75ffT9ZP
V5sr40bnse56y73WWaP3dLx3dzs4b5+G0TcLOa1ZegJQEU/p8jBw/HAGx9+5
TrzB+c5u531z48PmaOAlV60vR+OdlZXOSf9x/cP9Zree3Dzf3TSee9urZ/fd
e+ebNXp0e/3z+u1k1UuOglbYbTTbvWnzx8qm55/dhYfN7YuXOT7bBbMYvGTv
gHZyD98s7JZjPPAIPCglpNzAihslO+TPLD/wFyknvlmvSIpNU1Kswj8sKfJy
4ps1U1JoX5chZ/5v5PzNVzm/9/UmHPbugKO3D73W2W0vcQ42+l7/6ar11bu8
P0g3nMHlufv1fuN6NVhzb/f7p4OjaWtv5SXOP53J+df+9Zwfdg3q5t3qn+L8
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

-->

</rfc>
