<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schwenkschuster-s2s-http-sig-00" category="std" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="WIMSE Workload-to-Workload-HTTP-SIG">WIMSE Workload-to-Workload with HTTP Message Signatures</title>
    <seriesInfo name="Internet-Draft" value="draft-schwenkschuster-s2s-http-sig-00"/>
    <author fullname="Arndt Schwenkschuster">
      <organization>SPIRL</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="September" day="23"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 49?>

<t>This document defines an HTTP Message Signatures-based profile for workload-to-workload authentication
within the WIMSE (Workload Identity in Multi System Environments) architecture. This profile uses
the Workload Identity Token (WIT) combined with HTTP Message Signatures to provide cryptographic
proof of possession and message integrity protection. The profile leverages RFC 9421 to sign HTTP
requests and optionally responses, ensuring that workloads can authenticate each other and verify
message integrity at the application level, particularly in environments where end-to-end TLS is
not feasible due to middleboxes or other infrastructure constraints.</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-schwenkschuster-s2s-http-sig/"/>.
      </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 59?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies an HTTP Message Signatures-based authentication profile for workload-to-workload
communication as part of the WIMSE architecture defined in <xref target="I-D.ietf-wimse-arch"/>. This profile provides
a standardized approach for workloads to authenticate each other and protect message integrity at the
application level.</t>
      <t>In many modern deployment environments, particularly in containerized and cloud-native architectures,
workloads cannot rely on end-to-end TLS for security due to the presence of load balancers, API gateways,
service meshes, and other intermediary systems. These middleboxes often terminate TLS connections, requiring
application-level protection mechanisms to ensure workload authentication and message integrity.</t>
      <t>This profile builds upon the base WIMSE workload-to-workload protocol and specifies the use of HTTP Message
Signatures <xref target="RFC9421"/> as the proof of possession mechanism. The approach combines:</t>
      <ol spacing="normal" type="1"><li>
          <t>The Workload Identity Token (WIT) - a JWT that establishes the workload's identity and binds it to a cryptographic key</t>
        </li>
        <li>
          <t>HTTP Message Signatures - providing cryptographic proof that the sender possesses the private key corresponding to the public key in the WIT</t>
        </li>
        <li>
          <t>Message integrity protection - ensuring that critical parts of HTTP requests and responses have not been modified</t>
        </li>
      </ol>
      <t>This profile is particularly suitable for deployments that require strong message integrity guarantees and
the ability to sign both requests and responses. It provides protection against message tampering by
intermediaries while allowing for the flexibility needed in complex multi-tier architectures.</t>
      <t>The profile defines specific requirements for which HTTP message components must be signed, signature
parameters that must be included, and validation procedures that recipients must follow. It is designed
to be interoperable with other WIMSE authentication profiles, allowing different workload pairs within
the same call chain to use different authentication methods as appropriate for their deployment environment.</t>
    </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>Authentication Based on HTTP Message Signatures</name>
      <t>This option uses the Workload Identity Token (WIT) as defined in Section 3.1 "The Workload Identity Token" of <xref target="I-D.ietf-wimse-s2s-protocol"/> and the private key associated with its public key, to sign the request and optionally, the response. See Section 4 "Security Considerations" of <xref target="I-D.ietf-wimse-s2s-protocol"/> for security considerations.
This section defines a profile of the Message Signatures specification <xref target="RFC9421"/>.</t>
      <t>The request is signed as per <xref target="RFC9421"/>. The following derived components <bcp14>MUST</bcp14> be signed:</t>
      <ul spacing="normal">
        <li>
          <t><tt>@method</tt></t>
        </li>
        <li>
          <t><tt>@request-target</tt></t>
        </li>
      </ul>
      <t>In addition, the following request headers <bcp14>MUST</bcp14> be signed when they exist:</t>
      <ul spacing="normal">
        <li>
          <t><tt>Content-Type</tt></t>
        </li>
        <li>
          <t><tt>Content-Digest</tt></t>
        </li>
        <li>
          <t><tt>Authorization</tt></t>
        </li>
        <li>
          <t><tt>Txn-Token</tt> <xref target="I-D.ietf-oauth-transaction-tokens"/></t>
        </li>
        <li>
          <t><tt>Workload-Identity-Token</tt></t>
        </li>
      </ul>
      <t>If the response is signed, the following components <bcp14>MUST</bcp14> be signed:</t>
      <ul spacing="normal">
        <li>
          <t><tt>@status</tt></t>
        </li>
        <li>
          <t><tt>@method;req</tt></t>
        </li>
        <li>
          <t><tt>@request-target;req</tt></t>
        </li>
        <li>
          <t><tt>Content-Type</tt> if it exists</t>
        </li>
        <li>
          <t><tt>Content-Digest</tt> if it exists</t>
        </li>
        <li>
          <t><tt>Workload-Identity-Token</tt></t>
        </li>
      </ul>
      <t>To ensure the message is fully integrity-protected, if the request or response includes a message body, the sender <bcp14>MUST</bcp14> include
