<?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.18 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-s2s-protocol-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="WIMSE S2S Auth">WIMSE Service to Service Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-s2s-protocol-00"/>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author fullname="Daniel Feldman">
      <organization>Independent</organization>
      <address>
        <email>dfeldman.mn@gmail.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>Microsoft</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="2024" month="August" day="15"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 60?>

<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. Service A can call
Service B with mutual TLS authentication, while the next call from Service B to Service 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 74?>

<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"/>.
Assume that Service A needs to call Service B. For simplicity, this document focuses on HTTP-based services,
and the service-to-service call consists of a single HTTP request and its response.
We define the credentials that both services 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 services, 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 services. 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 service deployment can include both architectures across a multi-chain call.
In other words, Service A can call Service B with mutual TLS protection,
while the next call to Service 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:</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="352" viewBox="0 0 352 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,128" fill="none" stroke="black"/>
              <path d="M 8,224 L 8,304" fill="none" stroke="black"/>
              <path d="M 56,136 L 56,216" fill="none" stroke="black"/>
              <path d="M 72,176 L 72,216" fill="none" stroke="black"/>
              <path d="M 112,32 L 112,128" fill="none" stroke="black"/>
              <path d="M 112,224 L 112,304" fill="none" stroke="black"/>
              <path d="M 240,32 L 240,128" fill="none" stroke="black"/>
              <path d="M 240,224 L 240,304" fill="none" stroke="black"/>
              <path d="M 256,136 L 256,176" fill="none" stroke="black"/>
              <path d="M 272,96 L 272,128" fill="none" stroke="black"/>
              <path d="M 304,136 L 304,216" fill="none" stroke="black"/>
              <path d="M 344,32 L 344,128" fill="none" stroke="black"/>
              <path d="M 344,224 L 344,304" 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,78 L 232,78" fill="none" stroke="black"/>
              <path d="M 120,82 L 232,82" fill="none" stroke="black"/>
              <path d="M 272,96 L 344,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 112,128" fill="none" stroke="black"/>
              <path d="M 240,128 L 344,128" fill="none" stroke="black"/>
              <path d="M 72,176 L 256,176" fill="none" stroke="black"/>
              <path d="M 8,224 L 112,224" fill="none" stroke="black"/>
              <path d="M 240,224 L 344,224" fill="none" stroke="black"/>
              <path d="M 8,304 L 112,304" fill="none" stroke="black"/>
              <path d="M 240,304 L 344,304" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="312,216 300,210.4 300,221.6" fill="black" transform="rotate(90,304,216)"/>
              <polygon class="arrowhead" points="312,136 300,130.4 300,141.6" fill="black" transform="rotate(270,304,136)"/>
              <polygon class="arrowhead" points="264,136 252,130.4 252,141.6" fill="black" transform="rotate(270,256,136)"/>
              <polygon class="arrowhead" points="240,80 228,74.4 228,85.6" fill="black" transform="rotate(0,232,80)"/>
              <polygon class="arrowhead" points="80,216 68,210.4 68,221.6" fill="black" transform="rotate(90,72,216)"/>
              <polygon class="arrowhead" points="64,216 52,210.4 52,221.6" fill="black" transform="rotate(90,56,216)"/>
              <polygon class="arrowhead" points="64,136 52,130.4 52,141.6" fill="black" transform="rotate(270,56,136)"/>
              <g class="text">
                <text x="284" y="68">Workload</text>
                <text x="328" y="68">B</text>
                <text x="52" y="84">Workload</text>
                <text x="96" y="84">A</text>
                <text x="304" y="116">PEP</text>
                <text x="60" y="260">Identity</text>
                <text x="288" y="260">PDP</text>
                <text x="60" y="276">Server</text>
                <text x="292" y="276">(optional)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+------------+               +------------+
|            |               |            |
|            |               | Workload B |
| Workload A |==============>|            |
|            |               |   +--------+
|            |               |   |  PEP   |
+------------+               +---+--------+
      ^                        ^     ^
      |                        |     |
      | +----------------------+     |
      | |                            |
      v v                            v
