<?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-protocol-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">WIMSE Workload-to-Workload Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-schwenkschuster-s2s-protocol-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>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>
    <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-protocol/"/>.
      </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 63?>

<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"/>.
For simplicity, this document focuses on HTTP-based services,
and the workload-to-workload call consists of a single HTTP request and its response.
We define the credentials that both workloads should possess and how they are used to protect the HTTP exchange.</t>
      <t>There are multiple deployment styles in use today, and they result in different security properties.
We propose to address them differently.</t>
      <ul spacing="normal">
        <li>
          <t>Many use cases have various middleboxes inserted between pairs of workloads, resulting in a transport layer
that is not end-to-end encrypted. We propose to address these use cases by protecting the HTTP messages at the application
level (<xref target="app-level"/>).</t>
        </li>
        <li>
          <t>The other commonly deployed architecture has a mutual-TLS connection between each pair of workloads. This setup
can be addressed by a simpler solution (<xref target="mutual-tls"/>).</t>
        </li>
      </ul>
      <t>It is an explicit goal of this protocol that a workload deployment can include both architectures across a multi-chain call.
In other words, Workload A can call Workload B with mutual TLS protection,
while the next call to Workload C is protected at the application level.</t>
      <t>For application-level protection we define two alternative approaches in separate companion documents: one inspired by DPoP <xref target="RFC9449"/> defined in <xref target="I-D.ietf-schwenkschuster-s2s-jwt-pop"/> and one which is a profile of HTTP Message Signatures <xref target="RFC9421"/> defined in <xref target="I-D.ietf-schwenkschuster-s2s-http-sig"/>. Alternative protocol-specific options are also possible.</t>
      <section anchor="extending-this-protocol-to-other-use-cases">
        <name>Extending This Protocol to Other Use Cases</name>
        <t>The protocol defined here is narrowly scoped, targeting only HTTP-based request/response services. To secure workloads communicating over other
transports, new protocol bindings will need to be defined. We note though that this protocol is designed to allow some level
of reuse. In particular, we expect that the Workload Identity Token (WIT) construct will be reusable in other settings. The Workload Proof Token
(WPT) may be adaptable with some changes to different environments.</t>
      </section>
      <section anchor="deployment-architecture-and-message-flow">
        <name>Deployment Architecture and Message Flow</name>
        <t>Regardless of the transport between the workloads, we assume the following logical architecture
(numbers refer to the sequence of steps listed below):</t>
        <figure anchor="high-level-seq">
          <name>Sequence of Operations</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="352" viewBox="0 0 352 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,176" fill="none" stroke="black"/>
                <path d="M 8,272 L 8,352" fill="none" stroke="black"/>
                <path d="M 56,184 L 56,264" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,264" fill="none" stroke="black"/>
                <path d="M 112,32 L 112,176" fill="none" stroke="black"/>
                <path d="M 112,272 L 112,352" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,176" fill="none" stroke="black"/>
                <path d="M 240,272 L 240,352" fill="none" stroke="black"/>
                <path d="M 256,184 L 256,224" fill="none" stroke="black"/>
                <path d="M 272,144 L 272,176" fill="none" stroke="black"/>
                <path d="M 304,184 L 304,264" fill="none" stroke="black"/>
                <path d="M 344,32 L 344,176" fill="none" stroke="black"/>
                <path d="M 344,272 L 344,352" fill="none" stroke="black"/>
                <path d="M 8,32 L 112,32" fill="none" stroke="black"/>
                <path d="M 240,32 L 344,32" fill="none" stroke="black"/>
                <path d="M 120,62 L 232,62" fill="none" stroke="black"/>
                <path d="M 120,66 L 232,66" fill="none" stroke="black"/>
                <path d="M 120,110 L 232,110" fill="none" stroke="black"/>
                <path d="M 120,114 L 232,114" fill="none" stroke="black"/>
                <path d="M 272,144 L 344,144" fill="none" stroke="black"/>
                <path d="M 120,158 L 232,158" fill="none" stroke="black"/>
                <path d="M 120,162 L 232,162" fill="none" stroke="black"/>
                <path d="M 8,176 L 112,176" fill="none" stroke="black"/>
                <path d="M 240,176 L 344,176" fill="none" stroke="black"/>
                <path d="M 72,224 L 256,224" fill="none" stroke="black"/>
                <path d="M 8,272 L 112,272" fill="none" stroke="black"/>
                <path d="M 240,272 L 344,272" fill="none" stroke="black"/>
                <path d="M 8,352 L 112,352" fill="none" stroke="black"/>
                <path d="M 240,352 L 344,352" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="312,264 300,258.4 300,269.6" fill="black" transform="rotate(90,304,264)"/>
                <polygon class="arrowhead" points="312,184 300,178.4 300,189.6" fill="black" transform="rotate(270,304,184)"/>
                <polygon class="arrowhead" points="264,184 252,178.4 252,189.6" fill="black" transform="rotate(270,256,184)"/>
                <polygon class="arrowhead" points="240,112 228,106.4 228,117.6" fill="black" transform="rotate(0,232,112)"/>
                <polygon class="arrowhead" points="240,64 228,58.4 228,69.6" fill="black" transform="rotate(0,232,64)"/>
                <polygon class="arrowhead" points="128,160 116,154.4 116,165.6" fill="black" transform="rotate(180,120,160)"/>
                <polygon class="arrowhead" points="128,64 116,58.4 116,69.6" fill="black" transform="rotate(180,120,64)"/>
                <polygon class="arrowhead" points="80,264 68,258.4 68,269.6" fill="black" transform="rotate(90,72,264)"/>
                <polygon class="arrowhead" points="64,264 52,258.4 52,269.6" fill="black" transform="rotate(90,56,264)"/>
                <polygon class="arrowhead" points="64,184 52,178.4 52,189.6" fill="black" transform="rotate(270,56,184)"/>
                <g class="text">
                  <text x="176" y="52">(1)</text>
                  <text x="52" y="100">Workload</text>
                  <text x="96" y="100">A</text>
                  <text x="176" y="100">(3)</text>
                  <text x="284" y="100">Workload</text>
                  <text x="328" y="100">B</text>
                  <text x="176" y="148">(5)</text>
                  <text x="304" y="164">PEP</text>
                  <text x="168" y="212">(2)</text>
                  <text x="32" y="228">(2)</text>
                  <text x="328" y="228">(4)</text>
                  <text x="60" y="308">Identity</text>
                  <text x="288" y="308">PDP</text>
                  <text x="60" y="324">Server</text>
                  <text x="292" y="324">(optional)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+------------+               +------------+