(and the receiver <bcp14>MUST</bcp14> verify) a Content-Digest header.</t>
      <t>For both requests and responses, the following signature parameters <bcp14>MUST</bcp14> be included:</t>
      <ul spacing="normal">
        <li>
          <t><tt>created</tt></t>
        </li>
        <li>
          <t><tt>expires</tt> - expiration <bcp14>MUST</bcp14> be short, e.g. on the order of minutes. The WIMSE architecture will provide separate
mechanisms in support of long-lived compute processes.</t>
        </li>
        <li>
          <t><tt>nonce</tt></t>
        </li>
        <li>
          <t><tt>tag</tt> - the value for implementations of this specification is <tt>wimse-workload-to-workload</tt></t>
        </li>
      </ul>
      <t>The following signature parameters in the <tt>Signature-Input</tt> header <bcp14>MUST NOT</bcp14> be used:</t>
      <ul spacing="normal">
        <li>
          <t><tt>keyid</tt> - The signing key is sent along with the message in the WIT. Additionally specifying the key identity would add confusion.</t>
        </li>
        <li>
          <t><tt>alg</tt> - The signature algorithm is specified in the <tt>jwk</tt> section of the <tt>cnf</tt> claim in the WIT as defined in Section 3.1 "The Workload Identity Token" of <xref target="I-D.ietf-wimse-s2s-protocol"/>. See Sec. 3.3.7 of <xref target="RFC9421"/> for details.</t>
        </li>
      </ul>
      <t>It is <bcp14>RECOMMENDED</bcp14> to include only one signature with the HTTP message.
If multiple ones are included, then the signature label included in both the <tt>Signature-Input</tt> and <tt>Signature</tt> headers <bcp14>SHOULD</bcp14>
be <tt>wimse</tt>.</t>
      <t>A sender <bcp14>MUST</bcp14> ensure that each nonce it generates is unique, at least among messages sent to the same recipient.
To detect message replays,
a recipient <bcp14>SHOULD</bcp14> reject a message (request or response) if a nonce generated by a certain peer is seen more than once.</t>
      <t>Implementors need to be aware that the WIT is extracted from the message before the message signature is validated. Recipients of signed HTTP messages <bcp14>MUST</bcp14> validate the signature and content of the WIT before validating the HTTP message signature. They <bcp14>MUST</bcp14> ensure that the message is not processed further before it has been fully validated.</t>
      <t>Either client or server <bcp14>MAY</bcp14> send an <tt>Accept-Signature</tt> header, but is not required to do so. When this header is sent, it <bcp14>MUST</bcp14> include the header components listed above.</t>
      <t>Following is a non-normative example of a signed request and a signed response,
where the caller is using the keys specified in Section 3.1 "The Workload Identity Token" of <xref target="I-D.ietf-wimse-s2s-protocol"/>.</t>
      <figure>
        <name>Signed Request</name>
        <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

GET /gimme-ice-cream?flavor=vanilla HTTP/1.1
Host: example.com
Signature: wimse=:zyR2W7QeUEYwGT8q+jU5HyEiPhC4iiBJlAfwu6otL+kXBYOMVl\
ZEfGDnTlQiYmUWQMyu69811lIDWbCK42yWCw==:
Signature-Input: wimse=("@method" "@request-target" "workload-identi\
ty-token");created=1754558248;expires=1754558548;nonce="abcd1111";ta\
g="wimse-workload-to-workload"
Workload-Identity-Token: eyJhbGciOiJFZERTQSIsImtpZCI6Imlzc3Vlci1rZXk\
iLCJ0eXAiOiJ3aW1zZS1pZCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNB\
IiwiY3J2IjoiRWQyNTUxOSIsImtpZCI6InN2Yy1hLWtleSIsImt0eSI6Ik9LUCIsIngi\
OiJEUEhDOFdKaTZ3WEttN3BpRVdXRDRQdHBiTUdJMUcyOXVTMFl5MnNmQk5zIn19LCJl\
eHAiOjE3NTQ1NTg1NDgsImlhdCI6MTc1NDU1ODI0OCwiaXNzIjoiaHR0cHM6Ly9leGFt\
cGxlLmNvbS9pc3N1ZXIiLCJqdGkiOiJ3aXQtMTc1NDU1ODI0ODQwMjQ5NjAwMCIsInN1\
YiI6IndpbXNlOi8vZXhhbXBsZS5jb20vc3ZjQSJ9.OAPARpluzH34v4bhCtPovuOvTsx\
cVbAV9WSqFlbiKdNvfEVN4uRNQSRs7ePfMIJB2uqgX71XjBFH433nDzJZBQ

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

