<?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.3.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-s2s-protocol-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="WIMSE Workload to Workload">WIMSE Workload to Workload Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-s2s-protocol-04"/>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author fullname="Joe Salowey">
      <organization>Venafi</organization>
      <address>
        <email>joe.salowey@gmail.com</email>
      </address>
    </author>
    <author fullname="Arndt Schwenkschuster">
      <organization>SPIRL</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="May" day="19"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 57?>

<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-ietf-wimse-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 71?>

<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 currently propose two alternative solutions, one inspired by DPoP <xref target="RFC9449"/> in <xref target="dpop-esque-auth"/> and
one which is a profile of HTTP Message Signatures <xref target="RFC9421"/> in <xref target="http-sig-auth"/>. The design team believes that we need to pick
one of these two alternatives for standardization, once we have understood their pros and cons.</t>
      <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>
    <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="whimsical-identity">
      <name>Workload Identity</name>
      <section anchor="trust-domain">
        <name>Trust Domain</name>
        <t>A trust domain is a logical grouping of systems that share a common set of security controls and policies. Workload certificates and tokens are issued under the authority of a trust domain. Trust domains <bcp14>SHOULD</bcp14> be identified by a fully qualified domain name belonging to the organization defining the trust domain.
A trust domain maps to one or more trust anchors for validating X.509 certificates and a mechanism to securely obtain a JWK Set <xref target="RFC7517"/> for validating Workload Identity Tokens. This mapping <bcp14>MUST</bcp14> be obtained through a secure mechanism that ensures the authenticity and integrity of the mapping is fresh and not compromised. This secure mechanism is out of scope for this document.</t>
        <t>A single organization may define multiple trust domains for different purposes such as different departments or environments. Each trust domain must have a unique identifier. Workload identifiers are scoped within a trust domain. If two identifiers differ only by trust domain they still refer to two different entities.</t>
      </section>
      <section anchor="workload-identifier">
        <name>Workload Identifier</name>
        <t>This document defines a workload identifier as a URI <xref target="RFC3986"/>. This URI is used in the subject fields in the certificates and tokens defined later in this document. The URI <bcp14>MUST</bcp14> meet the criteria for the URI type of Subject Alternative Name defined in Section 4.2.1.6 of <xref target="RFC5280"/>.</t>
        <ul empty="true">
          <li>
            <t>The name <bcp14>MUST NOT</bcp14> be a relative URI, and it <bcp14>MUST</bcp14> follow the URI syntax and
  encoding rules specified in <xref target="RFC3986"/>.  The name <bcp14>MUST</bcp14> include both a
  scheme and a scheme-specific-part.</t>
          </li>
        </ul>
        <t>In addition the URI <bcp14>MUST</bcp14> include an authority that identifies the trust domain within which the identifier is scoped. The trust domain <bcp14>SHOULD</bcp14> be a fully qualified domain name belonging to the organization defining the trust domain to help provide uniqueness for the trust domain identifier. The scheme and scheme specific part are not defined by this specification. An example of an identifier format that conforms to this definition is <eref target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE-ID.md">SPIFFE ID</eref>.
While the URI encoding rules allow host names to be specified as IP addresses, IP addresses <bcp14>MUST NOT</bcp14> be used to represent trust domains except in the case where they are needed for compatibility with existing naming schemes.</t>
      </section>
    </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, this document proposes application-level protections.</t>
      <t>The current version of the document includes two alternatives, both using the newly introduced