|            |      (1)      |            |
|            |<=============>|            |
|            |               |            |
| Workload A |      (3)      | Workload B |
|            |==============>|            |
|            |               |            |
|            |      (5)      |   +--------+
|            |<==============|   |  PEP   |
+------------+               +---+--------+
      ^                        ^     ^
      |            (2)         |     |
  (2) | +----------------------+     | (4)
      | |                            |
      v v                            v
+------------+               +------------+
|            |               |            |
|  Identity  |               |    PDP     |
|   Server   |               | (optional) |
|            |               |            |
+------------+               +------------+
]]></artwork>
          </artset>
        </figure>
        <t>The Identity Server provisions credentials to each of the workloads. At least Workload A (and possibly both) must be provisioned
with a credential before the call can proceed. Details of communication with the Identity Server are out of scope
of this document, however we do describe the credential received by the workload.</t>
        <t>PEP is a Policy Enforcement Point, the component that allows the call to go through or blocks it. PDP is an optional
Policy Decision Point, which may be deployed in architectures where policy management is centralized. All details of
policy management and message authorization are out of scope of this document.</t>
        <t>The high-level message flow is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>A transport connection is set up. In the case of mutual TLS, this includes authentication of both workloads to
one another. In the case of application-level security, the TLS connection is typically one-way authenticated,
and workload-level authentication does not yet take place.</t>
          </li>
          <li>
            <t>Workload A (and similarly, Workload B) obtains a credential from the Identity Server. This happens periodically, e.g. once every 24 hours.</t>
          </li>
          <li>
            <t>Workload A makes an HTTP call into Workload B. This is a regular HTTP request, with the additional protection
mechanisms defined below.</t>
          </li>
          <li>
            <t>In the case of application-level security, Workload B authenticates Workload A (when using mutual TLS, this happened in step 1).
In either case, Workload B decides whether to authorize the call.
In certain architectures, Workload B may need to consult with an external server when making this decision.</t>
          </li>
          <li>
            <t>Workload B returns a response to Workload A, which may be an error response or a regular one.</t>
          </li>
        </ol>
      </section>
      <section anchor="granular-auth">
        <name>Workload Identifiers and Authentication Granularity</name>
        <t>The specific format of workload identifiers (see <xref target="I-D.ietf-wimse-arch"/>) is set by local policy for each deployment,
and this choice has several implications.</t>
        <t>Prior to WIMSE, many use cases did not allow for fully granular authentication in containerized runtime platforms.