Response:

HTTP/1.1 404 Not Found
Connection: close
Content-Digest: sha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU\
=:
Content-Type: text/plain
Signature: wimse=:WAjxziuCiYRqCzetetDwaTS7Ka9yMwB+dAHVJPw3VkUH+c8c4A\
5BKrCsPlD/ymy+7PgwXl3y3mVdaD4ww7WqDA==:
Signature-Input: wimse=("@status" "workload-identity-token" "content\
-type" "content-digest" "@method";req "@request-target";req);created\
=1754558248;expires=1754558550;nonce="abcd2222";tag="wimse-workload-\
to-workload"
Workload-Identity-Token: eyJhbGciOiJFZERTQSIsImtpZCI6Imlzc3Vlci1rZXk\
iLCJ0eXAiOiJ3aW1zZS1pZCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNB\
IiwiY3J2IjoiRWQyNTUxOSIsImtpZCI6InN2Yy1iLWtleSIsImt0eSI6Ik9LUCIsIngi\
OiJnejJhU0pFLWc5dzFyYmdKaU5wczRHYjhJUGs1MGs1b0pVRWJMRHVzYXljIn19LCJl\
eHAiOjE3NTQ1NTg1NTAsImlhdCI6MTc1NDU1ODI1MCwiaXNzIjoiaHR0cHM6Ly9leGFt\
cGxlLmNvbS9pc3N1ZXIiLCJqdGkiOiJ3aXQtMTc1NDU1ODI0ODQwMjY4MTAwMCIsInN1\
YiI6IndpbXNlOi8vZXhhbXBsZS5jb20vc3ZjQiJ9.yJ4gGQ1DQBX0E9Xp5fIgj6Ucpf9\
LI_gHnhURZxqu6atT-3hpbFTgw4rd-6knM7-HClok4b6N2ViZaEDcz6IMCg

No ice cream today.

]]></sourcecode>
      </figure>
      <section anchor="error-conditions">
        <name>Error Conditions</name>
        <t>Errors may occur during the processing of the message signature or WPT. If the signature verification fails for any reason,
such as an invalid signature, an expired validity time window, or a malformed data structure, an error is returned. Typically,
this will be in response to an API call, so an HTTP status code such as 400 (Bad Request) is appropriate. This response could
include more details as per <xref target="RFC9457"/>, such as an indicator that the wrong key material or algorithm was used.  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 or WPT is not compatible
with this specification.</t>
      </section>
      <section anchor="coexist">
        <name>Coexistence with JWT Bearer Tokens</name>
        <t>The WIT and WPT define new HTTP headers. They can therefore be presented along with existing headers used for JWT bearer tokens. This
property allows for transition from mechanisms using identity tokens based on bearer JWTs to proof of possession based WITs.
A workload may implement a policy that accepts both bearer tokens and WITs during a transition period. This policy may be configurable
per-caller to allow the workload to reject bearer tokens from callers that support WITs. Once a deployment fully supports WITs, then the use of
bearer tokens for identity can be disabled through policy.  Implementations should be careful when implementing such a transition strategy,
since the decision which token to prefer is made when the caller's identity has still not been authenticated, and needs to be revalidated following the authentication step.</t>
        <t>The WIT can also coexist with tokens used to establish security context, such as transaction tokens <xref target="I-D.ietf-oauth-transaction-tokens"/>. In this case a workload's
authorization policy may take into account both the sending workload's identity and the information in the context token. For example, the
identity in the WIT may be used to establish which API calls can be made and information in the context token may be used to determine
which specific resources can be accessed.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="workload-identity-token-and-proof-of-possession">
        <name>Workload Identity Token and Proof of Possession</name>
        <t>The Workload Identity Token (WIT) is bound to a secret cryptographic key and is always presented with a proof of possession as described in Section 3.1 "The Workload Identity Token" of <xref target="I-D.ietf-wimse-s2s-protocol"/>. The WIT is a general purpose token that can be presented in multiple contexts. The WIT and its PoP are only used in the application-level options, and both are not used in MTLS. The WIT <bcp14>MUST NOT</bcp14> be used as a bearer token. While this helps reduce the sensitivity of the token it is still possible that a token and its proof of possession may be captured and replayed within the PoP's lifetime. The following are some mitigations for the capture and reuse of the proof of possession (PoP):</t>
        <ul spacing="normal">
          <li>
            <t>Preventing Eavesdropping and Interception with TLS</t>
          </li>
        </ul>
        <t>An attacker observing or intercepting the communication channel can view the token and its proof of possession and attempt to replay it to gain an advantage. In order to prevent this the
