<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-s2s-protocol-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="WIMSE Workload-to-Workload">WIMSE Workload-to-Workload Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-s2s-protocol-07"/>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author fullname="Joe Salowey">
      <organization>CyberArk</organization>
      <address>
        <email>joe@salowey.net</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="October" day="16"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 61?>

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

<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="extending-this-protocol-to-other-use-cases">
        <name>Extending This Protocol to Other Use Cases</name>
        <t>The protocol defined here is narrowly scoped, targeting only HTTP-based request/response services. To secure workloads communicating over other
transports, new protocol bindings will need to be defined. We note though that this protocol is designed to allow some level
of reuse. In particular, we expect that the Workload Identity Token (WIT) construct will be reusable in other settings. The Workload Proof Token
(WPT) may be adaptable with some changes to different environments.</t>
      </section>
      <section anchor="deployment-architecture-and-message-flow">
        <name>Deployment Architecture and Message Flow</name>
        <t>Regardless of the transport between the workloads, we assume the following logical architecture
(numbers refer to the sequence of steps listed below):</t>
        <figure anchor="high-level-seq">
          <name>Sequence of Operations</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="352" viewBox="0 0 352 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,176" fill="none" stroke="black"/>
                <path d="M 8,272 L 8,352" fill="none" stroke="black"/>
                <path d="M 56,184 L 56,264" fill="none" stroke="black"/>
                <path d="M 72,224 L 72,264" fill="none" stroke="black"/>
                <path d="M 112,32 L 112,176" fill="none" stroke="black"/>
                <path d="M 112,272 L 112,352" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,176" fill="none" stroke="black"/>
                <path d="M 240,272 L 240,352" fill="none" stroke="black"/>
                <path d="M 256,184 L 256,224" fill="none" stroke="black"/>
                <path d="M 272,144 L 272,176" fill="none" stroke="black"/>
                <path d="M 304,184 L 304,264" fill="none" stroke="black"/>
                <path d="M 344,32 L 344,176" fill="none" stroke="black"/>
                <path d="M 344,272 L 344,352" fill="none" stroke="black"/>
                <path d="M 8,32 L 112,32" fill="none" stroke="black"/>
                <path d="M 240,32 L 344,32" fill="none" stroke="black"/>
                <path d="M 120,62 L 232,62" fill="none" stroke="black"/>
                <path d="M 120,66 L 232,66" fill="none" stroke="black"/>
                <path d="M 120,110 L 232,110" fill="none" stroke="black"/>
                <path d="M 120,114 L 232,114" fill="none" stroke="black"/>
                <path d="M 272,144 L 344,144" fill="none" stroke="black"/>
                <path d="M 120,158 L 232,158" fill="none" stroke="black"/>
                <path d="M 120,162 L 232,162" fill="none" stroke="black"/>
                <path d="M 8,176 L 112,176" fill="none" stroke="black"/>
                <path d="M 240,176 L 344,176" fill="none" stroke="black"/>
                <path d="M 72,224 L 256,224" fill="none" stroke="black"/>
                <path d="M 8,272 L 112,272" fill="none" stroke="black"/>
                <path d="M 240,272 L 344,272" fill="none" stroke="black"/>
                <path d="M 8,352 L 112,352" fill="none" stroke="black"/>
                <path d="M 240,352 L 344,352" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="312,264 300,258.4 300,269.6" fill="black" transform="rotate(90,304,264)"/>
                <polygon class="arrowhead" points="312,184 300,178.4 300,189.6" fill="black" transform="rotate(270,304,184)"/>
                <polygon class="arrowhead" points="264,184 252,178.4 252,189.6" fill="black" transform="rotate(270,256,184)"/>
                <polygon class="arrowhead" points="240,112 228,106.4 228,117.6" fill="black" transform="rotate(0,232,112)"/>
                <polygon class="arrowhead" points="240,64 228,58.4 228,69.6" fill="black" transform="rotate(0,232,64)"/>
                <polygon class="arrowhead" points="128,160 116,154.4 116,165.6" fill="black" transform="rotate(180,120,160)"/>
                <polygon class="arrowhead" points="128,64 116,58.4 116,69.6" fill="black" transform="rotate(180,120,64)"/>
                <polygon class="arrowhead" points="80,264 68,258.4 68,269.6" fill="black" transform="rotate(90,72,264)"/>
                <polygon class="arrowhead" points="64,264 52,258.4 52,269.6" fill="black" transform="rotate(90,56,264)"/>
                <polygon class="arrowhead" points="64,184 52,178.4 52,189.6" fill="black" transform="rotate(270,56,184)"/>
                <g class="text">
                  <text x="176" y="52">(1)</text>
                  <text x="52" y="100">Workload</text>
                  <text x="96" y="100">A</text>
                  <text x="176" y="100">(3)</text>
                  <text x="284" y="100">Workload</text>
                  <text x="328" y="100">B</text>
                  <text x="176" y="148">(5)</text>
                  <text x="304" y="164">PEP</text>
                  <text x="168" y="212">(2)</text>
                  <text x="32" y="228">(2)</text>
                  <text x="328" y="228">(4)</text>
                  <text x="60" y="308">Identity</text>
                  <text x="288" y="308">PDP</text>
                  <text x="60" y="324">Server</text>
                  <text x="292" y="324">(optional)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+------------+               +------------+
|            |      (1)      |            |
|            |<=============>|            |
|            |               |            |
| Workload A |      (3)      | Workload B |
|            |==============>|            |
|            |               |            |
|            |      (5)      |   +--------+
|            |<==============|   |  PEP   |
+------------+               +---+--------+
      ^                        ^     ^
      |            (2)         |     |
  (2) | +----------------------+     | (4)
      | |                            |
      v v                            v
+------------+               +------------+
|            |               |            |
|  Identity  |               |    PDP     |
|   Server   |               | (optional) |
|            |               |            |
+------------+               +------------+
]]></artwork>
          </artset>
        </figure>
        <t>The Identity Server provisions credentials to each of the workloads. At least Workload A (and possibly both) must be provisioned
with a credential before the call can proceed. Details of communication with the Identity Server are out of scope
of this document, however we do describe the credential received by the workload.</t>
        <t>PEP is a Policy Enforcement Point, the component that allows the call to go through or blocks it. PDP is an optional
Policy Decision Point, which may be deployed in architectures where policy management is centralized. All details of
policy management and message authorization are out of scope of this document.</t>
        <t>The high-level message flow is as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>A transport connection is set up. In the case of mutual TLS, this includes authentication of both workloads to
one another. In the case of application-level security, the TLS connection is typically one-way authenticated,
and workload-level authentication does not yet take place.</t>
          </li>
          <li>
            <t>Workload A (and similarly, Workload B) obtains a credential from the Identity Server. This happens periodically, e.g. once every 24 hours.</t>
          </li>
          <li>
            <t>Workload A makes an HTTP call into Workload B. This is a regular HTTP request, with the additional protection
mechanisms defined below.</t>
          </li>
          <li>
            <t>In the case of application-level security, Workload B authenticates Workload A (when using mutual TLS, this happened in step 1).
