<?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-sheffer-wimse-s2s-reduced-00" 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 Revised">WIMSE Workload-to-Workload Authentication - Proposed Revision</title>
    <seriesInfo name="Internet-Draft" value="draft-sheffer-wimse-s2s-reduced-00"/>
    <author fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="September" day="21"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 51?>

<t>This document is a proposed revision that simplifies the working group's workload-to-workload protocol document. If accepted by the working group, these changes will be back-ported to that document. Otherwise, it was a good try.</t>
      <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://yaronf.github.io/draft-sheffer-wimse-s2s-reduced/draft-sheffer-wimse-s2s-reduced.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-sheffer-wimse-s2s-reduced/"/>.
      </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/yaronf/draft-sheffer-wimse-s2s-reduced"/>.</t>
    </note>
  </front>
  <middle>
    <?line 67?>

<section anchor="foreword">
      <name>Foreword</name>
      <t>This document is a proposed revision that simplifies the working group's workload-to-workload protocol document. The main changes compared to draft-ietf-wimse-s2s-protocol-06 are:</t>
      <ul spacing="normal">
        <li>
          <t>Only one application-layer security solution is retained, the approach based on HTTP Message Signatures.</t>
        </li>
        <li>
          <t>The alternative DPoP-inspired solution and the WPT construct have been  moved to an appendix, under the assumption that other protocols may leverage WPT in future WIMSE profiles.</t>
        </li>
      </ul>
      <t>All other changes (such as removal of the comparison between the two options, IANA registrations, and security considerations) stem from these two primary modifications. If accepted by the working group, these changes will be back-ported to the working group's main document.</t>
    </section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The WIMSE architecture defines authentication and authorization for software workloads
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>
      <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 protection based on the Workload Identity Token defined below, and HTTP Message Signatures <xref target="RFC9421"/>.</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>wimse-id+jwt</tt> media type.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>in the JWT claims:
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>iss</tt>: The issuer of the token, which is the Identity Server, represented by a URI. The <tt>iss</tt> claim is <bcp14>RECOMMENDED</bcp14> but optional, see <xref target="wit-iss-note"/> for more.</t>
              </li>
              <li>
                <t><tt>sub</tt>: The subject of the token, which is the identity of the workload, represented by a URI. 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 ================

eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR5cCI6IndpbXNlLWlkK2p3dCJ9\
.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3J2IjoiRWQyNTUxOSIsImt0eSI\
6Ik9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdkIwM0ptbEdXZUNIcVFWdW91Q0Y\
5MmJnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MTc0NTUwODkxMCwianRpIjoiYmQ\
yYTdiNWJmODU3M2E0MWFkYjRjYmYzY2ZhMDFlMTUiLCJzdWIiOiJ3aW1zZTovL2V4YW1\
wbGUuY29tL3NwZWNpZmljLXdvcmtsb2FkIn0.xpODXCUhZ2zk-1-W3VEqbqWhBX6_OJI\
l7vtjahgwJStMOCRn6J6is6f5mz-Pi5-Xk6FmV44k48NzulqMDVJbAw
]]></sourcecode>
        </figure>
        <t>The decoded JOSE header of the WIT from the example above is shown here:</t>
        <figure>
          <name>Example WIT JOSE Header</name>
          <sourcecode type="json"><![CDATA[
{
  "alg": "ES256",
  "kid": "June 5",
  "typ": "wimse-id+jwt"
}
]]></sourcecode>
        </figure>
        <t>The decoded JWT claims of the WIT from the example above are shown here:</t>
        <figure>
          <name>Example WIT Claims</name>
          <sourcecode type="json"><![CDATA[
{
  "cnf": {
    "jwk": {
      "alg": "EdDSA",
      "crv": "Ed25519",
      "kty": "OKP",
      "x": "1CXXvflN_LVVsIsYXsUvB03JmlGWeCHqQVuouCF92bg"
    }
  },
  "exp": 1745512510,
  "iat": 1745508910,
  "jti": "bd2a7b5bf8573a41adb4cbf3cfa01e15",
  "sub": "wimse://example.com/specific-workload"
}
]]></sourcecode>
        </figure>
        <t>The claims indicate that the example WIT:</t>
        <ul spacing="normal">
          <li>
            <t>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>bd2a7b5bf8573a41adb4cbf3cfa01e15</tt>.</t>
          </li>
          <li>
            <t>binds the public key represented by the <tt>jwk</tt> confirmation method to the workload <tt>wimse://example.com/specific-workload</tt>.</t>
          </li>
          <li>
            <t>requires the proof to be produced with the <tt>EdDSA</tt> signature algorithm.</t>
          </li>
        </ul>
        <t>For elucidative purposes only, the workload's key, including the private part, is shown below in JWK <xref target="RFC7517"/> format:</t>
        <figure anchor="example-caller-jwk">
          <name>Example Workload's Key</name>
          <sourcecode type="jwk"><![CDATA[
{
 "kty": "OKP",
 "crv": "Ed25519",
 "x": "1CXXvflN_LVVsIsYXsUvB03JmlGWeCHqQVuouCF92bg",
 "d": "sdLX8yCYKqo_XvGBLn-ZWeKT7llYeeQpgeCaXVxb5kY"
}
]]></sourcecode>
        </figure>
        <t>The afore-exampled WIT is signed with the private key of the Identity Server.