Workload Identity Token (<xref target="to-wit"/>). The first alternative (<xref target="dpop-esque-auth"/>) is inspired by the OAuth DPoP specification.
The second (<xref target="http-sig-auth"/>) is based on the HTTP Message Signatures RFC. We present both alternatives and expect
the working group to select one of them as this document progresses towards IETF consensus.
A comparison of the two alternatives is attempted in <xref target="app-level-comparison"/>.</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.
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>wimse-id+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.</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="dpop-esque-auth"/> or <xref target="http-sig-auth"/>. 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 algorithmns <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>An example WIT might look like this (all examples, of course, are non-normative and with line breaks and extra space for readability):</t>
        <figure anchor="example-wit">
          <name>An example Workload Identity Token (WIT)</name>
          <sourcecode type="jwt"><![CDATA[
eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR5cCI6IndpbXNlLWlkK2p3dCJ9.
eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2IjoiRWQyNTUxOSIsImt0eSI6I
k9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0ptbEdXZUNIcVFWdW91Q0Y5Mm
JnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUwODkxMCwianRpIjoiYmQyYTd
iNWJmODU3M2E0MWFkYjRjYmYzY2ZhMDFlMTUiLCJzdWIiOiJ3aW1zZTovL2V4YW1wbGUu
Y29tL3NwZWNpZmljLXdvcmtsb2FkIn0.xpODXCUhZ2zk-1-W3VEqbqWhBX6_OJIl7vtja
hgwJStMOCRn6J6is6f5mz-Pi5-Xk6FmV44k48NzulqMDVJbAw
]]></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": "wimse-id+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": "bd2a7b5bf8573a41adb4cbf3cfa01e15",
  "sub": "wimse://example.com/specific-workload"
}
]]></sourcecode>
        </figure>
        <t>The claims indicate that the example WIT:</t>
        <ul spacing="normal">
          <li>
            <t>was issued by an Identity Server known as <tt>wimse://example.com/trusted-central-authority</tt>.</t>
          </li>
          <li>
            <t>is valid until May 15, 2024 3:28:45 PM GMT-06:00 (represented as NumericDate <xref section="2" sectionFormat="of" target="RFC7519"/> value <tt>1717612470</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__</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": "Dy47KDeYao6kOhxSraJeJizjVxHjjo-9NsnrMqLyvOo",
 "y": "bj3s7bncoSYURzAzF0jBy0JOnnP5-5E11vx5QoYEFgk"
}
]]></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[
Workload-Identity-Token: eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR5
cCI6IndpbXNlLWlkK2p3dCJ9.eyJjbmYiOnsiandrIjp7ImNydiI6IkVkMjU1MTkiLCJr
dHkiOiJPS1AiLCJ4Ijoiclp3VUEwVHJIazRBWEs5MkY2Vll2bUhIWDN4VU0tSUdsck11V
kNRaG04VSJ9fSwiZXhwIjoxNzQwNzU4MzQ4LCJpYXQiOjE3NDA3NTQ3NDgsImp0aSI6Ij
RmYzc3ZmNlZjU3MWIzYmIzM2I2NzJlYWYyMDRmYWY0Iiwic3ViIjoid2ltc2U6Ly9leGF
tcGxlLmNvbS9zcGVjaWZpYy13b3JrbG9hZCJ9.j-WlF3bufTwWeVZQntPhlzvSTPwf37-
4wfazJZARdHYmW9S_olB5nKEqwqTZpIX_LoVVIcyK0VBE7Fa0CMvw2g
]]></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="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 (<xref target="workload-identifier"/>). 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="dpop-esque-auth">
        <name>Option 1: DPoP-Inspired Authentication</name>
        <t>This option, inspired by the OAuth DPoP specification <xref target="RFC9449"/>, uses a DPoP-like mechanism to authenticate