+------------+               +------------+
|            |               |            |
|  Identity  |               |    PDP     |
|   Server   |               | (optional) |
|            |               |            |
+------------+               +------------+
]]></artwork>
        </artset>
        <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>
        <ul spacing="normal">
          <li>
            <t>Workload A 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>Workload B now authenticates Workload A and decides whether to authorize the call.
In certain architectures, Workload B may need to consult with an external server to decide whether to accept the call.</t>
          </li>
          <li>
            <t>Workload B returns a response to Workload A, which may be an error response or a regular one.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>This document uses "service" and "workload" interchangeably. Otherwise, all terms are as defined by <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>
      <t>This document defines a workload identity as a URI <xref target="RFC3986"/>. This URI is used in the subject fields in the certificates and tokens defined later in this document. This specification treats the URI as opaque. The format of the URI and the namespace for the URI are at the discretion of the deployment at large. Other specifications may define specific URI structures for particular use cases. An example of a defined identity format is the <eref target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE-ID.md">SPIFFE ID</eref>.</t>
      <t>A workload identity only has meaning within the scope of a specific issuer. Two identities of the same value issued by different issuers may or may not refer to the same workload. In order to avoid collisions identity URIs <bcp14>SHOULD</bcp14> specify, in the URI's "authority" field, the trust domain associated with an issuer that is selected from a global name space such as host domains. However, the validator of an identity credential <bcp14>MUST</bcp14> make sure that they are using the correct issuer credential to verify the identity credential and that the issuer is trusted to issue tokens for the defined trust domain.</t>
    </section>
    <section anchor="app-level">
      <name>Application Level Service To Service 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.</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:</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.</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.</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[
eyJ0eXAiOiJ3aW1zZS1pZCtqd3QiLCJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSJ9.
eyJpc3MiOiJ3aW1zZTovL2V4YW1wbGUuY29tL3RydXN0ZWQtY2VudHJhbC1hdXRob3Jpd
HkiLCJleHAiOjE3MTc2MTI0NzAsInN1YiI6IndpbXNlOi8vZXhhbXBsZS5jb20vc3BlY2
lmaWMtd29ya2xvYWQiLCJqdGkiOiJ4LV8xQ1RMMmNjYTNDU0U0Y3diX18iLCJjbmYiOns
iandrIjp7Imt0eSI6Ik9LUCIsImNydiI6IkVkMjU1MTkiLCJ4IjoiX2FtUkMzWXJZYkho
SDFSdFlyTDhjU21URE1oWXRPVVRHNzhjR1RSNWV6ayJ9fX0.rOSUMR8I5WhM5C704l3iV
dY0zFqxhugJ8Jo2xo39G7FqUTbwTzAGdpz2lHp6eL1M486XmRgl3uyjj6R_iuzNOA
]]></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[
{
 "typ": "wimse-id+jwt",
 "alg": "ES256",
 "kid": "June 5"
}
]]></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[
{
 "iss": "wimse://example.com/trusted-central-authority",
 "exp": 1717612470,
 "sub": "wimse://example.com/specific-workload",
 "jti": "x-_1CTL2cca3CSE4cwb__",
 "cnf": {
  "jwk": {
   "kty": "OKP",
   "crv": "Ed25519",
   "x": "_amRC3YrYbHhH1RtYrL8cSmTDMhYtOUTG78cGTR5ezk"
  }
 }
}
]]></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":"_amRC3YrYbHhH1RtYrL8cSmTDMhYtOUTG78cGTR5ezk",
 "d":"G4lGAYFtFq5rwyjlgSIRznIoCF7MtKDHByyUUZCqLiA"
}
]]></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",
 "x":"kXqnA2Op7hgd4zRMbw0iFcc_hDxUxhojxOFVGjE2gks",
 "y":"n__VndPMR021-59UAs0b9qDTFT-EZtT6xSNs_xFskLo",
 "crv":"P-256"
}
]]></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 / "-" / "_")
WIT =  base64url "." base64url "." base64url
]]></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: eyJ0eXAiOiJ3aW1zZS1pZCtqd3QiLCJhbGciOiJFUzI1
 NiIsImtpZCI6Ikp1bmUgNSJ9.eyJpc3MiOiJ3aW1zZTovL2V4YW1wbGUuY29tL3RydXN
 0ZWQtY2VudHJhbC1hdXRob3JpdHkiLCJleHAiOjE3MTc2MTI0NzAsInN1YiI6IndpbXN
 lOi8vZXhhbXBsZS5jb20vc3BlY2lmaWMtd29ya2xvYWQiLCJqdGkiOiJ4LV8xQ1RMMmN
 jYTNDU0U0Y3diX18iLCJjbmYiOnsiandrIjp7Imt0eSI6Ik9LUCIsImNydiI6IkVkMjU
 1MTkiLCJ4IjoiX2FtUkMzWXJZYkhoSDFSdFlyTDhjU21URE1oWXRPVVRHNzhjR1RSNWV
 6ayJ9fX0.rOSUMR8I5WhM5C704l3iVdY0zFqxhugJ8Jo2xo39G7FqUTbwTzAGdpz2lHp
 6eL1M486XmRgl3uyjj6R_iuzNOA
]]></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>
      <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.
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>iss</tt>: The issuer of the token, which is the calling workload, represented by the same value as the <tt>sub</tt> claim
   of the associated WIT.</t>
              </li>
              <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>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. 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[
eyJ0eXAiOiJ3aW1zZS1wcm9vZitqd3QiLCJhbGciOiJFZERTQSJ9.eyJpc3MiOiJ3aW1z
ZTovL2V4YW1wbGUuY29tL3NwZWNpZmljLXdvcmtsb2FkIiwiYXVkIjoiaHR0cHM6Ly9zZ
XJ2aWNlLmV4YW1wbGUuY29tL3BhdGgiLCJleHAiOjE3MTc2MTI4MjAsImp0aSI6Il9fYn
djNEVTQzNhY2MyTFRDMS1feCIsImF0aCI6IkNMNHdqZnBSbU5mLWJkWUliWUxuVjlkNXJ
NQVJHd0tZRTEwd1V3ekMwakkifQ.Zq50mcIVTUykQhOBS7lyF93py3q5QOSPIbnI_oESv
j6zSTWi-p0QNNHpKeB4IAgmC8Mt3dBM_rufwCxiKHSmDA
]]></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[
{
 "typ": "wimse-proof+jwt",
 "alg": "EdDSA"
}
]]></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[
{
 "iss": "wimse://example.com/specific-workload",
 "aud": "https://service.example.com/path",
 "exp": 1717612820,
 "jti": "__bwc4ESC3acc2LTC1-_x",
 "ath": "CL4wjfpRmNf-bdYIbYLnV9d5rMARGwKYE10wUwzC0jI"
}
]]></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-message"><![CDATA[
POST /path HTTP/1.1
Host: service.example.com
Content-Type: application/json
Authorization: Bearer 16_mAd0GiwaZokU26_0902100
Workload-Identity-Token: eyJ0eXAiOiJ3aW1zZS1pZCtqd3QiLCJhbGciOiJFUzI1
 NiIsImtpZCI6Ikp1bmUgNSJ9.eyJpc3MiOiJ3aW1zZTovL2V4YW1wbGUuY29tL3RydXN
 0ZWQtY2VudHJhbC1hdXRob3JpdHkiLCJleHAiOjE3MTc2MTI0NzAsInN1YiI6IndpbXN
 lOi8vZXhhbXBsZS5jb20vc3BlY2lmaWMtd29ya2xvYWQiLCJqdGkiOiJ4LV8xQ1RMMmN
 jYTNDU0U0Y3diX18iLCJjbmYiOnsiandrIjp7Imt0eSI6Ik9LUCIsImNydiI6IkVkMjU
 1MTkiLCJ4IjoiX2FtUkMzWXJZYkhoSDFSdFlyTDhjU21URE1oWXRPVVRHNzhjR1RSNWV
 6ayJ9fX0.rOSUMR8I5WhM5C704l3iVdY0zFqxhugJ8Jo2xo39G7FqUTbwTzAGdpz2lHp
 6eL1M486XmRgl3uyjj6R_iuzNOA