The public key(s) of the Identity Server need to be known to all workloads in order to verify the signature of the WIT.
The Identity Server's public key from this example is shown below in JWK <xref target="RFC7517"/> format:</t>
        <figure>
          <name>Example Identity Server Key</name>
          <sourcecode type="jwk"><![CDATA[
{
 "kty": "EC",
 "kid": "June 5",
 "crv": "P-256",
 "x": "Dy47KDeYao6kOhxSraJeJizjVxHjjo-9NsnrMqLyvOo",
 "y": "bj3s7bncoSYURzAzF0jBy0JOnnP5-5E11vx5QoYEFgk"
}
]]></sourcecode>
        </figure>
        <section anchor="wit-http-header">
          <name>The WIT HTTP Header</name>
          <t>A WIT is conveyed in an HTTP header field named <tt>Workload-Identity-Token</tt>.</t>
          <t>ABNF <xref target="RFC5234"/> for the value of <tt>Workload-Identity-Token</tt> header field is provided in <xref target="wit-header-abnf"/>:</t>
          <figure anchor="wit-header-abnf">
            <name>Workload-Identity-Token Header Field ABNF</name>
            <sourcecode type="abnf"><![CDATA[
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9
base64url = 1*(ALPHA / DIGIT / "-" / "_")
JWT =  base64url "." base64url "." base64url
WIT =  JWT
]]></sourcecode>
          </figure>
          <t>The following shows the WIT from <xref target="example-wit"/> in an example of a <tt>Workload-Identity-Token</tt> header field:</t>
          <figure>
            <name>An example Workload Identity Token HTTP Header Field</name>
            <sourcecode type="http-message"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