In either case, Workload B decides whether to authorize the call.
In certain architectures, Workload B may need to consult with an external server when making this decision.</t>
          </li>
          <li>
            <t>Workload B returns a response to Workload A, which may be an error response or a regular one.</t>
          </li>
        </ol>
      </section>
      <section anchor="granular-auth">
        <name>Workload Identifiers and Authentication Granularity</name>
        <t>The specific format of workload identifiers (see <xref target="I-D.ietf-wimse-arch"/>) is set by local policy for each deployment,
and this choice has several implications.</t>
        <t>Prior to WIMSE, many use cases did not allow for fully granular authentication in containerized runtime platforms.
For instance, with mutual TLS,
there's often no clear way to map the request's external access reference
(e.g., Kubernetes Ingress path, service name, or host header)
to the SubjectAltName value in the server certificate. This means that the client could only verify
if the server certificate is valid within a trust domain, not if it's tied to a specific workload.</t>
        <t>To enable mutual and granular authentication between workloads, two things must be in place:</t>
        <ul spacing="normal">
          <li>
            <t>Each workload must know its own identifier.</t>
          </li>
          <li>
            <t>There needs to be an explicit mapping from the external handle used to access a workload (such as an Ingress path or service DNS name)
to its workload identifier.</t>
          </li>
        </ul>
        <t>Once these conditions are met, the methods described in this document can be used for the caller and callee to mutually authenticate.</t>
        <t>Implementations <bcp14>MUST</bcp14> allow for defining this mapping between the workload's access path and the workload identifier (e.g., through
callback functions). Deployments <bcp14>SHOULD</bcp14> use these features to establish a consistent set of identifiers within their environment.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>All terminology in this document follows <xref target="I-D.ietf-wimse-arch"/>.</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="app-level">
      <name>Application Level Workload-to-Workload Authentication</name>
      <t>As noted in the Introduction, for many deployments communication between workloads cannot use
end-to-end TLS. For these deployment styles, 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. See <xref target="workload-identity-key-management"/> for security considerations.</t>
        <t>A WIT <bcp14>MUST</bcp14> contain the following claims, except where noted:</t>
        <ul spacing="normal">
          <li>
            <t>in the JOSE header:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>alg</tt>: An identifier for a JWS asymmetric digital signature algorithm
   (registered algorithm identifiers are listed in the IANA JOSE Algorithms registry <xref target="IANA.JOSE.ALGS"/>). The value <tt>none</tt> <bcp14>MUST NOT</bcp14> be used.</t>
              </li>
              <li>
                <t><tt>typ</tt>: the WIT is explicitly typed, as recommended in <xref section="3.11" sectionFormat="of" target="RFC8725"/>, using the <tt>wit+jwt</tt> media type.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>in the JWT claims:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>iss</tt>: The issuer of the token, which is the Identity Server, represented by a URI. The <tt>iss</tt> claim is <bcp14>RECOMMENDED</bcp14> but optional, see <xref target="wit-iss-note"/> for more.</t>
              </li>
              <li>
                <t><tt>sub</tt>: The subject of the token, which is the identity of the workload, represented by a URI. See <xref target="I-D.ietf-wimse-arch"/> for details of the Workload Identifier. And see <xref target="granular-auth"/> for security implications of these identifiers.</t>
              </li>
              <li>
                <t><tt>exp</tt>: The expiration time of the token (as defined in <xref section="4.1.4" sectionFormat="of" target="RFC7519"/>).
WITs should be refreshed regularly, e.g. on the order of hours.</t>
              </li>
              <li>
                <t><tt>jti</tt>: A unique identifier for the token. This claim is <bcp14>OPTIONAL</bcp14>. The <tt>jti</tt> claim is frequently useful for auditing issuance of individual WITs or to revoke them, but some token generation environments do not support it.</t>
              </li>
              <li>
                <t><tt>cnf</tt>: A confirmation claim referencing the public key of the workload.
                </t>
                <ul spacing="normal">
                  <li>
                    <t><tt>jwk</tt>: Within the cnf claim, a <tt>jwk</tt> key <bcp14>MUST</bcp14> be present that contains the public key of the workload as defined in <xref section="3.2" sectionFormat="of" target="RFC7800"/>. The workload <bcp14>MUST</bcp14> prove possession of the corresponding private key when presenting the WIT to another party, which can be accomplished by using it in conjunction with one of the methods in <xref target="dpop-esque-auth"/> or <xref target="http-sig-auth"/>. As such, it <bcp14>MUST NOT</bcp14> be used as a bearer token and is not intended for use in the <tt>Authorization</tt> header.
                    </t>
                    <ul spacing="normal">
                      <li>
                        <t><tt>alg</tt>: Within the jwk object, an <tt>alg</tt> field <bcp14>MUST</bcp14> be present. Allowed values are listed in the IANA "JSON Web Signature and Encryption Algorithms" registry established by <xref target="RFC7518"/>. The presented proof (WPT or http-sig) <bcp14>MUST</bcp14> be produced with the algorithm specified in this field. The value <tt>none</tt> <bcp14>MUST NOT</bcp14> be used. Algorithms used in combination with symmetric keys <bcp14>MUST NOT</bcp14> be used. Also encryption algorithms <bcp14>MUST NOT</bcp14> be used as this would require additional key distribution outside of the WIT. To promote interoperability, the <tt>ES256</tt> signing algorithm <bcp14>MUST</bcp14> be supported by general purpose implementations of this document.</t>
                      </li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        <t>As noted in <xref target="I-D.ietf-wimse-arch"/>, a workload identifier is a URI with a trust domain component.
The runtime environment often determines which
URI scheme is used, e.g. if SPIFFE is used to authenticate workloads, it mandates "spiffe" URIs.
However for those deployments where this is not the case, this document (<xref target="iana-uri"/>)
defines the "wimse" URI scheme which can be used by any deployment that implements this protocol.</t>
        <t>An example WIT might look like this:</t>
        <figure anchor="example-wit">
          <name>An example Workload Identity Token (WIT)</name>
          <sourcecode type="jwt"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

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

Workload-Identity-Token: eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR\
5cCI6IndpdCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2Ijoi\
RWQyNTUxOSIsImt0eSI6Ik9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0pt\
bEdXZUNIcVFWdW91Q0Y5MmJnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUw\
ODkxMCwianRpIjoieC1fMUNUTDJjY2EzQ1NFNGN3Yl9sIiwic3ViIjoid2ltc2U6Ly9l\
eGFtcGxlLmNvbS9zcGVjaWZpYy13b3JrbG9hZCJ9.6KraSQUxWdl9dxFQ3Fj6dPY0Vi8\
8OkwFwZpAIOhLeq6AbXAnLLQgOp8U9UDGcBuYF3KiNv6oKQD1ZWAzrMZOJw
]]></sourcecode>
          </figure>
          <t>Note that per <xref target="RFC9110"/>, header field names are case insensitive;