the calling workload in the context of the request. The Workload Identity Token (<xref target="to-wit"/>) is sent in the request as
described in <xref target="wit-http-header"/>. An additional JWT, the Workload Proof Token (WPT), is signed by the private key
corresponding to the public key in the WIT. The WPT is sent in the <tt>Workload-Proof-Token</tt> header field of the request.
The ABNF syntax of the <tt>Workload-Proof-Token</tt> header field is:</t>
        <figure anchor="wpt-header-abnf">
          <name>Workload-Proof-Token Header Field ABNF</name>
          <sourcecode type="abnf"><![CDATA[
WPT =  JWT
]]></sourcecode>
        </figure>
        <t>where the <tt>JWT</tt> projection is defined in <xref target="wit-header-abnf"/>.</t>
        <t>A WPT <bcp14>MUST</bcp14> contain the following:</t>
        <ul spacing="normal">
          <li>
            <t>in the JOSE header:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>alg</tt>: An identifier for an appropriate JWS asymmetric digital signature algorithm corresponding to
   the confirmation key in the associated WIT. The value <bcp14>MUST</bcp14> match the <tt>alg</tt> value of the <tt>jwk</tt> in the <tt>cnf</tt> claim of the WIT. See <xref target="to-wit"/> for valid values and restrictions.</t>
              </li>
              <li>
                <t><tt>typ</tt>: the WPT is explicitly typed, as recommended in <xref section="3.11" sectionFormat="of" target="RFC8725"/>,
   using the <tt>application/wimse-proof+jwt</tt> media type.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>in the JWT claims:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>aud</tt>: The audience of the token contains the HTTP target URI (<xref section="7.1" sectionFormat="of" target="RFC9110"/>) of the request
   to which the WPT is attached, without query or fragment parts.</t>
              </li>
              <li>
                <t><tt>exp</tt>: The expiration time of the WIT (as defined in <xref section="4.1.4" sectionFormat="of" target="RFC7519"/>). WPT lifetimes <bcp14>MUST</bcp14> be short,
   e.g., on the order of minutes or seconds.</t>
              </li>
              <li>
                <t><tt>jti</tt>: An identifier for the token. The value <bcp14>MUST</bcp14> be unique, at least within the scope of the sender.</t>
              </li>
              <li>
                <t><tt>wth</tt>: Hash of the Workload Identity Token, defined in <xref target="to-wit"/>. The value is the base64url encoding of the
   SHA-256 hash of the ASCII encoding of the token's value.</t>
              </li>
              <li>
                <t><tt>ath</tt>: Hash of the OAuth access token, if present in the request, which might convey end-user identity and
   authorization context of the request. The value, as per <xref section="4.1" sectionFormat="of" target="RFC9449"/>,
   is the base64url encoding of the SHA-256 hash of the ASCII encoding of the access token's value.</t>
              </li>
              <li>
                <t><tt>tth</tt>: Hash of the Txn-Token <xref target="I-D.ietf-oauth-transaction-tokens"/>, if present in the request,
   which might convey end-user identity and authorization context of the request. The value <bcp14>MUST</bcp14> be the result of
   a base64url encoding (as defined in <xref section="2" sectionFormat="of" target="RFC7515"/>) of the SHA-256 hash of
   the ASCII encoding of the associated token's value.</t>
              </li>
              <li>
                <t><tt>oth</tt>: Hash of any other token in the request that might convey end-user identity and authorization context of the
   request, if such a token exists.
   The value <bcp14>MUST</bcp14> be the result of a base64url encoding (as defined in <xref section="2" sectionFormat="of" target="RFC7515"/>) of the
   SHA-256 hash of the ASCII encoding of the associated token's value.
   (Note: this is less than ideal but seems we need something like this for extensibility.)</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>An example WPT might look like the following:</t>
        <figure anchor="example-wpt">
          <name>Example Workload Proof Token (WPT)</name>
          <sourcecode type="jwt"><![CDATA[
eyJhbGciOiJFZERTQSIsInR5cCI6IndpbXNlLXByb29mK2p3dCJ9.eyJhdGgiOiJDTDR3
amZwUm1OZi1iZFlJYllMblY5ZDVyTUFSR3dLWUUxMHdVd3pDMGpJIiwiYXVkIjoiaHR0c
HM6Ly93b3JrbG9hZC5leGFtcGxlLmNvbS9wYXRoIiwiZXhwIjoxNzQ1NTA5MjEwLCJqdG
kiOiJlMzI5YmI4Njk2YWE0YWVjYTA0ODg2ZGQ3NmU3OGIyNiIsInd0aCI6InJvN3hGT1N
HX2pZeG1VV2Z3ZXFrNVgxc2M2TDBzQ2o3NVdLVDkxZ014eFUifQ.oSegRTrBxuQN55oyW
RK5PnPEZLhgRy0Va7BpxBw-a64E3map15dbDo9ArRcJ8M4Z4QZ829CCppfnuaLIei1bBQ
]]></sourcecode>
        </figure>
        <t>The decoded JOSE header of the WPT from the example above is shown here:</t>
        <figure>
          <name>Example WPT JOSE Header</name>
          <sourcecode type="json"><![CDATA[
{
  "alg": "EdDSA",
  "typ": "wimse-proof+jwt"
}
]]></sourcecode>
        </figure>
        <t>The decoded JWT claims of the WPT from the example above are shown here:</t>
        <figure>
          <name>Example WPT Claims</name>
          <sourcecode type="json"><![CDATA[
{
  "ath": "CL4wjfpRmNf-bdYIbYLnV9d5rMARGwKYE10wUwzC0jI",
  "aud": "https://workload.example.com/path",
  "exp": 1740755048,
  "jti": "0c740386ca1dcad37de1b5f9de1b0705",
  "wth": "aA0W_oFJK7qV7zYhcmzR1KOXVCHjd2x6c4sOQLvE90Y"
}
]]></sourcecode>
        </figure>
        <t>An example of an HTTP request with both the WIT and WPT from prior examples is shown below:</t>
        <figure>
          <name>Example HTTP Request with WIT and WPT</name>
          <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