Workload-Identity-Token: eyJhbGciOiJFUzI1NiIsImtpZCI6Ikp1bmUgNSIsInR\
5cCI6IndpbXNlLWlkK2p3dCJ9.eyJjbmYiOnsiandrIjp7ImFsZyI6IkVkRFNBIiwiY3\
J2IjoiRWQyNTUxOSIsImt0eSI6Ik9LUCIsIngiOiIxQ1hYdmZsTl9MVlZzSXNZWHNVdk\
IwM0ptbEdXZUNIcVFWdW91Q0Y5MmJnIn19LCJleHAiOjE3NDU1MTI1MTAsImlhdCI6MT\
c0NTUwODkxMCwianRpIjoiYmQyYTdiNWJmODU3M2E0MWFkYjRjYmYzY2ZhMDFlMTUiLC\
JzdWIiOiJ3aW1zZTovL2V4YW1wbGUuY29tL3NwZWNpZmljLXdvcmtsb2FkIn0.xpODXC\
UhZ2zk-1-W3VEqbqWhBX6_OJIl7vtjahgwJStMOCRn6J6is6f5mz-Pi5-Xk6FmV44k48\
NzulqMDVJbAw
]]></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="http-sig-auth">
        <name>Protecting the Workload-to-Workload Traffic</name>
        <t>The workload uses the Workload Identity Token (<xref target="to-wit"/>) and the private key associated with the WIT's 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"/>.</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": "JlNJxsZl_PC00EkoRUQbtCrzDtZ5vhFN_6qWtwghttY",
  "kid": "svc-b-key",
  "kty": "OKP",
  "x": "gz2aSJE-g9w1rbgJiNps4Gb8IPk50k5oJUEbLDusayc"
}
]]></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="error-conditions">
        <name>Error Conditions</name>
        <t>Errors may occur during the processing of the message signature. 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. When used with HTTP, 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. For non-HTTP protocols, the WIMSE profile should define how errors are handled.</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 certificate. If the workload will act as a TLS server for clients that do not understand workload identities it is <bcp14>RECOMMENDED</bcp14> that the workload certificate contain a SubjectAltName of type DNSName with the appropriate DNS names for the server. The certificate <bcp14>MAY</bcp14> contain SubjectAltName extensions of other types.</t>
      </section>
      <section anchor="wic-validation">
        <name>Workload Identity Certificate Validation</name>
        <t>Workload certificates may be used to authenticate both the server and client side of the connections.  When validating a workload certificate, the relying party <bcp14>MUST</bcp14> use the trust anchors configured for the trust domain in the workload identity to validate the peer's certificate.  Other PKIX <xref target="RFC5280"/> path validation rules apply. WIMSE clients and servers <bcp14>MUST</bcp14> validate that the trust domain portion of the workload certificate matches the expected trust domain for the other side of the connection.</t>
        <t>Servers wishing to use the workload certificate for authorizing the client <bcp14>MUST</bcp14> require client certificate authentication in the TLS handshake. Other methods of post handshake authentication are not specified by this document.</t>
        <t>WIMSE server certificates <bcp14>SHOULD</bcp14> have the <tt>id-kp-serverAuth</tt> extended key usage <xref target="RFC5280"/> field set and WIMSE client certificates <bcp14>SHOULD</bcp14> have the <tt>id-kp-clientAuth</tt> extended key usage field set. A certificate that is used for both client and server connections may have both fields set. This specification does not make any other requirements beyond <xref target="RFC5280"/> on the contents of workload certificates or on the certification authorities that issue workload certificates.</t>
        <section anchor="server-name">
          <name>Server Name Validation</name>
          <t>If the WIMSE client uses a hostname to connect to the server and the server certificate contain a DNS SAN the client <bcp14>MUST</bcp14> perform standard host name validation (<xref section="6.3" sectionFormat="of" target="RFC9525"/>) unless it is configured with the information necessary to validate the peer's workload identity.
If the client did not perform standard host name validation then the WIMSE client <bcp14>SHOULD</bcp14> further use the workload identifier to validate the server.
The host portion of the workload identifier is NOT treated as a host name as specified in section 6.4 of <xref target="RFC9525"/> but rather as a trust domain. The server identity is encoded in the path portion of the workload identifier in a deployment specific way.
Validating the workload identity could be a simple match on the trust domain and path portions of the identifier or validation may be based on the specific details on how the identifier is constructed. The path portion of the WIMSE identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
In most cases it is preferable to validate the entire workload identifier, see <xref target="granular-auth"/> for additional implementation advice.</t>
        </section>
      </section>
      <section anchor="client-name">
        <name>Client Authorization Using the Workload Identity</name>
        <t>The server application retrieves the workload identifier from the client certificate subjectAltName, which in turn is obtained from the TLS layer. The identifier is used in authorization, accounting and auditing.