thus, <tt>Workload-Identity-Token</tt>, <tt>workload-identity-token</tt>, <tt>WORKLOAD-IDENTITY-TOKEN</tt>,
etc., are all valid and equivalent header field names. However, case is significant in the header field value.</t>
        </section>
        <section anchor="add-claims">
          <name>Including Additional Claims</name>
          <t>The WIT contains JSON structures and therefore can be trivially extended by adding more claims beyond those defined in the current specification.
This, however, could result in interoperability issues, which the following rules are addressing.</t>
          <ul spacing="normal">
            <li>
              <t>To ensure interoperability in WIMSE environments, the use of Private claim names (Sec. 4.3 of <xref target="RFC7519"/>) is <bcp14>NOT RECOMMENDED</bcp14>.</t>
            </li>
            <li>
              <t>In closed environments, deployers <bcp14>MAY</bcp14> freely add claims to the WIT. Such claims <bcp14>SHOULD</bcp14> be collision-resistant, such as <tt>example.com/myclaim</tt>.</t>
            </li>
            <li>
              <t>A recipient that does not understand such claims <bcp14>MUST</bcp14> ignore them, as per Sec. 4 of <xref target="RFC7519"/>.</t>
            </li>
            <li>
              <t>Outside of closed environments, new claims <bcp14>MUST</bcp14> be registered with IANA <xref target="IANA.JWT.CLAIMS"/> before they can be used.</t>
            </li>
          </ul>
        </section>
        <section anchor="wit-iss-note">
          <name>A note on <tt>iss</tt> claim and key distribution</name>
          <t>It is <bcp14>RECOMMENDED</bcp14> that the WIT carries an <tt>iss</tt> claim. This specification itself does not make use of a potential <tt>iss</tt> claim but also carries the trust domain in the workload identifier (see <xref target="I-D.ietf-wimse-arch"/> for a definition
of the identifier and related rules). Implementations <bcp14>MAY</bcp14> include the <tt>iss</tt> claim in the form of a <tt>https</tt> URL to facilitate key distribution via mechanisms like the <tt>jwks_uri</tt> from <xref target="RFC8414"/> but alternative key distribution methods may make use of the trust domain included in the workload identifier which is carried in the mandatory <tt>sub</tt> claim.</t>
        </section>
      </section>
      <section anchor="dpop-esque-auth">
        <name>Option 1: DPoP-Inspired Authentication</name>
        <t>This option, inspired by the OAuth DPoP specification <xref target="RFC9449"/>, uses a DPoP-like mechanism to authenticate
the calling workload in the context of the request. The Workload Identity Token (<xref target="to-wit"/>) is sent in the request as
described in <xref target="wit-http-header"/>. An additional JWT, the Workload Proof Token (WPT), is signed by the private key
corresponding to the public key in the WIT. The WPT is sent in the <tt>Workload-Proof-Token</tt> header field of the request.
The ABNF syntax of the <tt>Workload-Proof-Token</tt> header field is:</t>
        <figure anchor="wpt-header-abnf">
          <name>Workload-Proof-Token Header Field ABNF</name>
          <sourcecode type="abnf"><![CDATA[
WPT =  JWT
]]></sourcecode>
        </figure>
        <t>where the <tt>JWT</tt> projection is defined in <xref target="wit-header-abnf"/>.</t>
        <t>A WPT <bcp14>MUST</bcp14> contain the following:</t>
        <ul spacing="normal">
          <li>
            <t>in the JOSE header:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>alg</tt>: An identifier for an appropriate JWS asymmetric digital signature algorithm corresponding to
   the confirmation key in the associated WIT. The value <bcp14>MUST</bcp14> match the <tt>alg</tt> value of the <tt>jwk</tt> in the <tt>cnf</tt> claim of the WIT. See <xref target="to-wit"/> for valid values and restrictions.</t>
              </li>
              <li>
                <t><tt>typ</tt>: the WPT is explicitly typed, as recommended in <xref section="3.11" sectionFormat="of" target="RFC8725"/>,
   using the <tt>application/wpt+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 <bcp14>SHOULD</bcp14> contain 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. However, there may be some normalization,
  rewriting or other process that requires the audience to be set to a deployment-specific value.
  See also <xref target="granular-auth"/> for more details.</t>
              </li>
              <li>
                <t><tt>exp</tt>: The expiration time of the WPT (as defined in <xref section="4.1.4" sectionFormat="of" target="RFC7519"/>). WPT lifetimes <bcp14>MUST</bcp14> be short,
   e.g., on the order of minutes or seconds.</t>
              </li>
              <li>
                <t><tt>jti</tt>: An identifier for the token. The value <bcp14>MUST</bcp14> be unique, at least within the scope of the sender.</t>
              </li>
              <li>
                <t><tt>wth</tt>: Hash of the Workload Identity Token, defined in <xref target="to-wit"/>. The value is the base64url encoding of the
   SHA-256 hash of the ASCII encoding of the WIT'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/or
   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/or 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(es) of other token(s) in the request that convey end-user identity and/or authorization context of the
   request. The value is a JSON object with a key-value pair for each such token. For each, in the absence of an
   application profile specifying details, the key corresponds to the header field name containing the token,
   and the value is the base64url encoding of the SHA-256 hash of the ASCII bytes of the header field value with any
   leading or trailing spaces removed. The header field name <bcp14>MUST</bcp14> be normalized by converting
   it to all lower case.
   Header fields occurring multiple times in the request are not supported by default.
   An application profile may specify different behavior for a key, such as
   using a different hash algorithm or means of locating the token in the request.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>To clarify: the <tt>ath</tt>, <tt>tth</tt> and <tt>oth</tt> claims are each mandatory if the respective tokens are included in the request.</t>
        <t>The rules for using non-standard claims in WPTs are similar to the rules for WITs, <xref target="add-claims"/>.</t>
        <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[
=============== NOTE: '\' line wrapping per RFC 8792 ================

eyJhbGciOiJFZERTQSIsInR5cCI6IndwdCtqd3QifQ.eyJhdGgiOiJDTDR3amZwUm1OZ\
i1iZFlJYllMblY5ZDVyTUFSR3dLWUUxMHdVd3pDMGpJIiwiYXVkIjoiaHR0cHM6Ly93b\
3JrbG9hZC5leGFtcGxlLmNvbS9wYXRoIiwiZXhwIjoxNzQ1NTEwMDE2LCJqdGkiOiJfX\
2J3YzRFU0MzYWNjMkxUQzEtX3giLCJ3dGgiOiJBYVlVZkMzNEQxZGkyRnhRTHBpSUpKN\
1NnOFZaNm84T0Nkd1NmOUlUb0xnIn0.PI7d9AcYhLoEgPgbJvcM132lkBKnM1NXU-5hZ\
UzVTIyj2dRJaTLFs6e5NYv5gg6AqcV7NvkYCwfgMgWasWQzCA
]]></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": "wpt+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\
5cCI6IndpdCtqd3QifQ.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2Ijoi\
RWQyNTUxOSIsImt0eSI6Ik9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0pt\
bEdXZUNIcVFWdW91Q0Y5MmJnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUw\
ODkxMCwianRpIjoieC1fMUNUTDJjY2EzQ1NFNGN3Yl9sIiwic3ViIjoid2ltc2U6Ly9l\
eGFtcGxlLmNvbS9zcGVjaWZpYy13b3JrbG9hZCJ9.6KraSQUxWdl9dxFQ3Fj6dPY0Vi8\
8OkwFwZpAIOhLeq6AbXAnLLQgOp8U9UDGcBuYF3KiNv6oKQD1ZWAzrMZOJw
Workload-Proof-Token: eyJhbGciOiJFZERTQSIsInR5cCI6IndwdCtqd3QifQ.eyJ\
hdGgiOiJDTDR3amZwUm1OZi1iZFlJYllMblY5ZDVyTUFSR3dLWUUxMHdVd3pDMGpJIiw\
iYXVkIjoiaHR0cHM6Ly93b3JrbG9hZC5leGFtcGxlLmNvbS9wYXRoIiwiZXhwIjoxNzQ\
1NTEwMDE2LCJqdGkiOiJfX2J3YzRFU0MzYWNjMkxUQzEtX3giLCJ3dGgiOiJBYVlVZkM\
zNEQxZGkyRnhRTHBpSUpKN1NnOFZaNm84T0Nkd1NmOUlUb0xnIn0.PI7d9AcYhLoEgPg\
bJvcM132lkBKnM1NXU-5hZUzVTIyj2dRJaTLFs6e5NYv5gg6AqcV7NvkYCwfgMgWasWQ\
zCA