POST /path HTTP/1.1
Host: workload.example.com
Content-Type: application/json
Authorization: Bearer 16_mAd0GiwaZokU26_0902100
Workload-Identity-Token: eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR\
5cCI6IndpbXNlLWlkK2p3dCJ9.eyJjbmYiOnsiandrIjp7ImNydiI6IkVkMjU1MTkiLC\
JrdHkiOiJPS1AiLCJ4Ijoiclp3VUEwVHJIazRBWEs5MkY2Vll2bUhIWDN4VU0tSUdsck\
11VkNRaG04VSJ9fSwiZXhwIjoxNzQwNzU4MzQ4LCJpYXQiOjE3NDA3NTQ3NDgsImp0aS\
I6IjRmYzc3ZmNlZjU3MWIzYmIzM2I2NzJlYWYyMDRmYWY0Iiwic3ViIjoid2ltc2U6Ly\
9leGFtcGxlLmNvbS9zcGVjaWZpYy13b3JrbG9hZCJ9.j-WlF3bufTwWeVZQntPhlzvST\
Pwf37-4wfazJZARdHYmW9S_olB5nKEqwqTZpIX_LoVVIcyK0VBE7Fa0CMvw2g
Workload-Proof-Token: eyJhbGciOiJFZERTQSIsInR5cCI6IndpbXNlLXByb29mK2\
p3dCJ9.eyJhdGgiOiJDTDR3amZwUm1OZi1iZFlJYllMblY5ZDVyTUFSR3dLWUUxMHdVd\
3pDMGpJIiwiYXVkIjoiaHR0cHM6Ly93b3JrbG9hZC5leGFtcGxlLmNvbS9wYXRoIiwiZ\
XhwIjoxNzQwNzU1MDQ4LCJqdGkiOiIwYzc0MDM4NmNhMWRjYWQzN2RlMWI1ZjlkZTFiM\
DcwNSIsInd0aCI6ImFBMFdfb0ZKSzdxVjd6WWhjbXpSMUtPWFZDSGpkMng2YzRzT1FMd\
kU5MFkifQ.W9RZqieXeD-UgdtbYf8ZNkf2_6_6b_kJSfkODQdq3_QDSSGOhVbRAR3qQo\
Ou0SzihiG6HCsGwslfo4WdvnH5AQ