For example, the full workload identifier may be matched against ACLs to authorize actions requested by the peer and the identifier may be included in log messages to associate actions to the client workload for audit purposes.
A deployment may specify other authorization policies based on the specific details of how the workload identifier is constructed. The path portion of the workload identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
See <xref target="granular-auth"/> on additional security implications of workload identifiers.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="workload-identity">
        <name>Workload Identity</name>
        <t>The Workload Identifier is scoped within an issuer and therefore any sub-components (path portion of Identifier) are only unique within a trust domain defined by the issuer. Using a Workload Identifier without taking into account the trust domain could allow one domain to issue tokens to spoof identities in another domain. Additionally, the trust domain must be tied to an authorized issuer cryptographic trust anchor through some mechanism such as a JWKS or X.509 certificate chain. The association of an issuer, trust domain and a cryptographic trust anchor <bcp14>MUST</bcp14> be communicated securely out of band.</t>
      </section>
      <section anchor="workload-identity-token-and-proof-of-possession">
        <name>Workload Identity Token and Proof of Possession</name>
        <t><cref> TODO: this section needs to be reworked if WPT is removed as a primary option. </cref></t>
        <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. The WIT itself is not usable without a proof of possession.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Proof of Possession Lifespan</t>
          </li>
        </ul>
        <t>The proof of possession <bcp14>MUST</bcp14> be time limited. A PoP should only be valid over the time necessary for it to be successfully used for the purpose it is needed. This will typically be on the order of minutes.  PoPs received outside their validity time <bcp14>MUST</bcp14> be rejected.</t>
        <ul spacing="normal">
          <li>
            <t>Limiting Proof of Possession Scope</t>
          </li>
        </ul>
        <t>In order to reduce the risk of theft and replay the PoP should have a limited scope. For example, a PoP may be targeted for use with a specific workload and even a specific transaction to reduce the impact of a stolen PoP. In some cases a workload may wish to reuse a PoP for a period of time or have it accepted by multiple target workloads. A careful analysis is warranted to understand the impacts to the system if a PoP is disclosed allowing it to be presented by an attacker along with a captured WIT.</t>
        <ul spacing="normal">
          <li>
            <t>Replay Protection</t>
          </li>
        </ul>
        <t>A proof of possession includes the <tt>jti</tt> claim that <bcp14>MUST</bcp14> uniquely identify it, within the scope of a particular sender.
This claim <bcp14>SHOULD</bcp14> be used by the receiver to perform basic replay protection against tokens it has already seen.
Depending upon the design of the system it may be difficult to synchronize the replay cache across all token validators.
If an attacker can somehow influence the identity of the validator (e.g. which cluster member receives the message) then
replay protection would not be effective.</t>
        <ul spacing="normal">
          <li>
            <t>Binding to TLS Endpoint</t>
          </li>
        </ul>
        <t>The POP <bcp14>MAY</bcp14> be bound to a transport layer sender such as the client identity of a TLS session or TLS channel binding parameters. The mechanisms for binding are outside the scope of this specification.</t>
      </section>
      <section anchor="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><cref> TODO: this section needs to be reworked or eliminated if WPT is removed as a primary option. </cref></t>
        <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/wimse-id+jwt, per <xref target="iana-wit"/>.</t>
          </li>
          <li>
            <t>application/wimse-proof+jwt, per <xref target="iana-wpt"/>.</t>
          </li>
        </ul>
        <section anchor="iana-wit">
          <name>application/wimse-id+jwt</name>
          <t>Type name: application</t>
          <t>Subtype name: wimse-id+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/wimse-proof+jwt</name>
          <t><cref>Should we keep this? It is essential to the WPT definition so we probably should.</cref></t>
          <t>Type name: application</t>
          <t>Subtype name: wimse-proof+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>
          <t><cref>Should we keep this? It only applies to WPT-in-HTTP so probably not.</cref></t>
          <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="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="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="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA.HTTP.FIELDS" target="https://www.iana.org/assignments/http-fields">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JOSE.ALGS" target="https://www.iana.org/assignments/jose">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.JWT.CLAIMS" target="https://www.iana.org/assignments/jwt">
          <front>
            <title>JSON Web Token Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.MEDIA.TYPES" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.URI.SCHEMES" target="https://www.iana.org/assignments/uri-schemes">
          <front>
            <title>Uniform Resource Identifier (URI) Schemes</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-arch">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="7" month="July" year="2025"/>
            <abstract>
              <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as a
   running instance of software executing for a specific purpose.  This
   document discusses an architecture for designing and standardizing
   protocols and payloads for conveying workload identity and security
   context information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-05"/>
        </reference>
        <reference anchor="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>
        <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>
      </references>
    </references>
    <?line 748?>

<section anchor="dpop-esque-auth">
      <name>DPoP-Inspired Authentication</name>
      <t>This appendix defines an alternative mechanism that provides different
  security guarantees than HTTP Message Signatures. For protecting
  synchronous HTTP traffic, the use of HTTP Message Signatures is mandatory.
  However, future WIMSE profiles may adopt the DPoP-inspired mechanism and
  the Workload Proof Token (WPT) it defines. Since the current form of the
  WPT includes certain HTTP-specific dependencies (particularly in the <tt>aud</tt>
  and <tt>oth</tt> claims), it would need to be adapted to support non-HTTP
  protocols.</t>
      <t>The mechanism defined here is inspired by the OAuth DPoP specification <xref target="RFC9449"/>, and 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. When used with HTTP,