Workload-Proof-Token: eyJ0eXAiOiJ3aW1zZS1wcm9vZitqd3QiLCJhbGciOiJFZER
 TQSJ9.eyJpc3MiOiJ3aW1zZTovL2V4YW1wbGUuY29tL3NwZWNpZmljLXdvcmtsb2FkIi
 wiYXVkIjoiaHR0cHM6Ly9zZXJ2aWNlLmV4YW1wbGUuY29tL3BhdGgiLCJleHAiOjE3MT
 c2MTI4MjAsImp0aSI6Il9fYndjNEVTQzNhY2MyTFRDMS1feCIsImF0aCI6IkNMNHdqZn
 BSbU5mLWJkWUliWUxuVjlkNXJNQVJHd0tZRTEwd1V3ekMwakkifQ.Zq50mcIVTUykQhO
 BS7lyF93py3q5QOSPIbnI_oESvj6zSTWi-p0QNNHpKeB4IAgmC8Mt3dBM_rufwCxiKHS
 mDA

{"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>iss</tt> claim of the WPT matches the <tt>sub</tt> claim of the WIT. (note: not sure <tt>iss</tt> in the WPT is useful or necessary)</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>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 specification 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-service-to-service</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 spec.</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-service-to-service"
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-service-t\
o-service"
Workload-Identity-Token: aGVhZGVyCg.VGhpcyBhaW4ndCBvbmUsIHRvby4K.c2l\
nbmF0dXJlCg

No ice cream today.

]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="mutual-tls">
      <name>Using Mutual TLS for Service To Service Authentication</name>
      <t>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.  The WIMSE certificate may contain SubjectAltName extensions of other types such as DNSName.</t>
      <t>WIMSE identities may be used to validate server and client connections.  When validating a WIMSE identity the relying party <bcp14>MUST</bcp14> validate that the CA issuer for the WIMSE identity is authorized to issue certificates for the trust domain of the WIMSE identity in the certificate. Other PKIX path validation rules apply.</t>
      <t>Servers wishing to use the WIMSE identity 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 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>
      <section anchor="host-name-validation">
        <name>Host Name Validation</name>
        <t><cref>TODO: need to define trust root used to validate the certificate is appropriate for the trust domain.</cref></t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that the server certificate contain a DNS SAN that the client can use to perform standard host name validation (<xref section="6.3" sectionFormat="of" target="RFC9525"/>).  The client <bcp14>SHOULD</bcp14> also extract the WIMSE identity from the certificate if it is present and validate that the WIMSE trust domain matches the intended trust domain for the server.  The client <bcp14>MAY</bcp14> then further use the WIMSE identity in applying authorization policy to the server.  If the client does not use the DNS SAN then the client <bcp14>MUST</bcp14> match the WIMSE identity in the certificate against the WIMSE identity of the workload of the intended server according to a locally defined policy. The host portion of the WIMSE URI 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 identity in a deployment specific way.</t>
      </section>
      <section anchor="authorization-using-the-wimse-identity">
        <name>Authorization Using the WIMSE Identity</name>
        <t>The client or server application may retrieve the WIMSE identity from the TLS layer for use in authorization, accounting and auditing.  For example, the full URI may be matched against ACLs and other policy constructs to authorize actions requested by the peer.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="wimse-identity">
        <name>WIMSE Identity</name>
        <t>The WIMSE ID is scoped within an issuer and therefore any sub-components (path portion of ID) are only unique within a trust domain defined by the issuer. Using a WIMSE ID 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 root through some mechanism such as a JWKS or X.509 certificate chain. The association of an issuer, trust domain and a cryptographic trust root <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-id-token-and-proof-of-possession">
        <name>Workload ID Token and Proof of Possession</name>
        <t>The Workload ID 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="middle-boxes">
        <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> 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="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="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">
         </author>
            <date day="8" month="July" year="2024"/>
            <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-01"/>
        </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>Microsoft</organization>
            </author>
            <date day="3" month="July" 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-03"/>
        </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 619?>

<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-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><cref>TODO acknowledge.</cref></t>
    </section>
  </back>
  <!-- ##markdown-source:
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
KoEAAA==

-->

</rfc>