{"do stuff":"please"}
]]></sourcecode>
        </figure>
        <t>To validate the WPT in the request, the recipient <bcp14>MUST</bcp14> ensure the following:</t>
        <ul spacing="normal">
          <li>
            <t>There is exactly one <tt>Workload-Proof-Token</tt> header field in the request.</t>
          </li>
          <li>
            <t>The <tt>Workload-Proof-Token</tt> header field value is a single and well-formed JWT.</t>
          </li>
          <li>
            <t>The signature algorithm in the <tt>alg</tt> JOSE header string-equal matches the <tt>alg</tt> attribute of the <tt>jwk</tt> in the <tt>cnf</tt> claim of the WIT.</t>
          </li>
          <li>
            <t>The WPT signature is valid using the public key from the confirmation claim of the WIT.</t>
          </li>
          <li>
            <t>The <tt>typ</tt> JOSE header parameter of the WPT conveys a media type of <tt>wpt+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. See also <xref target="granular-auth"/> for implementation advice
 on this verification check.</t>
          </li>
          <li>
            <t>The <tt>exp</tt> claim is present and conveys a time that has not passed. WPTs with an expiration time unreasonably
 far in the future <bcp14>SHOULD</bcp14> be rejected.</t>
          </li>
          <li>
            <t>The <tt>wth</tt> claim is present and matches the hash of the token value conveyed in the <tt>Workload-Identity-Token</tt> header.</t>
          </li>
          <li>
            <t>It is <bcp14>RECOMMENDED</bcp14> to check that the value of the <tt>jti</tt> claim has not been used before in the time window in which the
 respective WPT would be considered valid.</t>
          </li>
          <li>
            <t>If presented in conjunction with an OAuth access token, the value of the <tt>ath</tt> claim matches the hash of that token's value.</t>
          </li>
          <li>
            <t>If presented in conjunction with a Txn-Token, the value of the <tt>tth</tt> claim matches the hash of that token's value.</t>
          </li>
          <li>
            <t>If presented in conjunction with a token conveying end-user identity or authorization context, the value of
 the <tt>oth</tt> claim matches the hash of that token's value.</t>
          </li>
          <li>
            <t>If the <tt>oth</tt> claim is present, verify the hashes of all tokens listed in the <tt>oth</tt> claim per the default behavior
 defined in <xref target="dpop-esque-auth"/> or as specified by an application specific profile. If the <tt>oth</tt> claim contains entries
 that are not understood by the recipient, the WPT <bcp14>MUST</bcp14> be rejected. Conversely, additional tokens not covered by
 the <tt>oth</tt> claim <bcp14>MUST NOT</bcp14> be used by the recipient to make authorization decisions.</t>
          </li>
        </ul>
      </section>
      <section anchor="http-sig-auth">
        <name>Option 2: Authentication Based on HTTP Message Signatures</name>
        <t>This option uses the Workload Identity Token (<xref target="to-wit"/>) and the private key associated with its public key, to sign the request and optionally, the response. See <xref target="workload-identity-key-management"/> for security considerations.
This section defines a profile of the Message Signatures specification <xref target="RFC9421"/>.</t>
        <t>The request is signed as per <xref target="RFC9421"/>. The following derived components <bcp14>MUST</bcp14> be signed:</t>
        <ul spacing="normal">
          <li>
            <t><tt>@method</tt></t>
          </li>
          <li>
            <t><tt>@request-target</tt></t>
          </li>
        </ul>
        <t>In addition, the following request headers <bcp14>MUST</bcp14> be signed when they exist:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Content-Type</tt></t>
          </li>
          <li>
            <t><tt>Content-Digest</tt></t>
          </li>
          <li>
            <t><tt>Authorization</tt></t>
          </li>
          <li>
            <t><tt>Txn-Token</tt> <xref target="I-D.ietf-oauth-transaction-tokens"/></t>
          </li>
          <li>
            <t><tt>Workload-Identity-Token</tt></t>
          </li>
        </ul>
        <t>If the response is signed, the following components <bcp14>MUST</bcp14> be signed:</t>
        <ul spacing="normal">
          <li>
            <t><tt>@status</tt></t>
          </li>
          <li>
            <t><tt>@method;req</tt></t>
          </li>
          <li>
            <t><tt>@request-target;req</tt></t>
          </li>
          <li>
            <t><tt>Content-Type</tt> if it exists</t>
          </li>
          <li>
            <t><tt>Content-Digest</tt> if it exists</t>
          </li>
          <li>
            <t><tt>Workload-Identity-Token</tt></t>
          </li>
        </ul>
        <t>To ensure the message is fully integrity-protected, if the request or response includes a message body, the sender <bcp14>MUST</bcp14> include
(and the receiver <bcp14>MUST</bcp14> verify) a Content-Digest header.</t>
        <t>For both requests and responses, the following signature parameters <bcp14>MUST</bcp14> be included:</t>
        <ul spacing="normal">
          <li>
            <t><tt>created</tt></t>
          </li>
          <li>
            <t><tt>expires</tt> - expiration <bcp14>MUST</bcp14> be short, e.g. on the order of minutes. The WIMSE architecture will provide separate
mechanisms in support of long-lived compute processes.</t>
          </li>
          <li>
            <t><tt>nonce</tt></t>
          </li>
          <li>
            <t><tt>tag</tt> - the value for implementations of this specification is <tt>wimse-workload-to-workload</tt></t>
          </li>
        </ul>
        <t>The following signature parameters in the <tt>Signature-Input</tt> header <bcp14>MUST NOT</bcp14> be used:</t>
        <ul spacing="normal">
          <li>
            <t><tt>keyid</tt> - The signing key is sent along with the message in the WIT. Additionally specifying the key identity would add confusion.</t>
          </li>
          <li>
            <t><tt>alg</tt> - The signature algorithm is specified in the <tt>jwk</tt> section of the <tt>cnf</tt> claim in the WIT. See <xref target="to-wit"/> and Sec. 3.3.7 of <xref target="RFC9421"/> for details.</t>
          </li>
        </ul>
        <t>It is <bcp14>RECOMMENDED</bcp14> to include only one signature with the HTTP message.