the WPT is sent in the <tt>Workload-Proof-Token</tt> header field of the request.
The ABNF syntax of the <tt>Workload-Proof-Token</tt> header field is:</t>
      <figure anchor="wpt-header-abnf">
        <name>Workload-Proof-Token Header Field ABNF</name>
        <sourcecode type="abnf"><![CDATA[
WPT =  JWT
]]></sourcecode>
      </figure>
      <t>where the <tt>JWT</tt> projection is defined in <xref target="wit-header-abnf"/>.</t>
      <t>A WPT <bcp14>MUST</bcp14> contain the following:</t>
      <ul spacing="normal">
        <li>
          <t>in the JOSE header:
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>alg</tt>: An identifier for an appropriate JWS asymmetric digital signature algorithm corresponding to
   the confirmation key in the associated WIT. The value <bcp14>MUST</bcp14> match the <tt>alg</tt> value of the <tt>jwk</tt> in the <tt>cnf</tt> claim of the WIT. See <xref target="to-wit"/> for valid values and restrictions.</t>
            </li>
            <li>
              <t><tt>typ</tt>: the WPT is explicitly typed, as recommended in <xref section="3.11" sectionFormat="of" target="RFC8725"/>,
   using the <tt>application/wimse-proof+jwt</tt> media type.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>in the JWT claims:
          </t>
          <ul spacing="normal">
            <li>
              <t><tt>aud</tt>: The audience <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 ================

eyJhbGciOiJFZERTQSIsInR5cCI6IndpbXNlLXByb29mK2p3dCJ9.eyJhdGgiOiJDTDR\
3amZwUm1OZi1iZFlJYllMblY5ZDVyTUFSR3dLWUUxMHdVd3pDMGpJIiwiYXVkIjoiaHR\
0cHM6Ly93b3JrbG9hZC5leGFtcGxlLmNvbS9wYXRoIiwiZXhwIjoxNzQ1NTA5MjEwLCJ\
qdGkiOiJlMzI5YmI4Njk2YWE0YWVjYTA0ODg2ZGQ3NmU3OGIyNiIsInd0aCI6InJvN3h\
GT1NHX2pZeG1VV2Z3ZXFrNVgxc2M2TDBzQ2o3NVdLVDkxZ014eFUifQ.oSegRTrBxuQN\
55oyWRK5PnPEZLhgRy0Va7BpxBw-a64E3map15dbDo9ArRcJ8M4Z4QZ829CCppfnuaLI\
ei1bBQ
]]></sourcecode>
      </figure>
      <t>The decoded JOSE header of the WPT from the example above is shown here:</t>
      <figure>
        <name>Example WPT JOSE Header</name>
        <sourcecode type="json"><![CDATA[
{
  "alg": "EdDSA",
  "typ": "wimse-proof+jwt"
}
]]></sourcecode>
      </figure>
      <t>The decoded JWT claims of the WPT from the example above are shown here:</t>
      <figure>
        <name>Example WPT Claims</name>
        <sourcecode type="json"><![CDATA[
{
  "ath": "CL4wjfpRmNf-bdYIbYLnV9d5rMARGwKYE10wUwzC0jI",
  "aud": "https://workload.example.com/path",
  "exp": 1740755048,
  "jti": "0c740386ca1dcad37de1b5f9de1b0705",
  "wth": "aA0W_oFJK7qV7zYhcmzR1KOXVCHjd2x6c4sOQLvE90Y"
}
]]></sourcecode>
      </figure>
      <t>An example of an HTTP request with both the WIT and WPT from prior examples is shown below:</t>
      <figure>
        <name>Example HTTP Request with WIT and WPT</name>
        <sourcecode type="http"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

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