token and proof of possession <bcp14>MUST</bcp14> be sent over a secure, server authenticated TLS connection unless a secure channel is provided by some other mechanisms. Host name validation according
to Section 3.3.1 "Server Name Validation" of <xref target="I-D.ietf-wimse-s2s-protocol"/> <bcp14>MUST</bcp14> be performed by the client.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Proof of Possession Lifespan</t>
          </li>
        </ul>
        <t>The proof of possession <bcp14>MUST</bcp14> be time limited. A PoP should only be valid over the time necessary for it to be successfully used for the purpose it is needed. This will typically be on the order of minutes.  PoPs received outside their validity time <bcp14>MUST</bcp14> be rejected.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Proof of Possession Scope</t>
          </li>
        </ul>
        <t>In order to reduce the risk of theft and replay the PoP should have a limited scope. For example, a PoP may be targeted for use with a specific workload and even a specific transaction to reduce the impact of a stolen PoP. In some cases a workload may wish to reuse a PoP for a period of time or have it accepted by multiple target workloads. A careful analysis is warranted to understand the impacts to the system if a PoP is disclosed allowing it to be presented by an attacker along with a captured WIT.</t>
        <ul spacing="normal">
          <li>
            <t>Replay Protection</t>
          </li>
        </ul>
        <t>A proof of possession includes the <tt>jti</tt> claim that <bcp14>MUST</bcp14> uniquely identify it, within the scope of a particular sender.
This claim <bcp14>SHOULD</bcp14> be used by the receiver to perform basic replay protection against tokens it has already seen.
Depending upon the design of the system it may be difficult to synchronize the replay cache across all token validators.
If an attacker can somehow influence the identity of the validator (e.g. which cluster member receives the message) then
replay protection would not be effective.</t>
        <ul spacing="normal">
          <li>
            <t>Binding to TLS Endpoint</t>
          </li>
        </ul>
        <t>The POP <bcp14>MAY</bcp14> be bound to a transport layer sender such as the client identity of a TLS session or TLS channel binding parameters. The mechanisms for binding are outside the scope of this specification.</t>
      </section>
      <section anchor="middleboxes">
        <name>Middle Boxes</name>
        <t>In some deployments the Workload Identity Token and proof of possession may pass through multiple systems. The communication between the systems is over TLS, but the token and PoP are available in the clear at each intermediary.  While the intermediary cannot modify the token or the information within the PoP they can attempt to capture and replay the token or modify the data not protected by the PoP.</t>
        <t>Mitigations listed in Section 4.3 "Middle Boxes" of <xref target="I-D.ietf-wimse-s2s-protocol"/> can be used to provide some protection from middle boxes.