If multiple ones are included, then the signature label included in both the <tt>Signature-Input</tt> and <tt>Signature</tt> headers <bcp14>SHOULD</bcp14>
be <tt>wimse</tt>.</t>
        <t>A sender <bcp14>MUST</bcp14> ensure that each nonce it generates is unique, at least among messages sent to the same recipient.
To detect message replays,
a recipient <bcp14>SHOULD</bcp14> reject a message (request or response) if a nonce generated by a certain peer is seen more than once.</t>
        <t>Implementors need to be aware that the WIT is extracted from the message before the message signature is validated. Recipients of signed HTTP messages <bcp14>MUST</bcp14> validate the signature and content of the WIT before validating the HTTP message signature. They <bcp14>MUST</bcp14> ensure that the message is not processed further before it has been fully validated.</t>
        <t>Either client or server <bcp14>MAY</bcp14> send an <tt>Accept-Signature</tt> header, but is not required to do so. When this header is sent, it <bcp14>MUST</bcp14> include the header components listed above.</t>
        <t>Following is a non-normative example of a signed request and a signed response,
where the caller is using the keys specified in <xref target="example-caller-jwk"/>
(TODO: it is actually using a different key but that'll need to be fixed later).</t>
        <figure>
          <name>Signed Request</name>
          <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

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

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

Response:

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

No ice cream today.

]]></sourcecode>
        </figure>
      </section>
      <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.  The use of HTTP
status code 401 is <bcp14>NOT RECOMMENDED</bcp14> for this purpose because it requires a WWW-Authenticate with acceptable http auth mechanisms in
the error response and an associated Authorization header in the subsequent request. The use of these headers for the WIT or WPT is not compatible
with this specification.</t>
      </section>
      <section anchor="coexist">
        <name>Coexistence with JWT Bearer Tokens</name>
        <t>The WIT and WPT define new HTTP headers. They can therefore be presented along with existing headers used for JWT bearer tokens. This
property allows for transition from mechanisms using identity tokens based on bearer JWTs to proof of possession based WITs.
A workload may implement a policy that accepts both bearer tokens and WITs during a transition period. This policy may be configurable
per-caller to allow the workload to reject bearer tokens from callers that support WITs. Once a deployment fully supports WITs, then the use of
bearer tokens for identity can be disabled through policy.  Implementations should be careful when implementing such a transition strategy,
since the decision which token to prefer is made when the caller's identity has still not been authenticated, and needs to be revalidated following the authentication step.</t>
        <t>The WIT can also coexist with tokens used to establish security context, such as transaction tokens <xref target="I-D.ietf-oauth-transaction-tokens"/>. In this case a workload's
authorization policy may take into account both the sending workload's identity and the information in the context token. For example, the
identity in the WIT may be used to establish which API calls can be made and information in the context token may be used to determine
which specific resources can be accessed.</t>
      </section>
    </section>
    <section anchor="mutual-tls">
      <name>Using Mutual TLS for Workload-to-Workload Authentication</name>
      <t>As noted in the introduction, for many deployments, transport-level protection of application traffic using TLS is ideal.</t>
      <section anchor="to-wic">
        <name>The Workload Identity Certificate</name>
        <t>The Workload Identity Certificate is an X.509 certificate. The workload identity <bcp14>MUST</bcp14> be encoded in a SubjectAltName extension of type URI. There <bcp14>MUST</bcp14> be only one SubjectAltName extension of type URI in a Workload Identity Certificate. If the workload will act as a TLS server for clients that do not understand workload identities it is <bcp14>RECOMMENDED</bcp14> that the Workload Identity Certificate contain a SubjectAltName of type DNSName with the appropriate DNS names for the server. The certificate <bcp14>MAY</bcp14> contain SubjectAltName extensions of other types.</t>
      </section>
      <section anchor="wic-validation">
        <name>Workload Identity Certificate Validation</name>
        <t>Workload Identity Certificates may be used to authenticate both the server and client side of the connections.  When validating a Workload Identity Certificate, the relying party <bcp14>MUST</bcp14> use the trust anchors configured for the trust domain in the workload identity to validate the peer's certificate.  Other PKIX <xref target="RFC5280"/> path validation rules apply. Workloads acting as TLS clients and servers <bcp14>MUST</bcp14> validate that the trust domain portion of the Workload Identity Certificate matches the expected trust domain for the other side of the connection.</t>
        <t>Servers wishing to use the Workload Identity Certificate for authorizing the client <bcp14>MUST</bcp14> require client certificate authentication in the TLS handshake. Other methods of post handshake authentication are not specified by this document.</t>
        <t>Workload Identity Certificates used by TLS servers <bcp14>SHOULD</bcp14> have the <tt>id-kp-serverAuth</tt> extended key usage <xref target="RFC5280"/> field set and Workload Identity Certificates used by TLS clients <bcp14>SHOULD</bcp14> have the <tt>id-kp-clientAuth</tt> extended key usage field set. A certificate that is used for both client and server connections may have both fields set. This specification does not make any other requirements beyond <xref target="RFC5280"/> on the contents of Workload Identity Certificates or on the certification authorities that issue workload certificates.</t>
        <section anchor="server-name">
          <name>Server Name Validation</name>
          <t>If the WIMSE client uses a hostname to connect to the server and the server certificate contain a DNS SAN the client <bcp14>MUST</bcp14> perform standard host name validation (<xref section="6.3" sectionFormat="of" target="RFC9525"/>) unless it is configured with the additional information necessary to perform alternate validation of the peer's workload identity.
If the client did not perform standard host name validation then the WIMSE client <bcp14>SHOULD</bcp14> further use the workload identifier to validate the server.
The host portion of the workload identifier is NOT treated as a host name as specified in section 6.4 of <xref target="RFC9525"/> but rather as a trust domain. The server identity is encoded in the path portion of the workload identifier in a deployment specific way.
Validating the workload identity could be a simple match on the trust domain and path portions of the identifier or validation may be based on the specific details on how the identifier is constructed. The path portion of the WIMSE identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
In most cases it is preferable to validate the entire workload identifier, see <xref target="granular-auth"/> for additional implementation advice.</t>
        </section>
      </section>
      <section anchor="client-name">
        <name>Client Authorization Using the Workload Identity</name>
        <t>The server application retrieves the workload identifier from the client certificate subjectAltName, which in turn is obtained from the TLS layer. The identifier is used in authorization, accounting and auditing.