For instance, with mutual TLS,
there's often no clear way to map the request's external access reference
(e.g., Kubernetes Ingress path, service name, or host header)
to the SubjectAltName value in the server certificate. This means that the client could only verify
if the server certificate is valid within a trust domain, not if it's tied to a specific workload.</t>
        <t>To enable mutual and granular authentication between workloads, two things must be in place:</t>
        <ul spacing="normal">
          <li>
            <t>Each workload must know its own identifier.</t>
          </li>
          <li>
            <t>There needs to be an explicit mapping from the external handle used to access a workload (such as an Ingress path or service DNS name)
to its workload identifier.</t>
          </li>
        </ul>
        <t>Once these conditions are met, the methods described in this document can be used for the caller and callee to mutually authenticate.</t>
        <t>Implementations <bcp14>MUST</bcp14> allow for defining this mapping between the workload's access path and the workload identifier (e.g., through
callback functions). Deployments <bcp14>SHOULD</bcp14> use these features to establish a consistent set of identifiers within their environment.</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="app-level">
      <name>Application Level Workload-to-Workload Authentication</name>
      <t>As noted in the Introduction, for many deployments communication between workloads cannot use
end-to-end TLS. For these deployment styles, application-level protections are required.</t>
      <t>Two alternative approaches for application-level protection are defined in companion documents, both using the
Workload Identity Token (<xref target="to-wit"/>) defined in this document. The first alternative <xref target="I-D.ietf-schwenkschuster-s2s-jwt-pop"/>
is inspired by the OAuth DPoP specification and uses Workload Proof Tokens. The second alternative
<xref target="I-D.ietf-schwenkschuster-s2s-http-sig"/> is based on HTTP Message Signatures. A comparison of the two alternatives
is provided in <xref target="profile-selection-guidance"/>.</t>
      <section anchor="to-wit">
        <name>The Workload Identity Token</name>
        <t>The Workload Identity Token (WIT) is a JWS <xref target="RFC7515"/> signed JWT <xref target="RFC7519"/> that represents the identity of a workload.
It is issued by the Identity Server and binds a public key to the workload identity. See <xref target="workload-identity-key-management"/> for security considerations.</t>
        <t>A WIT <bcp14>MUST</bcp14> contain the following claims, except where noted:</t>
        <ul spacing="normal">
          <li>
            <t>in the JOSE header:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>alg</tt>: An identifier for a JWS asymmetric digital signature algorithm
   (registered algorithm identifiers are listed in the IANA JOSE Algorithms registry <xref target="IANA.JOSE.ALGS"/>). The value <tt>none</tt> <bcp14>MUST NOT</bcp14> be used.</t>
              </li>
              <li>
                <t><tt>typ</tt>: the WIT is explicitly typed, as recommended in <xref section="3.11" sectionFormat="of" target="RFC8725"/>, using the <tt>wit+jwt</tt> media type.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>in the JWT claims:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>iss</tt>: The issuer of the token, which is the Identity Server, represented by a URI. The <tt>iss</tt> claim is <bcp14>RECOMMENDED</bcp14> but optional, see <xref target="wit-iss-note"/> for more.</t>
              </li>
              <li>
                <t><tt>sub</tt>: The subject of the token, which is the identity of the workload, represented by a URI. See <xref target="I-D.ietf-wimse-arch"/> for details of the Workload Identifier. And see <xref target="granular-auth"/> for security implications of these identifiers.</t>
              </li>
              <li>
                <t><tt>exp</tt>: The expiration time of the token (as defined in <xref section="4.1.4" sectionFormat="of" target="RFC7519"/>).