{"do stuff":"please"}
]]></sourcecode>
        </figure>
        <t>To validate the WPT in the request, the recipient <bcp14>MUST</bcp14> ensure the following:</t>
        <ul spacing="normal">
          <li>
            <t>There is exactly one <tt>Workload-Proof-Token</tt> header field in the request.</t>
          </li>
          <li>
            <t>The <tt>Workload-Proof-Token</tt> header field value is a single and well-formed JWT.</t>
          </li>
          <li>
            <t>The signature algorithm in the <tt>alg</tt> JOSE header string-equal matches the <tt>alg</tt> attribute of the <tt>jwk</tt> in the <tt>cnf</tt> claim of the WIT.</t>
          </li>
          <li>
            <t>The WPT signature is valid using the public key from the confirmation claim of the WIT.</t>
          </li>
          <li>
            <t>The <tt>typ</tt> JOSE header parameter of the WPT conveys a media type of <tt>wimse-proof+jwt</tt>.</t>
          </li>
          <li>
            <t>The <tt>aud</tt> claim of the WPT matches the target URI, or an acceptable alias or normalization thereof, of the HTTP request
 in which the WPT was received, ignoring any query and fragment parts.</t>
          </li>
          <li>
            <t>The <tt>exp</tt> claim is present and conveys a time that has not passed. WPTs with an expiration time unreasonably
 far in the future <bcp14>SHOULD</bcp14> be rejected.</t>
          </li>
          <li>
            <t>The <tt>wth</tt> claim is present and matches the hash of the token value conveyed in the <tt>Workload-Identity-Token</tt> header.</t>
          </li>
          <li>
            <t>It is <bcp14>RECOMMENDED</bcp14> to check that the value of the <tt>jti</tt> claim has not been used before in the time window in which the
 respective WPT would be considered valid.</t>
          </li>
          <li>
            <t>If presented in conjunction with an OAuth access token, the value of the <tt>ath</tt> claim matches the hash of that token's value.</t>
          </li>
          <li>
            <t>If presented in conjunction with a Txn-Token, the value of the <tt>tth</tt> claim matches the hash of that token's value.</t>
          </li>
          <li>
            <t>If presented in conjunction with a token conveying end-user identity or authorization context, the value of
 the <tt>oth</tt> claim matches the hash of that token's value.</t>
          </li>
        </ul>
      </section>
      <section anchor="http-sig-auth">
        <name>Option 2: Authentication Based on HTTP Message Signatures</name>
        <t>This option uses the Workload Identity Token (<xref target="to-wit"/>) to sign the request and optionally, the response.
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>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:
* <tt>keyid</tt> - The signing key is sent along with the message in the WIT. Additionally specifying the key identity would add confusion.
* <tt>alg</tt> - The signature algorithm is specified in the <tt>jwk</tt> section of the <tt>cnf</tt> claim in the WIT. See <xref target="to-wit"/> and Sec. 3.3.7 of <xref target="RFC9421"/> for details.</t>
        <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>Following is a non-normative example of a signed request and a signed response,
where the caller is using the keys specified in <xref target="example-caller-jwk"/>.</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=:K4dfGnguF5f1L4DKBSp5XeFXosLGj8Y9fiUX06rL/wdOF+x3zT\
WmsvKWiY0B1oFZaOtm2FHru+YLjdkqa2WfCQ==:
Signature-Input: wimse=("@method" "@request-target" "workload-identi\
ty-token");created=1718291357;expires=1718291657;nonce="abcd1111";ta\
g="wimse-workload-to-workload"
Workload-Identity-Token: aGVhZGVyCg.VGhpcyBpcyBub3QgYSByZWFsIHRva2Vu\
Lgo.c2lnbmF0dXJlCg

]]></sourcecode>
        </figure>
        <t>Assuming that the workload being called has the following keypair:</t>
        <figure>
          <name>Callee Private Key</name>
          <sourcecode type="jwk"><![CDATA[
{
 "kty":"OKP",
 "crv":"Ed25519",
 "x":"CfaY1XX-aHJpenRP8ATm3yGlbcKA_treqOfwKrilwyg",
 "d":"fycSKS-iHZ6TC1BNwN6cE0sOBP3-4KgR-eqxNpnyhws"
}
]]></sourcecode>
        </figure>
        <t>A signed response would be:</t>
        <figure>
          <name>Signed Response</name>
          <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

HTTP/1.1 404 Not Found
Connection: close
Content-Digest: sha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU\
=:
Content-Type: text/plain
Signature: wimse=:NMrMn3xhI6m9PI8mKVfpnH5qFGcEfuFxiCmsB5PJhGjUHT/5J4\
612EZwRw3V4kU4gGJmO+ER8RC4DM2HKVOYDQ==:
Signature-Input: wimse=("@status" "workload-identity-token" "content\
-type" "content-digest" "@method";req "@request-target";req);created\
=1718295368;expires=1718295670;nonce="abcd2222";tag="wimse-workload-\
to-workload"
Workload-Identity-Token: aGVhZGVyCg.VGhpcyBhaW4ndCBvbmUsIHRvby4K.c2l\
nbmF0dXJlCg

No ice cream today.

]]></sourcecode>
        </figure>
      </section>
      <section anchor="app-level-comparison">
        <name>Comparing the DPoP Inspired Option with Message Signatures</name>
        <t>The two workload protection options have different strengths and weaknesses regarding implementation
complexity, extensibility, and security.
Here is a summary of the main differences between
<xref target="dpop-esque-auth"/> and <xref target="http-sig-auth"/>.</t>
        <ul spacing="normal">
          <li>
            <t>The DPoP-inspired solution is less HTTP-specific, making it easier to adapt for