For example, the full workload identifier may be matched against ACLs to authorize actions requested by the peer and the identifier may be included in log messages to associate actions to the client workload for audit purposes.
A deployment may specify other authorization policies based on the specific details of how the workload identifier is constructed. The path portion of the workload identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
See <xref target="granular-auth"/> on additional security implications of workload identifiers.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t><cref>Note to RFC Editor: please remove this section, as well as the reference to RFC 7942, before publication.</cref>
This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>
      <t>According to RFC 7942, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.  It is up to the individual working groups to use this information as they see fit".</t>
      <t>SPIFFE (Standard)</t>
      <ul spacing="normal">
        <li>
          <t>Organization: CNCF</t>
        </li>
        <li>
          <t>Maturity:
          </t>
          <ul spacing="normal">
            <li>
              <t>Workload Identity Certificate: fully compatible with the X509-SVID and widely used.</t>
            </li>
            <li>
              <t>Workload Identity Token: beta</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Coverage: Workload Identity Certificate, WIT</t>
        </li>
        <li>
          <t>Contact: <eref target="https://github.com/spiffe/spiffe/tree/main/community/sig-spec">SPIFFE sig-spec community</eref></t>
        </li>
      </ul>
      <t>SPIRL</t>
      <ul spacing="normal">
        <li>
          <t>Organization: SPIRL</t>
        </li>
        <li>
          <t>Maturity:
          </t>
          <ul spacing="normal">
            <li>
              <t>Workload Identity Certificate: production</t>
            </li>
            <li>
              <t>Workload Identity Token/Workload Proof Token: alpha</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Coverage: Workload Identity Certificate, WIT, WPT</t>
        </li>
        <li>
          <t>Contact: arndt@spirl.com</t>
        </li>
      </ul>
      <t>Teleport - Machine &amp; Workload Identity</t>
      <ul spacing="normal">
        <li>
          <t>Organization: Teleport</t>
        </li>
        <li>
          <t>Maturity:
          </t>
          <ul spacing="normal">
            <li>
              <t>Workload Identity Certificate: production</t>
            </li>
            <li>
              <t>Workload Identity Token/Workload Proof Token: research</t>
            </li>
          </ul>
        </li>
        <li>
          <t>Coverage: Workload Identity Certificate</t>
        </li>
        <li>
          <t>Contact: noah@goteleport.com</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="workload-identity">
        <name>Workload Identity</name>
        <t>The Workload Identifier is scoped within an issuer and therefore any sub-components (path portion of Identifier) are only unique within a trust domain defined by the issuer. Using a Workload Identifier without taking into account the trust domain could allow one domain to issue tokens to spoof identities in another domain. Additionally, the trust domain must be tied to an authorized issuer cryptographic trust anchor through some mechanism such as a JWKS or X.509 certificate chain. The association of an issuer, trust domain and a cryptographic trust anchor <bcp14>MUST</bcp14> be communicated securely out of band.</t>
      </section>
      <section anchor="workload-identity-token-and-proof-of-possession">
        <name>Workload Identity Token and Proof of Possession</name>
        <t>The Workload Identity Token (WIT) is bound to a secret cryptographic key and is always presented with a proof of possession as described in <xref target="to-wit"/>. The WIT is a general purpose token that can be presented in multiple contexts. The WIT and its PoP are only used in the application-level options, and both are not used in MTLS. The WIT <bcp14>MUST NOT</bcp14> be used as a bearer token. While this helps reduce the sensitivity of the token it is still possible that a token and its proof of possession may be captured and replayed within the PoP's lifetime. The following are some mitigations for the capture and reuse of the proof of possession (PoP):</t>
        <ul spacing="normal">
          <li>
            <t>Preventing Eavesdropping and Interception with TLS</t>
          </li>
        </ul>
        <t>An attacker observing or intercepting the communication channel can view the token and its proof of possession and attempt to replay it to gain an advantage. In order to prevent this the
token and proof of possession <bcp14>MUST</bcp14> be sent over a secure, server authenticated TLS connection unless a secure channel is provided by some other mechanisms. Host name validation according
to <xref target="server-name"/> <bcp14>MUST</bcp14> be performed by the client.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Proof of Possession Lifespan</t>
          </li>
        </ul>
        <t>The proof of possession <bcp14>MUST</bcp14> be time limited. A PoP should only be valid over the time necessary for it to be successfully used for the purpose it is needed. This will typically be on the order of minutes.  PoPs received outside their validity time <bcp14>MUST</bcp14> be rejected.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Proof of Possession Scope</t>
          </li>
        </ul>
        <t>In order to reduce the risk of theft and replay the PoP should have a limited scope. For example, a PoP may be targeted for use with a specific workload and even a specific transaction to reduce the impact of a stolen PoP. In some cases a workload may wish to reuse a PoP for a period of time or have it accepted by multiple target workloads. A careful analysis is warranted to understand the impacts to the system if a PoP is disclosed allowing it to be presented by an attacker along with a captured WIT.</t>
        <ul spacing="normal">
          <li>
            <t>Replay Protection</t>
          </li>
        </ul>
        <t>A proof of possession includes the <tt>jti</tt> claim that <bcp14>MUST</bcp14> uniquely identify it, within the scope of a particular sender.
This claim <bcp14>SHOULD</bcp14> be used by the receiver to perform basic replay protection against tokens it has already seen.
Depending upon the design of the system it may be difficult to synchronize the replay cache across all token validators.
If an attacker can somehow influence the identity of the validator (e.g. which cluster member receives the message) then
replay protection would not be effective.</t>
        <ul spacing="normal">
          <li>
            <t>Binding to TLS Endpoint</t>
          </li>
        </ul>
        <t>The POP <bcp14>MAY</bcp14> be bound to a transport layer sender such as the client identity of a TLS session or TLS channel binding parameters. The mechanisms for binding are outside the scope of this specification.</t>
      </section>
      <section anchor="workload-identity-key-management">
        <name>Workload Identity Key Management</name>
        <t>Both the Workload Identity Token and the Workload Identity Certificate carry a public key. The corresponding private key:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST</bcp14> be kept private</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> be individual for each Workload Identifier (see <xref target="I-D.ietf-wimse-arch"/>)</t>
          </li>
          <li>
            <t><bcp14>MUST NOT</bcp14> be used once the credential is expired</t>
          </li>
          <li>
            <t><bcp14>SHOULD</bcp14> be re-generated for each new Workload Identity Token or Certificate.</t>
          </li>
        </ul>
      </section>
      <section anchor="middleboxes">
        <name>Middle Boxes</name>
        <t>In some deployments the Workload Identity Token and proof of possession may pass through multiple systems. The communication between the systems is over TLS, but the token and PoP are available in the clear at each intermediary.  While the intermediary cannot modify the token or the information within the PoP they can attempt to capture and replay the token or modify the data not protected by the PoP.</t>
        <t>Mitigations listed in <xref target="app-level"/> can be used to provide some protection from middle boxes.