WITs should be refreshed regularly, e.g. on the order of hours.</t>
              </li>
              <li>
                <t><tt>jti</tt>: A unique identifier for the token. This claim is <bcp14>OPTIONAL</bcp14>. The <tt>jti</tt> claim is frequently useful for auditing issuance of individual WITs or to revoke them, but some token generation environments do not support it.</t>
              </li>
              <li>
                <t><tt>cnf</tt>: A confirmation claim referencing the public key of the workload.
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>jwk</tt>: Within the cnf claim, a <tt>jwk</tt> key <bcp14>MUST</bcp14> be present that contains the public key of the workload as defined in <xref section="3.2" sectionFormat="of" target="RFC7800"/>. The workload <bcp14>MUST</bcp14> prove possession of the corresponding private key when presenting the WIT to another party, which can be accomplished by using it in conjunction with one of the methods in <xref target="I-D.ietf-schwenkschuster-s2s-jwt-pop"/> or <xref target="I-D.ietf-schwenkschuster-s2s-http-sig"/>. As such, it <bcp14>MUST NOT</bcp14> be used as a bearer token and is not intended for use in the <tt>Authorization</tt> header.
                    </t>
                    <ul spacing="normal">
                      <li>
                        <t><tt>alg</tt>: Within the jwk object, an <tt>alg</tt> field <bcp14>MUST</bcp14> be present. Allowed values are listed in the IANA "JSON Web Signature and Encryption Algorithms" registry established by <xref target="RFC7518"/>. The presented proof (WPT or http-sig) <bcp14>MUST</bcp14> be produced with the algorithm specified in this field. The value <tt>none</tt> <bcp14>MUST NOT</bcp14> be used. Algorithms used in combination with symmetric keys <bcp14>MUST NOT</bcp14> be used. Also encryption algorithms <bcp14>MUST NOT</bcp14> be used as this would require additional key distribution outside of the WIT. To promote interoperability, the <tt>ES256</tt> signing algorithm <bcp14>MUST</bcp14> be supported by general purpose implementations of this document.</t>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>As noted in <xref target="I-D.ietf-wimse-arch"/>, a workload identifier is a URI with a trust domain component.
The runtime environment often determines which
URI scheme is used, e.g. if SPIFFE is used to authenticate workloads, it mandates "spiffe" URIs.
However for those deployments where this is not the case, this document (<xref target="iana-uri"/>)
defines the "wimse" URI scheme which can be used by any deployment that implements this protocol.</t>
        <t>An example WIT might look like this:</t>
        <figure anchor="example-wit">
          <name>An example Workload Identity Token (WIT)</name>
          <sourcecode type="jwt"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR5cCI6IndpdCtqd3QifQ.eyJjb\
mYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2IjoiRWQyNTUxOSIsImt0eSI6Ik9LU\
CIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0ptbEdXZUNIcVFWdW91Q0Y5MmJnI\
n19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUwODkxMCwianRpIjoieC1fMUNUT\
DJjY2EzQ1NFNGN3Yl9sIiwic3ViIjoid2ltc2U6Ly9leGFtcGxlLmNvbS9zcGVjaWZpY\
y13b3JrbG9hZCJ9.6KraSQUxWdl9dxFQ3Fj6dPY0Vi88OkwFwZpAIOhLeq6AbXAnLLQg\
Op8U9UDGcBuYF3KiNv6oKQD1ZWAzrMZOJw
]]></sourcecode>
        </figure>
        <t>The decoded JOSE header of the WIT from the example above is shown here:</t>
        <figure>
          <name>Example WIT JOSE Header</name>
          <sourcecode type="json"><![CDATA[
{
  "alg": "ES256",
  "kid": "June 5",
  "typ": "wit+jwt"
}
]]></sourcecode>
        </figure>
        <t>The decoded JWT claims of the WIT from the example above are shown here:</t>
        <figure>
          <name>Example WIT Claims</name>
          <sourcecode type="json"><![CDATA[
{
  "cnf": {
    "jwk": {
      "alg": "EdDSA",
      "crv": "Ed25519",
      "kty": "OKP",
      "x": "1CXXvflN_LVVsIsYXsUvB03JmlGWeCHqQVuouCF92bg"
    }
  },
  "exp": 1745512510,
  "iat": 1745508910,
  "jti": "x-_1CTL2cca3CSE4cwb_l",
  "sub": "wimse://example.com/specific-workload"
}
]]></sourcecode>
        </figure>
        <t>The claims indicate that the example WIT:</t>
        <ul spacing="normal">
          <li>
            <t>is valid until Thu Apr 24 2025 16:35:10 GMT (represented as NumericDate <xref section="2" sectionFormat="of" target="RFC7519"/> value <tt>1745512510</tt>).</t>
          </li>
          <li>
            <t>identifies the workload to which the token was issued as <tt>wimse://example.com/specific-workload</tt>.</t>
          </li>
          <li>
            <t>has a unique identifier of <tt>x-_1CTL2cca3CSE4cwb_l</tt>.</t>
          </li>
          <li>
            <t>binds the public key represented by the <tt>jwk</tt> confirmation method to the workload <tt>wimse://example.com/specific-workload</tt>.</t>
          </li>
          <li>
            <t>requires the proof to be produced with the <tt>EdDSA</tt> signature algorithm.</t>
          </li>
        </ul>
        <t>For elucidative purposes only, the workload's key, including the private part, is shown below in JWK <xref target="RFC7517"/> format:</t>
        <figure anchor="example-caller-jwk">
          <name>Example Workload's Key</name>
          <sourcecode type="jwk"><![CDATA[
{
 "kty": "OKP",
 "crv": "Ed25519",
 "x": "1CXXvflN_LVVsIsYXsUvB03JmlGWeCHqQVuouCF92bg",
 "d": "sdLX8yCYKqo_XvGBLn-ZWeKT7llYeeQpgeCaXVxb5kY"
}
]]></sourcecode>
        </figure>
        <t>The afore-exampled WIT is signed with the private key of the Identity Server.