other protocols beyond HTTP. This flexibility is particularly valuable for
asynchronous communication scenarios, such as event-driven systems.</t>
          </li>
          <li>
            <t>Message Signatures, on the other hand, benefit from an existing HTTP-specific RFC with
some established implementations. This existing groundwork means that this option could
be simpler to deploy, to the extent such implementations are available and easily integrated.</t>
          </li>
          <li>
            <t>Given that the WIT (Workload Identity Token) is a type of JWT, the
DPoP-inspired approach that also uses JWT is less complex and technology-intensive than Message
Signatures. In contrast, Message Signatures introduce an additional layer of
technology, potentially increasing the complexity of the overall system.</t>
          </li>
          <li>
            <t>Message Signatures offer superior integrity protection, particularly by mitigating
message modification by middleboxes. See also <xref target="middleboxes"/>.</t>
          </li>
          <li>
            <t>A key advantage of Message Signatures is that they support response signing.
This opens up the possibility for future decisions about whether to make
response signing mandatory, allowing for flexibility in the specification
and/or in specific deployment scenarios.</t>
          </li>
          <li>
            <t>In general, Message Signatures provide greater flexibility compared to
the DPoP-inspired approach. Future versions of this draft (and subsequent implementations) can decide
whether specific aspects of message signing, such as coverage of particular fields,
should be mandatory or optional. Covering more fields will constrain the proof
so it cannot be easily reused in another context, which is often a security improvement. The DPoP inspired approach could
be designed to include extensibility to sign other fields, but this would make it closer to
trying to reinvent Message Signatures.</t>
          </li>
        </ul>
      </section>
      <section 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.</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="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>
      <t>In this solution, the workload identity may be carried within 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 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 certificate contain a SubjectAltName of type
DNSName with the appropriate DNS names for the server.
The certificate may contain SubjectAltName extensions of other types.</t>
      <t>Workload certificates may be used to authenticate both the server and client side of the connections.  When validating a workload 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. WIMSE clients and servers <bcp14>MUST</bcp14> validate that the trust domain portion of the workload certificate matches the expected trust domain for the other side of the connection.</t>
      <t>Servers wishing to use the workload 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>WIMSE server certificates <bcp14>SHOULD</bcp14> have the <tt>id-kp-serverAuth</tt> extended key usage <xref target="RFC5280"/> field set and WIMSE client certificates <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 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 information necessary to validate 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.</t>
      </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.</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="mutual-tls"/> <bcp14>MUST</bcp14> be performed. The WIT itself is not usable without a proof of possession.</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. Mitigations listed in the previous section can be used to provide some protection from middle boxes. 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>
      <t>TODO: maybe a URI Scheme registration of <tt>wimse</tt> in <eref target="https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml">URI schemes</eref> per <xref target="RFC7595"/> but it's only being used in an example right now and might not even be appropriate. Or maybe use an ietf URI scheme a la <eref target="https://www.iana.org/assignments/params/params.xhtml">URN Namespace for IETF Use</eref> somehow. Or maybe nothing. Or maybe something else.</t>
      <t>TODO: <tt>tth</tt>, <tt>wth</tt> and maybe <tt>oth</tt> claim in <eref target="https://www.iana.org/assignments/jwt/jwt.xhtml">JSON Web Token Claims Registry</eref></t>
      <section anchor="media-type-registration">
        <name>Media Type Registration</name>
        <t>TODO: <tt>application/wimse-id+jwt</tt> or appropriately bikeshedded media type name (despite my ongoing unease with using media types for typing JWTs) in <eref target="https://www.iana.org/assignments/media-types/media-types.xhtml">Media Types</eref>.</t>
        <t>TODO: <tt>application/wimse-proof+jwt</tt> ...</t>
      </section>
      <section anchor="hypertext-transfer-protocol-http-field-name-registration">
        <name>Hypertext Transfer Protocol (HTTP) Field Name Registration</name>
        <t>TODO: <tt>Workload-Identity-Token</tt> from <xref target="wit-http-header"/></t>
        <t>TODO: <tt>Workload-Proof-Token</tt> from <xref target="dpop-esque-auth"/></t>
      </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="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="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="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="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.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="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>Venafi</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="2" month="March" 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-04"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-transaction-tokens">
          <front>
            <title>Transaction Tokens</title>
            <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale">
              <organization>SGNL</organization>
            </author>
            <author fullname="George Fletcher" initials="G." surname="Fletcher">
              <organization>Capital One</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</organization>
            </author>
            <date day="3" month="March" year="2025"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) enable workloads in a trusted domain
   to ensure that user identity and authorization context of an external
   programmatic request, such as an API invocation, are preserved and
   available to all workloads that are invoked as part of processing
   such a request.  Txn-Tokens also enable workloads within the trusted
   domain to initiate transactions with protected user identity an
   authorization context throughout the call chain of the workloads
   required to complete the request.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-05"/>
        </reference>
        <reference anchor="RFC7595">
          <front>
            <title>Guidelines and Registration Procedures for URI Schemes</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>This document updates the guidelines and recommendations, as well as the IANA registration processes, for the definition of Uniform Resource Identifier (URI) schemes. It obsoletes RFC 4395.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="35"/>
          <seriesInfo name="RFC" value="7595"/>
          <seriesInfo name="DOI" value="10.17487/RFC7595"/>
        </reference>
      </references>
    </references>
    <?line 725?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <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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