However we note that the DPoP-inspired solution <xref target="I-D.ietf-schwenkschuster-s2s-jwt-pop"/> does not protect major portions of the request and response and therefore does not provide protection from an actively malicious middle box.
Deployments should perform analysis on their situation to determine if it is appropriate to trust and allow traffic to pass through a middle box.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>Privacy considerations for this specification are the same as those described in Section 4.4 "Privacy Considerations" of <xref target="I-D.ietf-wimse-s2s-protocol"/>.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>None</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA.HTTP.FIELDS" target="https://www.iana.org/assignments/http-fields">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JOSE.ALGS" target="https://www.iana.org/assignments/jose">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JWT.CLAIMS" target="https://www.iana.org/assignments/jwt">
          <front>
            <title>JSON Web Token Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.MEDIA.TYPES" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.URI.SCHEMES" target="https://www.iana.org/assignments/uri-schemes">
          <front>
            <title>Uniform Resource Identifier (URI) Schemes</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-arch">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as a
   running instance of software executing for a specific purpose.  This
   document discusses an architecture for designing and standardizing
   protocols and payloads for conveying workload identity and security
   context information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-05"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-s2s-protocol">
          <front>
            <title>WIMSE Workload to Workload Authentication</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>SPIRL</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <date day="4" month="July" year="2025"/>
            <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 simplest, atomic unit
   of this architecture: the protocol between two workloads that need to
   verify each other's identity in order to communicate securely.  The
   scope of this protocol is a single HTTP request-and-response pair.
   To address the needs of different setups, we propose two protocols,
   one at the application level and one that makes use of trusted TLS
   transport.  These two protocols are compatible, in the sense that a
   single call chain can have some calls use one protocol and some use
   the other.  Workload A can call Workload B with mutual TLS
   authentication, while the next call from Workload B to Workload C
   would be authenticated at the application level.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-s2s-protocol-06"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-transaction-tokens">
          <front>
            <title>Transaction Tokens</title>
            <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale">
              <organization>SGNL</organization>
            </author>
            <author fullname="George Fletcher" initials="G." surname="Fletcher">
              <organization>Practical Identity LLC</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</organization>
            </author>
            <date day="28" month="July" year="2025"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) are designed to maintain and
   propagate user identity and authorization context across workloads
   within a trusted domain during the processing of external
   programmatic requests, such as API calls.  They ensure that this
   context is preserved throughout the call chain, even when new
   transactions are initiated internally, thereby enhancing security and
   consistency in complex, multi-service architectures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-06"/>
        </reference>
        <reference anchor="I-D.ietf-schwenkschuster-s2s-jwt-pop">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <?line 311?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-schwenkschuster-s2s-http-sig-00">
        <name>draft-schwenkschuster-s2s-http-sig-00</name>
        <t>Initial clone from original draft-ietf-wimse-s2s-06 which contained both, Workload Proof Token and HTTP Message Signature proof of possession mechanisms.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Pieter Kasselman for his detailed comments.</t>
      <t>We thank Daniel Feldman for his contributions to earlier versions of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ehVYkHG9GEDUEA8pQJmhjSKTFRcjg8QAeWGhgLsiyKYgF0iFn5cX1Od89C6z
F9qZckB8tKzewYmaJXDJEA2DdAzzSTkQEsciRLMLtAID0lACdKxh1ikQHN2B
aSF8NHJnImWKGrJgpoa4CfwsZrFiCAMos8PzeYZWGLjHqTko/voMeL5GYOWG
VkuoD6EkJg1EjFksMN2YIELSKHbWhwS5g0fwXq2SR8AmjCaN280X3LLDyiKs
Ib5QZh1mjeJoWtIqV4yiFZOQXyI8agI+4ddYPw/wQOaMDS/KiYFZ+8iKRFBC
TkN8nrEcWgJsYGmUuBS/ZmsQxC6f3vyKQcOUg4VMOHIaU2RpNgLRmIB6UkpC
W778iI7TljTXC+hOyZOLyVQ1b0juMKV71/Q8MUuqTwR2jblpYgkwgTldjA8O
aVRjV1pNYIIBSIN4a0hU0VbSgcycgocRgJFHv86N5oLsokVnqbQ0VbOyFFw5
n860R8ntXRV94cKglsk1R+fPcWuMmTV5gJg5rK6A4r8W1hznH//4B8NoxPlQ
/oMmpL3Lfvn0C6NoZxFDEIhkoXeLVYv32zsbbOWhD45z2B6yt2M5nYqq9EQV
jf30z1HA51H8YQ6mNwg4ydnbeq3uHEVYpTRcoxpfdr27jAj+sPu47G9cbZ+L
i/bN4nD4/vOb+4uto2Vbnk32G1LuHQfN0SJ9FyUnbx6u925Ou5fBJ+e2PTps
hcPgXN5ML67Ou8v03c77ej3otK7c/Y+NjeXV/uLDh11nBRPtnr9WjNtYYZUV
hxFGMtOt7d0nB7w3cnArr383vs2H+vZWY2vr/Ubj/e/GxbFDWzBEEPShwl3P
r8Ofyu8J/+SMP1Redg0qzgsuJnBveTxxDz15Ko8Pbtv94fmgozrTZHa733nX
mQaP3uZl4Ml6fHv98MmRJ/vH6+K6ibM3+VX98XZQh5nJZ3/zXI7Oa7DYvTu9
kacQQIHAxp372XZneqBul7DYw+VD/6C398npyIW82Tze6NxHsn91vuwNL76c
FrcNexs3y/rk5CoJhB5fh79hhZ2Ti334Ho6BbUBC+6I9aZ0e+B/58Hbzqp0k
vc29Wf/Sv+63+uf+0Z4cXvjH3QtveXp9OeweBFvdsDc9f9h67IT1HTgKXLU4
gsPctzd7w/N6bziu91pj2C+Y+EBHd+jB94v6aauzfrq/kPy694g086P+unfU
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

-->

</rfc>