The public key(s) of the Identity Server need to be known to all workloads in order to verify the signature of the WIT.
The Identity Server's public key from this example is shown below in JWK <xref target="RFC7517"/> format:</t>
        <figure>
          <name>Example Identity Server Key</name>
          <sourcecode type="jwk"><![CDATA[
{
 "kty": "EC",
 "kid": "June 5",
 "crv": "P-256",
 "x": "kXqnA2Op7hgd4zRMbw0iFcc_hDxUxhojxOFVGjE2gks",
 "y": "n__VndPMR021-59UAs0b9qDTFT-EZtT6xSNs_xFskLo"
}
]]></sourcecode>
        </figure>
        <section anchor="wit-http-header">
          <name>The WIT HTTP Header</name>
          <t>A WIT is conveyed in an HTTP header field named <tt>Workload-Identity-Token</tt>.</t>
          <t>ABNF <xref target="RFC5234"/> for the value of <tt>Workload-Identity-Token</tt> header field is provided in <xref target="wit-header-abnf"/>:</t>
          <figure anchor="wit-header-abnf">
            <name>Workload-Identity-Token Header Field ABNF</name>
            <sourcecode type="abnf"><![CDATA[
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9
base64url = 1*(ALPHA / DIGIT / "-" / "_")
JWT =  base64url "." base64url "." base64url
WIT =  JWT
]]></sourcecode>
          </figure>
          <t>The following shows the WIT from <xref target="example-wit"/> in an example of a <tt>Workload-Identity-Token</tt> header field:</t>
          <figure>
            <name>An example Workload Identity Token HTTP Header Field</name>
            <sourcecode type="http-message"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

Workload-Identity-Token: eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR\
5cCI6IndpdCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2Ijoi\
RWQyNTUxOSIsImt0eSI6Ik9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0pt\
bEdXZUNIcVFWdW91Q0Y5MmJnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUw\
ODkxMCwianRpIjoieC1fMUNUTDJjY2EzQ1NFNGN3Yl9sIiwic3ViIjoid2ltc2U6Ly9l\
eGFtcGxlLmNvbS9zcGVjaWZpYy13b3JrbG9hZCJ9.6KraSQUxWdl9dxFQ3Fj6dPY0Vi8\
8OkwFwZpAIOhLeq6AbXAnLLQgOp8U9UDGcBuYF3KiNv6oKQD1ZWAzrMZOJw
]]></sourcecode>
          </figure>
          <t>Note that per <xref target="RFC9110"/>, header field names are case insensitive;
thus, <tt>Workload-Identity-Token</tt>, <tt>workload-identity-token</tt>, <tt>WORKLOAD-IDENTITY-TOKEN</tt>,
etc., are all valid and equivalent header field names. However, case is significant in the header field value.</t>
        </section>
        <section anchor="add-claims">
          <name>Including Additional Claims</name>
          <t>The WIT contains JSON structures and therefore can be trivially extended by adding more claims beyond those defined in the current specification.