{"do stuff":"please"}
]]></sourcecode>
      </figure>
      <t>To validate the WPT in the request, the recipient <bcp14>MUST</bcp14> ensure the following:</t>
      <ul spacing="normal">
        <li>
          <t>There is exactly one <tt>Workload-Proof-Token</tt> header field in the request.</t>
        </li>
        <li>
          <t>The <tt>Workload-Proof-Token</tt> header field value is a single and well-formed JWT.</t>
        </li>
        <li>
          <t>The signature algorithm in the <tt>alg</tt> JOSE header string-equal matches the <tt>alg</tt> attribute of the <tt>jwk</tt> in the <tt>cnf</tt> claim of the WIT.</t>
        </li>
        <li>
          <t>The WPT signature is valid using the public key from the confirmation claim of the WIT.</t>
        </li>
        <li>
          <t>The <tt>typ</tt> JOSE header parameter of the WPT conveys a media type of <tt>wimse-proof+jwt</tt>.</t>
        </li>
        <li>
          <t>The <tt>aud</tt> claim of the WPT matches the target URI, or an acceptable alias or normalization thereof, of the HTTP request
 in which the WPT was received, ignoring any query and fragment parts. 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="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-sheffer-wimse-s2s-reduced-00">
        <name>draft-sheffer-wimse-s2s-reduced-00</name>
        <ul spacing="normal">
          <li>
            <t>A proposal to restructure the document.</t>
          </li>
        </ul>
      </section>
      <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 oth claim</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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
