<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-s2s-protocol-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="WIMSE W2W Auth">WIMSE Workload to Workload Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-s2s-protocol-03"/>
    <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="March" day="03"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 56?>

<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 70?>

<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. WIMSE 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 WIMSE WIT 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 containing the public key of the workload using the <tt>jwk</tt> member 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>
              </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.
eyJjbmYiOnsiandrIjp7ImNydiI6IkVkMjU1MTkiLCJrdHkiOiJPS1AiLCJ4Ijoiclp3V
UEwVHJIazRBWEs5MkY2Vll2bUhIWDN4VU0tSUdsck11VkNRaG04VSJ9fSwiZXhwIjoxNz
QwNzU4MzQ4LCJpYXQiOjE3NDA3NTQ3NDgsImp0aSI6IjRmYzc3ZmNlZjU3MWIzYmIzM2I
2NzJlYWYyMDRmYWY0Iiwic3ViIjoid2ltc2U6Ly9leGFtcGxlLmNvbS9zcGVjaWZpYy13
b3JrbG9hZCJ9.j-WlF3bufTwWeVZQntPhlzvSTPwf37-4wfazJZARdHYmW9S_olB5nKEq
wqTZpIX_LoVVIcyK0VBE7Fa0CMvw2g
]]></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": {
      "crv": "Ed25519",
      "kty": "OKP",
      "x": "rZwUA0TrHk4AXK92F6VYvmHHX3xUM-IGlrMuVCQhm8U"
    }
  },
  "exp": 1740758348,
  "iat": 1740754748,
  "jti": "4fc77fcef571b3bb33b672eaf204faf4",
  "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>
        </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": "rZwUA0TrHk4AXK92F6VYvmHHX3xUM-IGlrMuVCQhm8U",
 "d": "SFrq2PHwRyUGPbUxLVlNVq6XP4S2iklVo3GIBjlb6ZE"
}
]]></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": "aolos9KoHX-GeIO-TXhVg-D8BBzZtrHWMZt54SVwMQs",
 "y": "ouPmPL2f9U054ePXiaZ1-VxTvUhXssEbjWO8EAkM96s"
}
]]></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>For those who celebrate, 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 WIMSE 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 contains 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.</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>: A unique identifier for the token.</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
HM6Ly93b3JrbG9hZC5leGFtcGxlLmNvbS9wYXRoIiwiZXhwIjoxNzQwNzU1MDQ4LCJqdG
kiOiIwYzc0MDM4NmNhMWRjYWQzN2RlMWI1ZjlkZTFiMDcwNSIsInd0aCI6ImFBMFdfb0Z
KSzdxVjd6WWhjbXpSMUtPWFZDSGpkMng2YzRzT1FMdkU5MFkifQ.W9RZqieXeD-UgdtbY
f8ZNkf2_6_6b_kJSfkODQdq3_QDSSGOhVbRAR3qQoOu0SzihiG6HCsGwslfo4WdvnH5AQ
]]></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 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>Optionally, 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 WIMSE 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>Since the signing key is sent along with the message, the <tt>keyid</tt> parameter <bcp14>SHOULD NOT</bcp14> be used.</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>MAY</bcp14> reject a message (request or response) if a nonce is repeated.</t>
        <t>To promote interoperability, the <tt>ecdsa-p256-sha256</tt> signing algorithm <bcp14>MUST</bcp14> be implemented
by general purpose implementations of this document.</t>
        <t><cref>OPEN ISSUE: do we use the Accept-Signature field to signal that the response must be signed?</cref></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 WIMSE workload identity may be carried within an X.509 certificate.
The WIMSE 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 WIMSE certificate.
If the workload will act as a TLS server for clients that do not understand WIMSE workload
identities it is <bcp14>RECOMMENDED</bcp14> that the WIMSE 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>WIMSE certificates may be used to authenticate both the server and client side of the connections.  When validating a WIMSE certificate, the relying party <bcp14>MUST</bcp14> use the trust anchors configured for the trust domain in the WIMSE 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 WIMSE certificate matches the expected trust domain for the other side of the connection.</t>
      <t>Servers wishing to use the WIMSE 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 WIMSE certificates or on the certification authorities that issue WIMSE 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 WIMSE identity.