This, however, could result in interoperability issues, which the following rules are addressing.</t>
          <ul spacing="normal">
            <li>
              <t>To ensure interoperability in WIMSE environments, the use of Private claim names (Sec. 4.3 of <xref target="RFC7519"/>) is <bcp14>NOT RECOMMENDED</bcp14>.</t>
            </li>
            <li>
              <t>In closed environments, deployers <bcp14>MAY</bcp14> freely add claims to the WIT. Such claims <bcp14>SHOULD</bcp14> be collision-resistant, such as <tt>example.com/myclaim</tt>.</t>
            </li>
            <li>
              <t>A recipient that does not understand such claims <bcp14>MUST</bcp14> ignore them, as per Sec. 4 of <xref target="RFC7519"/>.</t>
            </li>
            <li>
              <t>Outside of closed environments, new claims <bcp14>MUST</bcp14> be registered with IANA <xref target="IANA.JWT.CLAIMS"/> before they can be used.</t>
            </li>
          </ul>
        </section>
        <section anchor="wit-iss-note">
          <name>A note on <tt>iss</tt> claim and key distribution</name>
          <t>It is <bcp14>RECOMMENDED</bcp14> that the WIT carries an <tt>iss</tt> claim. This specification itself does not make use of a potential <tt>iss</tt> claim but also carries the trust domain in the workload identifier (see <xref target="I-D.ietf-wimse-arch"/> for a definition
of the identifier and related rules). Implementations <bcp14>MAY</bcp14> include the <tt>iss</tt> claim in the form of a <tt>https</tt> URL to facilitate key distribution via mechanisms like the <tt>jwks_uri</tt> from <xref target="RFC8414"/> but alternative key distribution methods may make use of the trust domain included in the workload identifier which is carried in the mandatory <tt>sub</tt> claim.</t>
        </section>
      </section>
      <section anchor="profile-selection-guidance">
        <name>Profile Selection Guidance</name>
        <t>The two workload protection options defined in the companion documents <xref target="I-D.ietf-schwenkschuster-s2s-jwt-pop"/>
and <xref target="I-D.ietf-schwenkschuster-s2s-http-sig"/> have different strengths and weaknesses regarding implementation
complexity, extensibility, and security.
Here is a summary of the main differences between the DPoP-inspired approach and the HTTP Message Signatures approach.</t>
        <ul spacing="normal">
          <li>
            <t>The DPoP-inspired solution is less HTTP-specific, making it easier to adapt for
other protocols beyond HTTP. This flexibility is particularly valuable for
asynchronous communication scenarios, such as event-driven systems.</t>
          </li>
          <li>
            <t>Message Signatures, on the other hand, benefit from an existing HTTP-specific RFC with
some established implementations. This existing groundwork means that this option could
be simpler to deploy, to the extent such implementations are available and easily integrated.</t>
          </li>
          <li>
            <t>Given that the WIT (Workload Identity Token) is a type of JWT, the
DPoP-inspired approach that also uses JWT is less complex and technology-intensive than Message
Signatures. In contrast, Message Signatures introduce an additional layer of
technology, potentially increasing the complexity of the overall system.</t>
          </li>
          <li>
            <t>Message Signatures offer superior integrity protection, particularly by mitigating
message modification by middleboxes. See also <xref target="middleboxes"/>.</t>
          </li>
          <li>
            <t>A key advantage of Message Signatures is that they support response signing.
This opens up the possibility for future decisions about whether to make
response signing mandatory, allowing for flexibility in the specification
and/or in specific deployment scenarios.</t>
          </li>
          <li>
            <t>In general, Message Signatures provide greater flexibility compared to