i6YrOq36gwFv7p1dH+JkA1hQ/eWyNLyzx/dR29tr3Hj3r63b5n3npHljj+qz
RnESd2v27f11s967OerYnb3SZfHuwSg3xqd+3S/tnR2ees5JxT1/qm01q9el
RrsO/1+B+byhDVtptHtFWMPsvDp6aRzOYN1XE1zb3fjywZjftW232Tkdn1ev
txqbtWKjczS6e7p6uhvfvd5t3g8b1SOv0b52YZZXu1NHAG5ZndLrfTt4Ptu8
2b7rlB6MWff4enq3uRefbTVn953m5H7sPZ3d2s+9cRx1N49Gdb9YeJmcV28P
r4f3m6+jfCnf2bqpfe1+7QwPbne+nJ8CXLzd5/jJGg5mp624cX545e+c7rjR
Tr88fs1fuOX87WjnaHyzvT3a/th8nXpfG9Wb025lpvzfAqtQkZXObx3X3lJq
pTvcBl0EuZ+mqGm0Tjee8qBWF8UHVzfjSNyNAt/4BvxxDcjd2r65RkRwLYdP
Rq6NT06ngMBlfgSay5rM5hJKzZrxXW5N7KamXRta4QmtcGHxSu15x9qRy76x
eJDXYF3fiM+vATNXv2gbs6utCu2CnvbCZ366WQY5PHk+iuf4/PzzRfLsBZ+U
Dm9vn/te88vZzU1Uj+5uo+vng+LW6dg77jiHJ18vb6bB9PBob7M74Oyu7/C/
3wlqoCvACKXdbZhqs1wq0kPXiuXD4sc98RDkbpyra29au91yt/+xvLtlbZcs
u7vd6/a3en2rWHJK4jBA6VKHsf/hgwAYpoh9kG4AFd379ikd0jHIAxKHgqI8
UXrlxdDoIZsLpIsCGY4HssPUrExCdLJuFjfLZmlnf6u8Xyqax402av2J6AIc
vQl0HeSDKk6QyMKbKd1ISiIJ5B43SG+WfDFKS9jAopjyJ5oY5j0JWw389Pgu
WD3iHByouqhFwfoef3Q8NADbfzI6QUbVJbGDtIuULsPC9IK56CdWL4QkMT8J
imw6XhQKH+liPC6z1wAXRAui4017rs2pFULaich2nMs6GWCLORG+oDQwoZOg
spFLSBDZBlEOOu18VkLuLivmAAXFWUd4vzOXcsnd/fkrih8ReYvss9uP88O7
z1+DL7fPxwdnfv6+43xu73reneNcTgbOoXV789Itj+60S6SoODt08qhAZC9W
ApfPzlxeLgsjh/Lia1tanIRdUh2KrskJ4pgNe+BAXIVa69HGijf10Ff0y/ki
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
GSFPdsv9h4HGK14COe71jk5fbuIqHe1Y+JrfwIJgSeQTBSIIEnMkHuYUp+9G
juhmbPkC/FrqnapNkpR0FeSXxVGUGRLxQhmzFlpNSLYnuSzfaDGfiLJ4H7l5
4/5050R7+4tL4KEZTv6cpwWCagtmBrfDJQ0gmlhw5WRcFgN9cS8SdSWPZIGb
zjoUuiUSgli2nsIOuiGFHojevCfakBHXACLTZBK+S3wnqzbIzH+9MStcCQu+
EgNX/KWnp2fkKSUadjC0nt1AdranMuwiaEUXiiztE4J5IlgiR3YsDiTygl6S
tCsyQVLrx5CIdoCCEtaX3hfCFtyqHBOzBf2SgzcQg5NS96r+NW6HjAXCvK8X
012cGM+R61VwlDeuE5VSleKtugAi6+fRInfsYjiwQOnkc4wFQXOY1uDke6aF
6sWyFqppHeBf2EtVFSvL9k29PZh3N/fGerOioX2MLYZOq+3q1YOxZY3vZ9fj
0vm9W3Lvj7zTO89rdL278n31Zt6+Pmpdbdlnnevrl8aJfWNvTaqN48kpFS27
vRmJAmAPhiwBttXdOg27x3vD+8MylQPTioHN7m6vAvzy/nY4gy9fmq9YZqxS
bjzVZmeHpw+GLBHmNV7r5btxfbv5NNq869SKd52bp7t2pXheHWzeH19uNcfX
W+fH9Tl1bPLtokVbPn1ubg0fjON2qXlyuzm5d45LNzeb91v3t0dh82bw0tts
bLarB6+Xm8FW88Y+u6mOXu6LpW3n6BrrtQUtZ3DVDg9eppfNB6NcDuadq8/l
C/+idn82HFzNizfW7sHk5WCWt3a2a1tja1Iq291qsFcJr3qnHxvb99uX9x83
9w4PJ5O+P7XO6g+G45a6B5eLrVEn8apueota/nuaol78k01Rk5qRqQ6oSg16
o73mxc82QV291h80QQXKgUs7PNuePfUnV+NmP9+17+rduzP/Zs8uh43K1fHs
812tVJxdz14Pi0913hIoJvgdtQjZ//BB2nwKescazIRdSzczLe6Wy8Xtj3rf
0mIPHm993OlZJbtn2Vu7tlPqlvt7+J/iblH0LZ3xOq1KsfMlODr9vPv1Zvf1
btgbv16VPp/f3hyePNmbLzu97ej88uy5tle8exu8SffSSrq3mjB9Sm5BzE7V
LJJJhQrek9BNUmKiTM/Cf0EhzYtz4JkE2GyZ4WUnkCl9mfJtIwakSgzsmwec
tVja+TKu2MVjd2bdB6PrzZ0vxb3iZqlY/L/U9a05t12u7th4wq5rI+6RFton
RNguWqUK1kLcRsLZ8yZbN9e12c3Jad16vTro1KJyY3S3eeN5m93rYb1TbW7f
XBfj1rUd9UYPRql0M2peWcfF7ZvW6V6/lSKks+br9Xbj9XIbRp/c3V6Kzm8V
rOW4xZV4J0Wr9WDA6p6uxnevva37cdO7f7reanTqr0BsXxub9c3m66l317mb
N6rwTueuiOS6t3Xj4nrtTS/ubV4DmX8w9rLE/bV3fPNkde4nd/OSxgQAUE/5
jne01Z3227OOc3N/6ccXQ+/1udV+MC5m/a3d/Pasb72e3leu7JO7cWev9SXw
Dsr+59rX2df2/aR+++UsuLmp9+afizcHtd0jq3jYeJ5tDoxl5r0VJTxXcsUH
Yzlf/DmuCFx0KV/8Oa74YKSPs9So0nEKrlifwaEVG9XGdnPcHDY6V093ncvX
5uaVBwdYun/yRvftI7fxYFR7M8ZfwRfHRweNI7vfLd5/br3aLzdP9k6nM3zq
3k5ajev4onN0X20dT0YNf7B593r12i4dNWBHo+ty42iEfLGzd3X/1XVunWr+
emDH3bv+x/vmqL/5ZefLTvfL6LTVH51XL+2vW18uq63W8fnwpntVudr6ehk8
GOfTYuvVHbrHOyeH0fEs8vrBdsd+9k/KlUvD+LaGJd7jab+/tr82QXMHVtBc
TgiJ0l3plE4jcMR1MmVP2BGSthnwL7L3QLogftZe25ZeCSBSFG+M5QfeZa/O
iKI01Lu+1JQ9lFc9DsmfOZ6XF0U4MaJXDLi0Z4Z036CJVpcT0KzqD/KwJMtL
1VXjV62YO1n9lEVXrAPhvNj7QDOvLnbOzVihV41Mlt/UNlR0lS5MsMbNTXCk
qZaav2ZNuWpcNNVmZr1op8CSWGi5Dqovci4pt4Xjd6jIp2YxZYtq0M/JMXXe
bCAs03bbmZWk1ea43x2nls+F9RbPPmu+/YGxdGmlHoNtlngyes1Y2GtvpECC
FlXZQ0UVSZDNJwR4ycBKRg5MZKTUECuiiqekQQlde8EkO/W5IC0GNBhm3wpV
+zb2m+ppXDJxWKxqplTD7Kr0w9LNAirTceqkWgynnU3LO9FS98RlnV8IVKZK
yMn4PpI8VAkW6pLBaaOie4aoU5WU103hg6Frt4QbMjVEq1ND14qWqEx4vDV4
52nq95I6BHAGy2ypi0u3EvAuh6cVZ01j75k+MUsumzT+F03KJ89nzsFWWQvc
KutbepUGLzP4B5eZ/TjB25zeelwkF6AUL/Nz9aSy7CgTEfEibD/KkGOkDaSL
eQlBmK4JJzKzNYuR8skI01Fh2S5UE1cRwmYwAFS9EU4jDwI9UZq5bE4RvIXy
ABjhguHlDhbj0TzfAho4cA+zDmnZi8eykDCanRqv7ljW00xOHVRT6mIaccaO
jHsyTwD6QTgXkVuo2NRgSRiXyKKJsBHKO81sjbOxVIjWL7+Ydmj14zycLlrQ
RJZrtBnluVCAnQfdhLqiol83iDjEl/yeHKLFx5zU9VQjakmzOJyMqsgXdzmy
B5UqCWvASa6UCXB6zxA7OERNuFX1OOqVrqRU8uyvZnXhE61Mx4oqWORfsbjh
2oqAKGB4VFSG9kZJd8EAA0LfBZcyw4XzbcnYwIXwFjcjg0tV300fCLREPXEb
K3o7ueR8fs22zNOjhJJYCux6hC+30NE646IlyJa5GqpWCZ6DP0XJUQrwRLKC
kXDZNpbvgMA2Q4CL1aIUVwCxrkASH/UibosdS7d7tFSoDDh5GSiJvpOrxXoH
KCPIapiyWCt+aYmtyE8xwDyQkjqleQZeMJgnRT7TsMY9vmu7WyJqDnsTw4lw
PZSkU8UagVJKSGZPhDEmQmnron50VJPZ0Fgt9FezgfQj03oWASeblHIGqm2r
Q7W66H/Hcj3U4Fbks2b7xRYUaqYGp6UAyJKZNekiMzO+w40GqFA8zi2dyzp5
51JRotbwu8C4yWCkfpbkKGK7klYmKhKQDANR5zfVaxFkcJBNxwrdyYOPkTZ0
9uQLoOqkOiUAIIKsTeM2OD9ell4jj0pvBDfSc2yShd+3ixJRWRE/buuVt/Rj
v3BRm0gvTK/VyZkNKPlHuSQGDbNe1/RibGsG7mBtCZUjpGugi0ULZAB4UcGK
MaXTu6qnehKGQZKgZ/mDKTUS/JVOfh1BrVX2hpPYkNQq6wjBe7e0jhEBxbG5
DpOQgsZAhiUNSgcqqhDRJPqS8Q9jivD1hTjJPJd41II733VcxBTryELgTnWO
+XXRpAITFHrBhFKZV3FXfSS5xXRA65DZu9w2sv5KGq+Mb/ucdOHYn9b6oGY5
0prNqBgJuZydO+gjsvyRQCHzM6pCHpB+uoU0M521YyuUw0xrR3xVtXxQ+c0j
UPv1byiIV9CIiNPjQg/jRlBOShL4U6W//w+XUIxYgMQAAA==

-->

</rfc>