If the client did not perform standard host name validation then the WIMSE client <bcp14>SHOULD</bcp14> further use the WIMSE workload identifier to validate the server.
The host portion of the WIMSE 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 WIMSE workload identifier in a deployment specific way.
Validating the WIMSE 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 WIMSE Identity</name>
        <t>The server application retrieves the WIMSE 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 WIMSE 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 WIMSE 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>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="wimse-identity">
        <name>WIMSE Identity</name>
        <t>The WIMSE 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 WIMSE 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>
        <t><cref>TODO: Should there be a DNS name to trust domain mapping defined or some other discovery mechanism?</cref></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>Binding to a Timestamp or Nonce</t>
          </li>
        </ul>
        <t>A proof of possession should include information that can be used to uniquely identify it such as a unique timestamp or nonce.  This can 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. In this case, if the PoP is not sufficiently scoped it may be usable with another workload.
While a fresh nonce could be included in the PoP, a mechanism for distributing a fresh challenge nonce from the validator to provide single use properties of a PoP is outside the scope of this specification.</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 WIMSE 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 WIMSE 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="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="30" month="December" year="2024"/>
            <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 optionally immutably assert to downstream workloads that
   they were invoked in the call chain of the request.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-04"/>
        </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 722?>

<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-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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
DPgUcIjEpoQ7cyx72UlNpTbfnQYotQ3ZHibTlapEsWC3deoL4ARYFmjQQQfi
FjOcqaKEebwT4k6VGT5mAVLGrHWU61w4RTETNPCVI0R2BnvJf+yRh5WC+4Cq
oCoyrY1RhSXjMx07EjgC/hCAsof+TlpQnLDu8QyDEktepb2llDGGVR80QgGk
af1hkAVldDoekSM/yPQS3ahHS0SFLaDUTXiXJyt8RuG7waZK+2wSxePkCWkB
Y9z2oo1br9bVtr1dI0OENu3K7JJIGpVdX+UuGYLejRP2dpKWN0qCZ0xIJO8j
elkF59Sc2J+gwgqk7k4VBqvMFpfSNgPCke5UFhSQJgdgeBxHbh7zymUiLBQM
C7b/5mVYwIbNSY9osu2+qg0qU7kkO7TrA59MZE/J9OIYBLosIqU+Ym6RsJmH
phkGehAGjy6HXF1HKAyD/iCzwzh+AiZMOAQdL6OjUlphOgnG+YAI/FWxCaKK
ThemuRAMyK3XTXznSakSWQIm2shx2fcBv3gOa7YqewG4pOVPTwbdIze4CE4O
r7+1audBK20Ns9H9Xmuz9TSqdYfX/fMOPIsuN1x8Fnmj7sfz8PQ2fHpfH617
eyfbVezlsTu8Cy6iNIDBk9bjaKs1PJ96AfZy83T2eF07u3oKTvdOEu/4CUdr
d2pN/N5oPcaBG47Wb6zrg8nN8UnL+Xa5e3uQbpw93dVvwrDevR60bvfPGzfX
a1nn2kvdp1rt5un80jlaa9x0TrZ7nUlw/3EwgY6+nn+zPkzOv103zr59aEDv
o7uPH4KLx4P18/3m+vnVB/jbh/WN1pwOzOzxcnj3zV2/H56H94/X62e3rW93
w9a3s3rLqp9/Ownvbu+mZ/vQ6PZurRVMAnf9JsDpevUwc+vXm6fT7dA/Oszc
o6/h6fD8udvZ/uYe3Tw6t/eju2lt3equnyTdo+3BPULpsXIbHq53x72rya1/
c/8hytqD8Ntz56o96a1vVRqTnvPt5L556R3fDW+3O5/jcHcjen/wxZp8ubof
tT5+Po1vblru9P3aze7B1qGztnf2PKn3ddxbMAa1LRX0NrHtJc1LhcE9kLuI
zYZSkmdpXuUhMtWp00V2EJiedIVboB9a34GNLIHasbRjLx106hubS6v45Cnw
8MnJGDB2gx+BlF5SJzBEgC9ZP9TSZDUHBuHQDI9phjOT1yL+FXMn99niyQMz
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
FTrswyUWWN1NUSQvhiav5bUg/VVoaprgn+l8RdyTjZkHuoX0Z3hRNww+UYJx
zncXADrnuvOBHReAjZlUHHNktlZSJrgMyb8GNJ6xxm3YKE4LlhEpnyw14qsv
gPXfAtFfpfGXIWovo6m3w+44+P+QKytw2iEeXMTot4/Z/epQOcbCMYGzbwQ4
kfPhaRyw/TgiWV0pRkbb8yKjRYVgXgDz/uDy6sO8YOXH3Wm3vj00XQ4D76iP
L+1f7V+uW87wfnI9rF3cB7Xg/jA8uQvDs254t3G/fzO9uj7sXK57p7fX11/P
jr0bb320f3Y0OkGj/u7jzRMa9c7x5ZprHZ+hVW8Y7hvl8ODk7uNljC+WXA61
s31yOXzxjix0cLQmd9/ctbP9s8b58Hxwdnv5eHf74dt5/TI8u23V7h/Dp/ur
w+Bs352wf8Vbc3C9w8Pds0Ov1127t953vnlfbx69zdvbwWP346hzdp21bw/v
9ztHo6ezqF+/+3b57ap2eOY9XW+cHT4FvQ/V2+3L+y+B/9Hfr1z3vax7Z/Xe
3p8/9eqfNz9vdj8/nXR6Txf7H7wv658/7Hc6RxeDm+5l83L9y4f4YrzW+RYM
gqPN4730aJKGvbhx6z1HxxvND7MRylG2yLs9q4u/JjbZ/hdjk95+pzknEKkV
qRdiX+1fjUUunutPYpEgZ3Fqe6eNyWNvdDk871W63l2re3ca3Wx7G8lZ8/Jo
8v7uoLY2uZ5821t7bPGSQKNbMgrK6bQ4M1gzws5nIo0ba8Wg4poLj9ffbrpO
zXMdb33L82vdjd42/lnbWpNY7oTn6TTXbj/Hhyfvt77cbH27G7jDb5e19xcf
b/aOH7361023kV58OH0+2F67exm8eWhxJte5UJiHoh2UV6mUP+TVGt5gBBDb
4bSKUgzBcHtaxfoC7zAZ5GDH/v3T75xjMUnkVAoqFcBu7bdb23W79NI7y2pf
AEsnwNI039SqNes4xtp+83bA2kMpEmWVK6pRaCr1hAGFfJIde5fzUWqbn4dN
b+0omDj38dN1ffPz2vZavba29m/x2X6yFqd8vN5p+8l6Iefj1V7bT9ZLSR+v
ddt+sl7M+nil3/aT9XLax+sct5+sn+R9/MRzO88yL27vz8XhJ2uBQPwlefjJ
WiQRf0UgfrIWisRfkIifrMUy8fUi8ZP1glB8tUz8ZL0oFa3vS15sp9m411va
WRph+Qh/aREjJE53aXI6g8GR1InVuT0/N6tLhhZ/cYNRgIYD6Zx8IG+Ou+WK
3DkcdHUzPrD/OldTYdCqFMd6zZvaaNWF1yi7zQ/DCjqDWZyqDnF9uecmT/VI
52RHank7J6fSDEXLVNFnU1AzRk7igBZbVDjYQqA6V9rJQrHOshNG94tOltKo
qOg6mTtQnnbtVKHivOi/cjF53OkiMMLAIRcDZf+FyvxAc8aPe6uqT1MmWnbh
5BQON2F3E5XxAPOkD50hxNAyYocLwrzscZEFoMclz5tVBqgUdhJgkAOGDCnM
TsG4w8hJ6ZwmjJ4ah/GLLptxlAD+xxGsdGrZPSfRYYAxbXB+mivxH6mkl54V
ekzmz8oErWn5sCnG6GYGxove1PlhUhz2QnK3MWUFBnCf8hiNDnlz1CFPNFbQ
6PpUOYGqM1CRFxmXoADU53FCg940i8oIoIn3LBuocqipVKFHqf2E+zizlvYL
8IpmUmUB9PO8M7NTd3KozgcjLrhoIL5m+NzXMW/Q7H9oUO3EhK1GbJ816ynj
e45VX5ylxdOMf32alhnIqe+UQze76gzRwiJvvxWzlguRHY7QZK+Ko+BJIqoD
ZwZRsGyCgdPihZDylup8dX4e0i9VpsP2c+ZcjinlZerk1JgaPw+2aF9d3tQu
Jj8AwlMFIl1IyPDTUh8kvR7+zjG7B/qsStwye30oHFFdLco+PSem9nLnnM6e
4dlB8uTwYKbu/mA+2A/60Bc9KiaE4xNNCQ+vdPvhS4u4E6ypV9i3HKjlFf4M
cmkG+5c+GFD8MwBlHiT18wIA0OcVZOLpmgONmd8XrwlTjsiik3E5tV0tMS2v
LNcHtMTO16his7xKF8QN8AuaPckiP32wK6ZYKnr/5x9OEb+/GcMsVPuc4Cl6
dUA4xWIAGCQ1AtRYIkeOgEB3eBC5Emr0Hmc+V/3C0xbI6fBwlcsYljl9nG/O
nNCnFpSi7KrYVCkvQOWY6sxMswwuQL0TYPwHu6akBwAsxbkkgOngLPPUQkkS
4q14gIYBKDm5wpRXN8mPgs3LcYh1OgAVJUBlM99NPZhZobWKGK8LNFC9byr8
IdtME4r0Krij0AFrvxCl1/6CB824Kq0IQP9AqJY/fdAcgZdkddWBsweuJOFT
qZGiUo0VL7DKA+0bIr0cB2L/A4eEsHy41I5zhghaXYGWjzNLPUo8qq519yqq
+55P9YFVvbDEH4XOFIscmzp+804UJtJTueWy4nFGjaIVpEpHTRRVxBERSJUs
Cyy2gRktVKMHKwTLSRLZdd/1Uqcyqm9sVtKBA38eNObkIVVNhwpJfc/qTgUi
ocoEXojDRtmOvwDx9v560T44t1udzvXBDp6mmuRFupukM1f01ol5IZLPCXNt
TTNLVZaPGeHf/vKGhkAGpHgLmSXFszeF9DqRD6ZINR7yMKtGkJwTfbmKhTJZ
nlCFLtVnmE0MJvH57/ZWHR1c2W/6wXDoVwIXRgP2OPxbL3Se4+TdMzCrMHTK
bizTe6VhvWMTTbzbed/wekdRf3y40audNvbf73ZGGx/9w49xenr0+PZuuxdc
f1zbTE7fTLyLwz++rn+7+mTdDtPn97fB3dpuLT68dy6yYf3wOBn/cXf66D19
ceq3vb0P797tWCVSVWMuL4m8WrKXSpIKnpRSkz5ZKn9saeXPIg3e1bZqb+vb
tfWNrT+LUFCPNuEREce7JafrejX4t/TnzPlk9d8tLWamS4v9cM7RzeD+6Ga6
16/eHA1G7nQX/zfurn/o33V2p/e3h2nr+PLZqd+MP1mn/bjq1sOoOzxc8z6e
hHt9q+Qn6DCmiYeAnKVYAZcxS7BdJ+R0fdIDEKM8MkyKYhTQEKtPz8ueLubM
l1Pml/Z6zl3t48eKc3wy8qPL9tvm1XB9ehR23ffNzxlsyUVv8j4Jwsm0rzLm
l3pTt/O+UwmO7zev9mq755PzTfdgLb3Yba9XGu/7lxX/y9fzUTQdTOakSu/h
Gny7Lck5kiHdLBOeNpr+B/y8iirsxlrDPgcL7zAeRx76c6Xu4Q6YCsDZrKIa
tIOlrzAm926nsbV/8GH0+PZ4t+P88eaqNbz9Y+Nkzx9/8C+fhhvnZ6OT2/uj
9UFnfHj9yQL0L7qK0Up5A6w/iOZQ4flZchatfx20Nofb7dbb4fub3ig63vhy
eOQe9MaHX4O9Ybq70T4ZHD1eH1+92ThpfLI2a/WD+8nlZP2m8XTd6B+dDC/+
OLh8e7nX2D+rH7+/ubjb/wkVsgY5S3Oa4gB/eA2frAr6TfIHFY+ggxQstIxK
5iw941NNtwAVJtON9c23Jcrd2NxaMym3Dv+QcmfpFjjCf5NyB85tI/L2dp+7
w2ui2u608R4J9pNVINlz0HJcKqjqDLkuf3UhHTPicr6/vcc1F0RMUMKeTgIU
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

-->

</rfc>