However we note that the DPoP-inspired solution (<xref target="dpop-esque-auth"/>) does not protect major portions of the request and response and therefore does not provide protection from an actively malicious middle box.
Deployments should perform analysis on their situation to determine if it is appropriate to trust and allow traffic to pass through a middle box.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>WITs and the proofs of possession may contain private information such as user names or other identities. Care should be taken to prevent the disclosure of this information. The use of TLS helps protect the privacy of WITs and proofs of possession.</t>
        <t>WITs and certificates with workload identifiers are typically associated with a workload and not a specific user, however in some deployments the workload may be associated directly to a user. While these are exceptional cases a deployment should evaluate if the disclosure of WITs or certificates can be used to track a user.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="json-web-token-claims">
        <name>JSON Web Token Claims</name>
        <t>IANA is requested to add the following entries to the "JSON Web Token Claims" registry <xref target="IANA.JWT.CLAIMS"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim Name</th>
              <th align="left">Claim Description</th>
              <th align="left">Change Controller</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">tth</td>
              <td align="left">Transaction Token hash</td>
              <td align="left">IETF</td>
              <td align="left">RFC XXX, <xref target="dpop-esque-auth"/></td>
            </tr>
            <tr>
              <td align="left">wth</td>
              <td align="left">Workload Identity Token hash</td>
              <td align="left">IETF</td>
              <td align="left">RFC XXX, <xref target="dpop-esque-auth"/></td>
            </tr>
            <tr>
              <td align="left">oth</td>
              <td align="left">Other Tokens hashes</td>
              <td align="left">IETF</td>
              <td align="left">RFC XXX, <xref target="dpop-esque-auth"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="media-type-registration">
        <name>Media Type Registration</name>
        <t>IANA is requested to register the following entries to the "Media Types" registry <xref target="IANA.MEDIA.TYPES"/>:</t>
        <ul spacing="normal">
          <li>
            <t>application/wit+jwt, per <xref target="iana-wit"/>.</t>
          </li>
          <li>
            <t>application/wpt+jwt, per <xref target="iana-wpt"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wit">
          <name>application/wit+jwt</name>
          <t>Type name: application</t>
          <t>Subtype name: wit+jwt</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: Encoding considerations are identical to those specified for the "application/jwt" media type. See <xref target="RFC7519"/>.</t>
          <t>Security considerations: See the Security Considerations section of RFC XXX.</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: RFC XXX, <xref target="to-wit"/>.</t>
          <t>Applications that use this media type: Identity servers that vend Workload Identity Tokens, and Workloads that
use these tokens to authenticate to each other.</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <t>Deprecated alias names for this type: N/A</t>
          <t>Magic number(s): N/A</t>
          <t>File extension(s): None</t>
          <t>Macintosh file type code(s): N/A</t>
          <t>Person &amp; email address to contact for further information:</t>
          <t>See the Authors' Addresses section of RFC XXX.</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: See the Authors' Addresses section of RFC XXX.</t>
          <t>Change controller: Internet Engineering Task Force (iesg@ietf.org).</t>
        </section>
        <section anchor="iana-wpt">
          <name>application/wpt+jwt</name>
          <t>Type name: application</t>
          <t>Subtype name: wpt+jwt</t>
          <t>Required parameters: N/A</t>
          <t>Optional parameters: N/A</t>
          <t>Encoding considerations: Encoding considerations are identical to those specified for the "application/jwt" media type. See <xref target="RFC7519"/>.</t>
          <t>Security considerations: See the Security Considerations section of RFC XXX.</t>
          <t>Interoperability considerations: N/A</t>
          <t>Published specification: RFC XXX, <xref target="dpop-esque-auth"/>.</t>
          <t>Applications that use this media type: Workloads that use these tokens to integrity-protect messages in the WIMSE workload-to-workload protocol.</t>
          <t>Fragment identifier considerations: N/A</t>
          <t>Additional information:</t>
          <t>Deprecated alias names for this type: N/A</t>
          <t>Magic number(s): N/A</t>
          <t>File extension(s): None</t>
          <t>Macintosh file type code(s): N/A</t>
          <t>Person &amp; email address to contact for further information:</t>
          <t>See the Authors' Addresses section of RFC XXX.</t>
          <t>Intended usage: COMMON</t>
          <t>Restrictions on usage: N/A</t>
          <t>Author: See the Authors' Addresses section of RFC XXX.</t>
          <t>Change controller: Internet Engineering Task Force (iesg@ietf.org).</t>
        </section>
      </section>
      <section anchor="hypertext-transfer-protocol-http-field-name-registration">
        <name>Hypertext Transfer Protocol (HTTP) Field Name Registration</name>
        <t>IANA is requested to register the following entries to the "Hypertext Transfer Protocol (HTTP) Field Name Registry" <xref target="IANA.HTTP.FIELDS"/>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>Workload-Identity-Token</tt>, per <xref target="iana-wit-field"/>.</t>
          </li>
          <li>
            <t><tt>Workload-Proof-Token</tt>, per <xref target="iana-wpt-field"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wit-field">
          <name>Workload-Identity-Token</name>
          <ul spacing="normal">
            <li>
              <t>Field Name: Workload-Identity-Token</t>
            </li>
            <li>
              <t>Status: permanent</t>
            </li>
            <li>
              <t>Structured Type: N/A</t>
            </li>
            <li>
              <t>Specification Document: RFC XXX, <xref target="wit-http-header"/></t>
            </li>
            <li>
              <t>Comments: see reference above for an ABNF syntax of this field</t>
            </li>
          </ul>
        </section>
        <section anchor="iana-wpt-field">
          <name>Workload-Proof-Token</name>
          <ul spacing="normal">
            <li>
              <t>Field Name: Workload-Proof-Token</t>
            </li>
            <li>
              <t>Status: permanent</t>
            </li>
            <li>
              <t>Structured Type: N/A</t>
            </li>
            <li>
              <t>Specification Document: RFC XXX, <xref target="dpop-esque-auth"/></t>
            </li>
            <li>
              <t>Comments: see reference above for an ABNF syntax of this field</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="iana-uri">
        <name>URI Scheme Registration</name>
        <t>IANA is requested to register the "wimse" scheme to the "URI Schemes" registry <xref target="IANA.URI.SCHEMES"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Scheme name: wimse</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Applications/protocols that use this scheme name: the WIMSE workload-to-workload authentication protocol.</t>
          </li>
          <li>
            <t>Contact: IETF Chair <eref target="mailto:chair@ietf.org">chair@ietf.org</eref></t>
          </li>
          <li>
            <t>Change controller: IESG <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></t>
          </li>
          <li>
            <t>References: <xref target="app-level"/> of this document (RFC XXX).</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA.HTTP.FIELDS" target="https://www.iana.org/assignments/http-fields">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JOSE.ALGS" target="https://www.iana.org/assignments/jose">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JWT.CLAIMS" target="https://www.iana.org/assignments/jwt">
          <front>
            <title>JSON Web Token Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.MEDIA.TYPES" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.URI.SCHEMES" target="https://www.iana.org/assignments/uri-schemes">
          <front>
            <title>Uniform Resource Identifier (URI) Schemes</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-arch">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="30" month="September" 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-06"/>
        </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>Practical Identity LLC</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</organization>
            </author>
            <date day="28" month="July" year="2025"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) are designed to maintain and
   propagate user identity and authorization context across workloads
   within a trusted domain during the processing of external
   programmatic requests, such as API calls.  They ensure that this
   context is preserved throughout the call chain, even when new
   transactions are initiated internally, thereby enhancing security and
   consistency in complex, multi-service architectures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-06"/>
        </reference>
      </references>
    </references>
    <?line 982?>