the DPoP-inspired approach. Future versions of this draft (and subsequent implementations) can decide
whether specific aspects of message signing, such as coverage of particular fields,
should be mandatory or optional. Covering more fields will constrain the proof
so it cannot be easily reused in another context, which is often a security improvement. The DPoP inspired approach could
be designed to include extensibility to sign other fields, but this would make it closer to
trying to reinvent Message Signatures.</t>
          </li>
        </ul>
      </section>
      <section anchor="additional-profiles">
        <name>Additional Profiles</name>
        <t>The WIMSE architecture is designed to be extensible, allowing for additional authentication profiles to be defined as separate companion documents. While this document defines the foundational Workload Identity Token (WIT) and establishes the framework for application-level authentication, the current two profiles (JWT-based proof of possession and HTTP Message Signatures) represent initial approaches to address common deployment scenarios.</t>
        <t>When developing additional profiles, implementers <bcp14>SHOULD</bcp14> use the Workload Identity Token or Workload Identity Certificate as defined in this document as Workload Identity presentation.</t>
      </section>
      <section anchor="error-conditions">
        <name>Error Conditions</name>
        <t>Errors may occur during the processing of application-level authentication mechanisms defined in the companion documents. If 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 proof of possession mechanisms is not compatible with this specification.</t>
      </section>
      <section anchor="coexist">
        <name>Coexistence with JWT Bearer Tokens</name>
        <t>The WIT and the proof of possession mechanisms defined in the companion documents use 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="mutual-tls">
      <name>Using Mutual TLS for Workload-to-Workload Authentication</name>
      <t>As noted in the introduction, for many deployments, transport-level protection of application traffic using TLS is ideal.</t>
      <section anchor="to-wic">
        <name>The Workload Identity Certificate</name>
        <t>The Workload Identity Certificate is an X.509 certificate. The workload identity <bcp14>MUST</bcp14> be encoded in a SubjectAltName extension of type URI. There <bcp14>MUST</bcp14> be only one SubjectAltName extension of type URI in a Workload Identity Certificate. If the workload will act as a TLS server for clients that do not understand workload identities it is <bcp14>RECOMMENDED</bcp14> that the Workload Identity Certificate contain a SubjectAltName of type DNSName with the appropriate DNS names for the server. The certificate <bcp14>MAY</bcp14> contain SubjectAltName extensions of other types.</t>
      </section>
      <section anchor="wic-validation">
        <name>Workload Identity Certificate Validation</name>
        <t>Workload Identity Certificates may be used to authenticate both the server and client side of the connections.  When validating a Workload Identity Certificate, the relying party <bcp14>MUST</bcp14> use the trust anchors configured for the trust domain in the workload identity to validate the peer's certificate.  Other PKIX <xref target="RFC5280"/> path validation rules apply. Workloads acting as TLS clients and servers <bcp14>MUST</bcp14> validate that the trust domain portion of the Workload Identity Certificate matches the expected trust domain for the other side of the connection.</t>
        <t>Servers wishing to use the Workload Identity Certificate for authorizing the client <bcp14>MUST</bcp14> require client certificate authentication in the TLS handshake. Other methods of post handshake authentication are not specified by this document.</t>
        <t>Workload Identity Certificates used by TLS servers <bcp14>SHOULD</bcp14> have the <tt>id-kp-serverAuth</tt> extended key usage <xref target="RFC5280"/> field set and Workload Identity Certificates used by TLS clients <bcp14>SHOULD</bcp14> have the <tt>id-kp-clientAuth</tt> extended key usage field set. A certificate that is used for both client and server connections may have both fields set. This specification does not make any other requirements beyond <xref target="RFC5280"/> on the contents of Workload Identity Certificates or on the certification authorities that issue workload certificates.</t>
        <section anchor="server-name">
          <name>Server Name Validation</name>
          <t>If the WIMSE client uses a hostname to connect to the server and the server certificate contain a DNS SAN the client <bcp14>MUST</bcp14> perform standard host name validation (<xref section="6.3" sectionFormat="of" target="RFC9525"/>) unless it is configured with the additional information necessary to perform alternate validation of the peer's workload identity.
If the client did not perform standard host name validation then the WIMSE client <bcp14>SHOULD</bcp14> further use the workload identifier to validate the server.
The host portion of the workload identifier is NOT treated as a host name as specified in section 6.4 of <xref target="RFC9525"/> but rather as a trust domain. The server identity is encoded in the path portion of the workload identifier in a deployment specific way.
Validating the workload identity could be a simple match on the trust domain and path portions of the identifier or validation may be based on the specific details on how the identifier is constructed. The path portion of the WIMSE identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
In most cases it is preferable to validate the entire workload identifier, see <xref target="granular-auth"/> for additional implementation advice.</t>
        </section>
      </section>
      <section anchor="client-name">
        <name>Client Authorization Using the Workload Identity</name>
        <t>The server application retrieves the workload identifier from the client certificate subjectAltName, which in turn is obtained from the TLS layer. The identifier is used in authorization, accounting and auditing.