vafPrerwuFNuGSd3lcmDe1y+va08VB/ujqLW7eDFrjQrnYO916tKWG3dOue3
B6OXh1K55h7deP2rYth2B9edaO9letXa2AjnXeP6bOMyuDx8OB8OruelW2tr
b/KyNytYm7XD6tialDec3kG4U4+u7dPtZu2hdvWwXdnZ359M+sHUOm+4Xrm3
d7UYr50kb/niF+2Jj0RqL/9gpFYFNLNhWaWFvRPzu/zZyOzbc/2dyCzIWZza
/nlt9tSfXI9b/ULPuW/07s+D2x1nI2rWr49nZ/eH5dLsZva6X3pq8JJAHVzR
akyq/DA9SDXBzrMR1tLWxkaptq0HU0s2PK5ub9pW2bEtp7rluOXeRn8H/5S2
SiKYOuN5WvVS92t4dHq29e126/V+aI9fr8tnF3e3+ydPTuVl067FF1fnz4c7
pfv3wZuGVBcOOmQKdFFshpKqpeaIvFrBG4wYYjucd5KLeGjeWyNbZ+QzJuoc
7pq/fvmVk1BmkTiShkoFsFtze2unYuZe+mwYlxfA0gmwNM1P5WLZOAmx3Oey
HTD2UYoESaFDZUt1i4AwIJP2tWvucdpYefPruO6Ujr2Z9RCObiqbX0s7pUq5
VPq3uJ6/GG/nxHzc9/zFOI3+uPP5i1Eu3/5h7/MXA/3Pf9T9/MXYyfP1f8H/
/MVgD/S/6oBe5l3Ibu/vi8MvxhsC8afk4RfjLYn4MwLxi5HdznLzgLYTRCIi
T2MGm1ZqHjRrrXFr2OxeP913r15blWsfNrD88OSPHjpHXvOLcWDPGH+FTBwf
7TWPnH6v9HDWfnVebp+czW53+NS7m7SbN8ll9+jhoH08GTWDQeX+9fq1Uz5q
wopGNxvNoxEKxe7O9cM3z71zDwo3Ayfp3fe3H1qjfuXr5tfN3tfRabs/uji4
cr5Vv14dtNvHF8Pb3nX9uvrtKvxiXExL7Vdv6B1vnuzHx7PY74e1rvMcnGzU
rwzj+4oTmnEy7fdXdlcmaCW6K28xQuJ01zqn0xgcSZ1QHt51U5s8Z2jxF9ub
eGg4kM7Jp3GXuIs65JLiELGdcOGOj7nLMoMWRZG8j7ypjFZVgJHS/1zfL6BP
m8Wp7HCZ10l6gMhDpOsJ6NUJBgUXj/+xK0l46LmplbDL+qccSmIeCOd0Lmmq
TbwkQ1vJ/SWJ3Ys9k+Mps4yJFVmgTWcVH7ZUqO6e8hRR6DjvSVL9oqcoN+pl
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

-->

</rfc>