<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-07">
        <name>draft-ietf-wimse-s2s-protocol-07</name>
        <ul spacing="normal">
          <li>
            <t>Rework the WPT's <tt>oth</tt> claim.</t>
          </li>
          <li>
            <t>update the media types.</t>
          </li>
          <li>
            <t>Discuss extensibility of WIT and WPT.</t>
          </li>
          <li>
            <t>Clarify error handling, specifically why not HTTP 401.</t>
          </li>
          <li>
            <t>Correct the code examples.</t>
          </li>
          <li>
            <t>Add registration request content for a <tt>wimse</tt> URI scheme.</t>
          </li>
          <li>
            <t>New section on key management.</t>
          </li>
          <li>
            <t>Use of the <tt>Accept-Signature</tt> header.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-06">
        <name>draft-ietf-wimse-s2s-protocol-06</name>
        <ul spacing="normal">
          <li>
            <t>Explicit definition of the Workload Identity Certificate.</t>
          </li>
          <li>
            <t>Definition of the validation of workload identifiers as part of workload authentication. Still work in progress.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-05">
        <name>draft-ietf-wimse-s2s-protocol-05</name>
        <ul spacing="normal">
          <li>
            <t>Removed the entire Workload Identity section which is now covered in the Architecture document.</t>
          </li>
          <li>
            <t>Content-Digest is mandatory with HTTP-Sig.</t>
          </li>
          <li>
            <t>Some wording on extending the protocol beyond HTTP.</t>
          </li>
          <li>
            <t>IANA considerations.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-04">
        <name>draft-ietf-wimse-s2s-protocol-04</name>
        <ul spacing="normal">
          <li>
            <t>Require <tt>cnf.jwk.alg</tt> in WIT which restricts signature algorithm of WPT or HTTP-Sig.</t>
          </li>
          <li>
            <t>Replay protection as a <bcp14>SHOULD</bcp14> for both WPT and HTTP-Sig.</t>
          </li>
          <li>
            <t>Consolidate terminology with the Architecture draft.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-03">
        <name>draft-ietf-wimse-s2s-protocol-03</name>
        <ul spacing="normal">
          <li>
            <t>Consistently use "workload".</t>
          </li>
          <li>
            <t>Implement comments from the SPIFFE community.</t>
          </li>
          <li>
            <t>Make <tt>iss</tt> claim in WIT optional and add wording about its relation to key distribution.</t>
          </li>
          <li>
            <t>Remove <tt>iss</tt> claim from WPT.</t>
          </li>
          <li>
            <t>Make <tt>jti</tt> claim in WIT optional.</t>
          </li>
          <li>
            <t>Error handling for the application level methods.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-02">
        <name>draft-ietf-wimse-s2s-protocol-02</name>
        <ul spacing="normal">
          <li>
            <t>Coexistence with bearer tokens.</t>
          </li>
          <li>
            <t>Improve the architecture diagram.</t>
          </li>
          <li>
            <t>Some more ABNF.</t>
          </li>
          <li>
            <t>Clarified identifiers and URIs.</t>
          </li>
          <li>
            <t>Moved an author to acknowledgments.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-01">
        <name>draft-ietf-wimse-s2s-protocol-01</name>
        <ul spacing="normal">
          <li>
            <t>Addressed multiple comments from Pieter.</t>
          </li>
          <li>
            <t>Clarified WIMSE identity concepts, specifically "trust domain"
and "workload identifier".</t>
          </li>
          <li>
            <t>Much more detail around mTLS, including some normative language.</t>
          </li>
          <li>
            <t>WIT (the identity token) is now included in the WPT proof of possession.</t>
          </li>
          <li>
            <t>Added a section comparing the DPoP-inspired app-level security option to
the Message Signature-based alternative.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-ietf-wimse-s2s-protocol-00">
        <name>draft-ietf-wimse-s2s-protocol-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial WG draft, an exact copy of draft-sheffer-wimse-s2s-protocol-00</t>
          </li>
          <li>
            <t>Added this document history section</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Pieter Kasselman for his detailed comments.</t>
      <t>We thank Daniel Feldman for his contributions to earlier versions of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
JBhUzE9Q4SGd4kcKq5CYXflSl1hzOqlKoHciAb+RsaBq1zCtniDAhPyyxImy
Qi5WaM18ypij2J7irnyjZT5JLHoduXnh/nQmRHu7M+xCKmd0wtMCQfWEmcHt
CEjIT4cOXDkA+iB+8iV2anovCnUVj2SZms46Qf4ohCBTXhwMLuMUWQlb2zOG
hAW7aATirFupBMZ8p6wZcEx3MWYJroQDb8nArajy9JCxywka9Vs6ft95wjRO
1oLJMygmElMYcoxXCOa5QIkcmVIWAeaYXpoVjre0fhCJManQxaTX7mRDhCy4
VTUmZoQHdM2UAQQ3TBicK5OBoie4HVJvmZrRs2V9NZ+4TTFUoZQ+4n1FQApV
EaTci46sn0eTNHOF0vnrGAVbw3SH3IT4vRRddFoVXVSU/f+JYUZ3O+fts2JI
0bho8+97H9BSf7Dd3j5fdgZ348tB8+TukxU0g7vd8OA2DI864e3q3fbVpH25
e3G+7B1eX14+H+15V97ycPvow/CAvAI3V49oT3f2zhfdvSO0py93PlnaZr5a
Dt0Z396cx/jm3U1/DG8+H6ONvr0zPtreWTrcOvjifXjEdXVvPllLB8u3X893
LxePvt5eHz8cPT5fnn3dyW6WewE8uSw72Ly9Cq/uHo++Hu+cPd99eJycR/3z
9t7m8OJy+PH4k9U8jk5275zjwbuV9uLxo9c8HpxchpedxedoP1psnO6veest
97Z/GO/0Tnudgyf3qLm8FD5ufoyOmsc3l/XVPsDl8utVe3/ysOSdHzjtw930
rb96fPu02uu9bX1xr9aOnx5vt8bd3lHv2kmvz75utabjhYbZLO/ztLb+mkih
0/9ipJCOqtFhQcMfhQWd/mxY0Ow1/iAsCMgCLmnrcGX80B2eD4679Y53u9+5
PYyu1r3V5Kh1/mH88XanuTi+HH/dWnzY562A1jFnVITWkeGmwReTWeeK4T2L
a6uriyvvzEieRRe+Xn731nWanut4y2ue3+ysdtfxP4trixJRNeZ1Oq3F68/x
7sHHtS9Xa19v++7g63nz48nN1dbeg7f0/NZdSU/ODp921hdvXwZvHtrTKvog
o2IBS+JklB6mTLBIPDW8h5SdL++nJd++4af8o4jP6QkwRAIsLfNNs9G09mIs
zl11AtYWyjmgALapyLipZxMGFAK+N+xNDhhvvv08aHmLH4Kxcxc/Xi69/by4
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
1oVoF5iuu6hZ0P8FvprbsWzYAAA=

-->

</rfc>