For example, the full workload identifier may be matched against ACLs to authorize actions requested by the peer and the identifier may be included in log messages to associate actions to the client workload for audit purposes.
A deployment may specify other authorization policies based on the specific details of how the workload identifier is constructed. The path portion of the workload identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
See <xref target="granular-auth"/> on additional security implications of workload identifiers.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="workload-identity">
        <name>Workload Identity</name>
        <t>The Workload Identifier is scoped within an issuer and therefore any sub-components (path portion of Identifier) are only unique within a trust domain defined by the issuer. Using a Workload Identifier without taking into account the trust domain could allow one domain to issue tokens to spoof identities in another domain. Additionally, the trust domain must be tied to an authorized issuer cryptographic trust anchor through some mechanism such as a JWKS or X.509 certificate chain. The association of an issuer, trust domain and a cryptographic trust anchor <bcp14>MUST</bcp14> be communicated securely out of band.</t>
      </section>
      <section anchor="workload-identity-token-and-proof-of-possession">
        <name>Workload Identity Token and Proof of Possession</name>
        <t>The Workload Identity Token (WIT) is bound to a secret cryptographic key and is always presented with a proof of possession as described in <xref target="to-wit"/>. 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 <xref target="server-name"/> <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="workload-identity-key-management">
        <name>Workload Identity Key Management</name>
        <t>Both the Workload Identity Token and the Workload Identity Certificate carry a public key. The corresponding private key:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST</bcp14> be kept private</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> be individual for each Workload Identifier (see <xref target="I-D.ietf-wimse-arch"/>)</t>
          </li>
          <li>
            <t><bcp14>MUST NOT</bcp14> be used once the credential is expired</t>
          </li>
          <li>
            <t><bcp14>SHOULD</bcp14> be re-generated for each new Workload Identity Token or Certificate.</t>
          </li>
        </ul>
      </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 <xref target="app-level"/> 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>WITs and the proofs of possession may contain private information such as user names or other identities. Care should be taken to prevent the disclosure of this information. The use of TLS helps protect the privacy of WITs and proofs of possession.</t>
        <t>WITs and certificates with workload identifiers are typically associated with a workload and not a specific user, however in some deployments the workload may be associated directly to a user. While these are exceptional cases a deployment should evaluate if the disclosure of WITs or certificates can be used to track a user.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="media-type-registration">
        <name>Media Type Registration</name>
        <t>IANA is requested to register the following entries to the "Media Types" registry <xref target="IANA.MEDIA.TYPES"/>:</t>
        <ul spacing="normal">
          <li>
            <t>application/wit+jwt, per <xref target="iana-wit"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wit">
          <name>application/wit+jwt</name>
          <t>Type name: application</t>
          <t>Subtype name: wit+jwt</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: Encoding considerations are identical to those specified for the "application/jwt" media type. See <xref target="RFC7519"/>.</t>
          <t>Security considerations: See the Security Considerations section of RFC XXX.</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: RFC XXX, <xref target="to-wit"/>.</t>
          <t>Applications that use this media type: Identity servers that vend Workload Identity Tokens, and Workloads that
use these tokens to authenticate to each other.</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <t>Deprecated alias names for this type: N/A</t>
          <t>Magic number(s): N/A</t>
          <t>File extension(s): None</t>
          <t>Macintosh file type code(s): N/A</t>
          <t>Person &amp; email address to contact for further information:</t>
          <t>See the Authors' Addresses section of RFC XXX.</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: See the Authors' Addresses section of RFC XXX.</t>
          <t>Change controller: Internet Engineering Task Force (iesg@ietf.org).</t>
        </section>
      </section>
      <section anchor="hypertext-transfer-protocol-http-field-name-registration">
        <name>Hypertext Transfer Protocol (HTTP) Field Name Registration</name>
        <t>IANA is requested to register the following entries to the "Hypertext Transfer Protocol (HTTP) Field Name Registry" <xref target="IANA.HTTP.FIELDS"/>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Workload-Identity-Token</tt>, per <xref target="iana-wit-field"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wit-field">
          <name>Workload-Identity-Token</name>
          <ul spacing="normal">
            <li>
              <t>Field Name: Workload-Identity-Token</t>
            </li>
            <li>
              <t>Status: permanent</t>
            </li>
            <li>
              <t>Structured Type: N/A</t>
            </li>
            <li>
              <t>Specification Document: RFC XXX, <xref target="wit-http-header"/></t>
            </li>
            <li>
              <t>Comments: see reference above for an ABNF syntax of this field</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="iana-uri">
        <name>URI Scheme Registration</name>
        <t>IANA is requested to register the "wimse" scheme to the "URI Schemes" registry <xref target="IANA.URI.SCHEMES"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Scheme name: wimse</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Applications/protocols that use this scheme name: the WIMSE workload-to-workload authentication protocol.</t>
          </li>
          <li>
            <t>Contact: IETF Chair <eref target="mailto:chair@ietf.org">chair@ietf.org</eref></t>
          </li>
          <li>
            <t>Change controller: IESG <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></t>
          </li>
          <li>
            <t>References: <xref target="app-level"/> of this document (RFC XXX).</t>
          </li>
        </ul>
      </section>
    </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>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </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.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="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-schwenkschuster-s2s-jwt-pop">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-schwenkschuster-s2s-http-sig">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </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>
      </references>
    </references>
    <?line 592?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-schwenkschuster-s2s-protocol-00">
        <name>draft-schwenkschuster-s2s-protocol-00</name>
        <ul spacing="normal">
          <li>
            <t>Rework the WPT's oth claim</t>
          </li>
          <li>
            <t>update the [media]typ[e] values</t>
          </li>
          <li>
            <t>Remove WPT and HTTP-SIG POP presentation</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 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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

-->

</rfc>
