<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-arch-07" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="WIMSE Architecture">Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-07"/>
    <author initials="J." surname="Salowey" fullname="Joseph Salowey">
      <organization>CyberArk</organization>
      <address>
        <email>joe@salowey.net</email>
      </address>
    </author>
    <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yaroslavros@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 50?>

<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 software executing for a specific purpose, potentially comprising one or more running instances.  This document discusses an architecture for designing and standardizing protocols and payloads for conveying workload identity and security context information.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Workload Identity in Multi System Environments Working Group mailing list (wimse@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/jsalowey/wimse-arch"/>.</t>
    </note>
  </front>
  <middle>
    <?line 54?>

<section anchor="introduction">
      <name>Introduction</name>
      <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 systems composed of workloads, where a workload is defined as a software that consists of one or more running instances executing for a specific purpose.</t>
      <t>Workloads need to be provisioned with an identity when they are started. Often, additional information needs to be provided, such as trust anchors and security context details. Workloads make use of identity information and additional context information to perform authentication and authorization. Workload identity credentials are used to authenticate communications between workloads.</t>
      <t>This architecture considers two ways to express identity information: X.509 certificates, which are often used in the TLS layer, and JSON Web Tokens (JWTs) used at the application layer. The applicability of given token format depends on application and security context and will be explored in later sections.</t>
      <t>Once the workload is started and has obtained identity information, it can start performing its functions. When the workload is invoked it may require interaction with other workloads. An example of such interaction is shown in <xref target="I-D.ietf-oauth-transaction-tokens"/> where an externally-facing endpoint is invoked using conventional authorization mechanism, such as an OAuth 2.0 access token. The interaction with another workload may require the security context associated with the authorization to be passed along the call chain.</t>
      <t>In the rest of the document we describe terminology and use cases, discuss details of the architecture, and describe security considerations for this architecture.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <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?>

<t>This document uses the following terms:</t>
      <ul spacing="normal">
        <li>
          <t>Workload</t>
        </li>
      </ul>
      <t>A workload is an independently addressable and executable software entity. This may include microservices, containers, virtual machines, serverless functions, or similar components that initiate or receive network communications. A workload typically interacts with other parts of a larger system.</t>
      <ul spacing="normal">
        <li>
          <t>Workload Instance</t>
        </li>
      </ul>
      <t>A workload instance is a single running instantiation of a workload at a point in time such as a container, a VM, or a serverless invocation. Workload instances may exist for a very short duration of time (a fraction of a second) and run for a specific purpose such as to provide a response to an API request. Other kinds of workload instances may execute for a very long duration, such as months or years. Examples include database services and machine learning training jobs. The number of instances for a workload may vary over time due to scaling, failover, or orchestration behavior.</t>
      <ul spacing="normal">
        <li>
          <t>Security Context</t>
        </li>
      </ul>
      <t>A security context provides information needed for a workload to perform its function. This information is often used for authorization, accounting and auditing purposes and often contains information about the request being made. Some examples include user information, software and hardware information or information about what processing has already happened for the request. Different pieces of context information may originate from different sources.</t>
      <ul spacing="normal">
        <li>
          <t>Identity Proxy</t>
        </li>
      </ul>
      <t>The identity proxy is an intermediary that can inspect, replace or augment workload identity and security context information. A transparent network service such as a security gateway may act as an identity proxy, or the role can be implemented in a service performing explicit connection processing, such as an ingress gateway or a Content Delivery Network (CDN) service. The identity proxy <bcp14>MAY</bcp14> introduce additional context based on source identifier, communication properties and administrative policy. This context <bcp14>MAY</bcp14> be communicated as a transaction token <xref target="I-D.ietf-oauth-transaction-tokens"/>.</t>
      <ul spacing="normal">
        <li>
          <t>Remote Attestation</t>
        </li>
      </ul>
      <t>The term "attestation", as defined in <xref target="RFC9683"/>, refers to the process of generating and evaluating remote attestation Evidence. <xref target="RFC9334"/> describes Evidence and the different communication patterns.</t>
      <ul spacing="normal">
        <li>
          <t>Workload Identity Credential</t>
        </li>
      </ul>
      <t>A credential that contains a workload identifier (<xref target="WIMSE-ID"/>) used for service to service authentication. The credential may be bound to a cryptographic key and may require that the presenter provide proof of possession of the secret key material. Examples of such credentials include Workload Identity Certificates and the Workload Identity Token defined in <xref target="I-D.ietf-wimse-s2s-protocol"/>. Deployments may also deploy bearer tokens as workload identity credentials to interoperate with legacy systems that do not support credentials bound to keys.</t>
      <ul spacing="normal">
        <li>
          <t>Trust Domain</t>
        </li>
      </ul>
      <t>A trust domain is a logical grouping of systems that share a common set of security controls and policies. As described in <xref target="I-D.ietf-wimse-s2s-protocol"/>, trust domains should be identified by a fully qualified domain name associated with the organization defining the trust domain.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <section anchor="whimsical-identity">
        <name>Workload Identity Concepts</name>
        <t>The Workload identity architecture consists of three basic building blocks: trust domain, workload identifier and identity credentials. These components are sufficient for establishing authentication, authorization and accounting processes. More complex workload identity constructs can be created from these basic building blocks.</t>
        <section anchor="trust-domain">
          <name>Trust Domain</name>
          <t>A trust domain is a logical grouping of systems that share a common set of security controls and policies. Workload certificates and tokens are issued under the authority of a trust domain. Trust domains <bcp14>SHOULD</bcp14> be identified by a fully qualified domain name associated with the organization defining the trust domain. The FQDN format of a trust domain helps to ensure global uniqueness of the trust domain identifier. A trust domain maps to one or more trust anchors for validating X.509 certificates and a mechanism to securely obtain a JWK Set <xref target="RFC7517"/> for validating WIMSE WIT tokens. This mapping <bcp14>MUST</bcp14> be obtained through a secure mechanism that ensures the authenticity and integrity of the mapping is fresh and not compromised. This secure mechanism is out of scope for this document.</t>
          <t>A single organization may define multiple trust domains for different purposes such as different departments or environments. Each trust domain must have a unique domain identifier. Workload identifiers are scoped within a trust domain as specified in <xref section="4.3" sectionFormat="of" target="WIMSE-ID"/>. If two identifiers differ only by trust domain they still refer to two different entities.</t>
        </section>
        <section anchor="workload-identifier">
          <name>Workload Identifier</name>
          <t>A workload identifier uniquely names a workload within a trust domain and is carried in workload identity credentials.</t>
          <t>The format, syntax, comparison rules, and validation requirements for workload identifiers are defined in <xref target="WIMSE-ID"/>.</t>
          <t>In addition the URI <bcp14>MUST</bcp14> include an authority that identifies the trust domain within which the identifier is scoped. The trust domain <bcp14>SHOULD</bcp14> be a fully qualified domain name belonging to the organization defining the trust domain to help provide uniqueness for the trust domain identifier. The scheme and scheme specific part are not defined by this specification. An example of an identifier format that conforms to this definition is <xref target="SPIFFE-ID"/>.</t>
          <t>Two credentials containing the same workload identifier value represent the same workload only when validated under the same trust domain and issuer trust configuration.</t>
          <t>A workload identifier <bcp14>MAY</bcp14> represent either a logical workload or a specific workload instance depending on deployment policy. Relying parties <bcp14>MUST</bcp14> interpret the identifier according to identity semantics to the trust domain.</t>
        </section>
        <section anchor="workload-identity-credentials">
          <name>Workload Identity Credentials</name>
          <t>An agent provisions the identity credentials to the workload. These credentials are represented in the form of JWT tokens and/or X.509 certificates.</t>
          <t>JWT bearer tokens are presented to another party as a proof of identity. They may be signed to prevent forgery, however since these credentials are often not bound to other information it is possible that they could be stolen and reused elsewhere. To mitigate these risks and make the token more generally useful the WIMSE architecture defines a workload identity credential that binds a JWT to a cryptographic key.</t>
          <t>Both workload identity certificate and workload identity token (WIT) credentials consist of two parts:</t>
          <ul spacing="normal">
            <li>
              <t>a certificate or WIT is a signed data structure that contains a public key and identity information</t>
            </li>
            <li>
              <t>a corresponding private key</t>
            </li>
          </ul>
          <t>The workload identity certificate or WIT is presented during authentication, however the private key is kept secret and only used in cryptographic computation to prove that the presenter has access to the private key corresponding to the public key.</t>
        </section>
      </section>
      <section anchor="workload-identity-system-scenarios">
        <name>Workload Identity System Scenarios</name>
        <section anchor="basic-workload-identity-scenario">
          <name>Basic Workload Identity Scenario</name>
          <figure anchor="arch-basic">
            <name>Basic example workload application system.</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="496" width="704" viewBox="0 0 704 496" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,176 L 8,240" fill="none" stroke="black"/>
                  <path d="M 112,176 L 112,240" fill="none" stroke="black"/>
                  <path d="M 168,64 L 168,400" fill="none" stroke="black"/>
                  <path d="M 184,80 L 184,416" fill="none" stroke="black"/>
                  <path d="M 200,32 L 200,64" fill="none" stroke="black"/>
                  <path d="M 200,416 L 200,480" fill="none" stroke="black"/>
                  <path d="M 216,64 L 216,80" fill="none" stroke="black"/>
                  <path d="M 232,80 L 232,416" fill="none" stroke="black"/>
                  <path d="M 280,112 L 280,208" fill="none" stroke="black"/>
                  <path d="M 280,240 L 280,384" fill="none" stroke="black"/>
                  <path d="M 312,80 L 312,96" fill="none" stroke="black"/>
                  <path d="M 312,128 L 312,144" fill="none" stroke="black"/>
                  <path d="M 312,208 L 312,288" fill="none" stroke="black"/>
                  <path d="M 312,352 L 312,368" fill="none" stroke="black"/>
                  <path d="M 312,400 L 312,416" fill="none" stroke="black"/>
                  <path d="M 376,144 L 376,208" fill="none" stroke="black"/>
                  <path d="M 376,288 L 376,352" fill="none" stroke="black"/>
                  <path d="M 432,80 L 432,144" fill="none" stroke="black"/>
                  <path d="M 432,352 L 432,416" fill="none" stroke="black"/>
                  <path d="M 440,208 L 440,288" fill="none" stroke="black"/>
                  <path d="M 528,224 L 528,240" fill="none" stroke="black"/>
                  <path d="M 528,272 L 528,288" fill="none" stroke="black"/>
                  <path d="M 592,112 L 592,224" fill="none" stroke="black"/>
                  <path d="M 592,288 L 592,384" fill="none" stroke="black"/>
                  <path d="M 648,224 L 648,288" fill="none" stroke="black"/>
                  <path d="M 696,32 L 696,480" fill="none" stroke="black"/>
                  <path d="M 200,32 L 456,32" fill="none" stroke="black"/>
                  <path d="M 576,32 L 696,32" fill="none" stroke="black"/>
                  <path d="M 168,64 L 216,64" fill="none" stroke="black"/>
                  <path d="M 184,80 L 232,80" fill="none" stroke="black"/>
                  <path d="M 312,80 L 432,80" fill="none" stroke="black"/>
                  <path d="M 280,112 L 312,112" fill="none" stroke="black"/>
                  <path d="M 432,112 L 592,112" fill="none" stroke="black"/>
                  <path d="M 312,144 L 368,144" fill="none" stroke="black"/>
                  <path d="M 384,144 L 432,144" fill="none" stroke="black"/>
                  <path d="M 8,176 L 112,176" fill="none" stroke="black"/>
                  <path d="M 112,208 L 160,208" fill="none" stroke="black"/>
                  <path d="M 232,208 L 280,208" fill="none" stroke="black"/>
                  <path d="M 312,208 L 440,208" fill="none" stroke="black"/>
                  <path d="M 528,224 L 648,224" fill="none" stroke="black"/>
                  <path d="M 8,240 L 112,240" fill="none" stroke="black"/>
                  <path d="M 232,240 L 280,240" fill="none" stroke="black"/>
                  <path d="M 440,256 L 528,256" fill="none" stroke="black"/>
                  <path d="M 312,288 L 440,288" fill="none" stroke="black"/>
                  <path d="M 528,288 L 648,288" fill="none" stroke="black"/>
                  <path d="M 312,352 L 368,352" fill="none" stroke="black"/>
                  <path d="M 384,352 L 432,352" fill="none" stroke="black"/>
                  <path d="M 280,384 L 312,384" fill="none" stroke="black"/>
                  <path d="M 432,384 L 592,384" fill="none" stroke="black"/>
                  <path d="M 168,400 L 184,400" fill="none" stroke="black"/>
                  <path d="M 184,416 L 232,416" fill="none" stroke="black"/>
                  <path d="M 312,416 L 432,416" fill="none" stroke="black"/>
                  <path d="M 200,480 L 696,480" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="536,256 524,250.4 524,261.6" fill="black" transform="rotate(0,528,256)"/>
                  <polygon class="arrowhead" points="384,352 372,346.4 372,357.6" fill="black" transform="rotate(90,376,352)"/>
                  <polygon class="arrowhead" points="384,144 372,138.4 372,149.6" fill="black" transform="rotate(270,376,144)"/>
                  <polygon class="arrowhead" points="320,384 308,378.4 308,389.6" fill="black" transform="rotate(0,312,384)"/>
                  <polygon class="arrowhead" points="320,112 308,106.4 308,117.6" fill="black" transform="rotate(0,312,112)"/>
                  <polygon class="arrowhead" points="168,208 156,202.4 156,213.6" fill="black" transform="rotate(0,160,208)"/>
                  <g class="text">
                    <text x="480" y="36">Trust</text>
                    <text x="540" y="36">Boundary</text>
                    <text x="504" y="100">(3)</text>
                    <text x="364" y="116">Workload</text>
                    <text x="408" y="116">1</text>
                    <text x="208" y="132">G</text>
                    <text x="208" y="148">a</text>
                    <text x="208" y="164">t</text>
                    <text x="208" y="180">e</text>
                    <text x="400" y="180">(1)</text>
                    <text x="136" y="196">(2)</text>
                    <text x="208" y="196">w</text>
                    <text x="256" y="196">(3)</text>
                    <text x="32" y="212">App</text>
                    <text x="76" y="212">Client</text>
                    <text x="208" y="212">a</text>
                    <text x="208" y="228">y</text>
                    <text x="376" y="244">CA/Credential</text>
                    <text x="488" y="244">(1)</text>
                    <text x="208" y="260">S</text>
                    <text x="256" y="260">(4)</text>
                    <text x="376" y="260">Service</text>
                    <text x="588" y="260">Workload</text>
                    <text x="632" y="260">3</text>
                    <text x="208" y="276">e</text>
                    <text x="208" y="292">r</text>
                    <text x="208" y="308">v</text>
                    <text x="208" y="324">i</text>
                    <text x="400" y="324">(1)</text>
                    <text x="208" y="340">c</text>
                    <text x="208" y="356">e</text>
                    <text x="496" y="372">(4)</text>
                    <text x="364" y="388">Workload</text>
                    <text x="408" y="388">2</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                        +--------------------------------Trust Boundary---------------+
                        |                                                             |
                    .---+-.                                                           |
                    | .---+-.         +--------------+                                |
                    | |     |         |              |       (3)                      |
                    | |     |     +--->  Workload 1  +-------------------+            |
                    | |  G  |     |   |              |                   |            |
                    | |  a  |     |   +-------^------+                   |            |
                    | |  t  |     |           |                          |            |
+------------+      | |  e  |     |           | (1)                      |            |
|            | (2)  | |  w  | (3) |           |                          |            |
| App Client +----->| |  a  +-----+   +-------+-------+                  |            |
|            |      | |  y  |         |               |          +-------+------+     |
+------------+      | |     +-----+   | CA/Credential |    (1)   |              |     |
                    | |  S  | (4) |   |    Service    +---------->   Workload 3 |     |
                    | |  e  |     |   |               |          |              |     |
                    | |  r  |     |   +-------+-------+          +-------+------+     |
                    | |  v  |     |           |                          |            |
                    | |  i  |     |           | (1)                      |            |
                    | |  c  |     |           |                          |            |
                    | |  e  |     |   +-------v------+                   |            |
                    | |     |     |   |              |      (4)          |            |
                    | |     |     +--->  Workload 2  +-------------------+            |
                    '-+     |         |              |                                |
                      '-+---'         +--------------+                                |
                        |                                                             |
                        |                                                             |
                        |                                                             |
                        +-------------------------------------------------------------+
]]></artwork>
            </artset>
          </figure>
          <t>The above diagram presents a basic workload application system.  The large box represents a trust domain within which the workload application is hosted.  Within this example
there are three workloads, a gateway service, that accepts external clients and a CA/credential service that issues workload identity credentials for the trust domain.  External
to the workload application system there is an application client that calls APIs on workloads.</t>
          <t>Here is a brief summary of each component</t>
          <ul spacing="normal">
            <li>
              <t>Trust Domain</t>
            </li>
          </ul>
          <t>The large box represents a trust domain of the application that is composed of several workloads.  A trust domain may have a more complex internal structure with more workloads, multiple gateways, internal infrastructure, and other services.</t>
          <ul spacing="normal">
            <li>
              <t>Workload</t>
            </li>
          </ul>
          <t>Three workloads are shown.  Each workload is an independently addressable software entity that may consist of one or more running instances executed for a specific purpose.  Workloads obtain their identity credentials from a Credentials Service (1) and use them to authenticate to other workloads and systems in the process
of sending and receiving requests to and from external systems or other internal workloads.</t>
          <ul spacing="normal">
            <li>
              <t>Gateway Service</t>
            </li>
          </ul>
          <t>A gateway service typically acts as an intermediary between the internal application trust domain and external systems. It typically consists of multiple resilient instances. The gateway is responsible for ensuring appropriate isolation between external and internal domains. It also routes incoming requests to the correct workload.
The gateway <bcp14>MAY</bcp14> also implement identity proxy functionality including authentication, token exchange, and token transformation.</t>
          <ul spacing="normal">
            <li>
              <t>CA/Credential Service</t>
            </li>
          </ul>
          <t>In this diagram the token/Credential service is a service responsible for issuing workload identities to workloads in the same trust domain. The credentials are often X.509 certificate-based or JWT-based.</t>
          <t>High level flows within the diagram</t>
          <ul spacing="normal">
            <li>
              <t>(1) Workload Identity Credential Distribution</t>
            </li>
          </ul>
          <t>Workloads typically retrieve their workload identity credentials early in their lifecycle from a credentials service associated with their trust domain. The protocol interaction for
obtaining credentials varies with deployment and is not detailed here.</t>
          <ul spacing="normal">
            <li>
              <t>(2) Application client Requests</t>
            </li>
          </ul>
          <t>Clients send API requests to the application. In the example above, the gateway routes the request to the correct workload. In addition, the gateway may assist in authenticating the incoming request and provide information resulting from the authentication to the target workload. The authentication exchange is not covered in detail in this example.
The client request is typically made over HTTPS, but other protocols may be used in some systems. The gateway usually terminates the TLS session so it has visibility into the request in order to route it correctly.</t>
          <ul spacing="normal">
            <li>
              <t>(3) API request to workload 1</t>
            </li>
          </ul>
          <t>The gateway is configured to forward requests to the correct workload.  The gateway often modifies the request to include specific authentication information about the application client and to remove any information that should not be forwarded internally.  The gateway authenticates the workload before forwarding the request.  This authentication usually uses TLS. The target workload may authenticate the gateway using TLS or some other means. As part of servicing the request the workload must make a request to another workload in the system.  In this scenario the workload is making a request to workload 3 over HTTPS.  Workload 1 may be able to authenticate the identity of workload 3 through the TLS protocol to ensure it is making a request of the right party.  Workload 3 will authenticate workload 1 using its workload identity credentials. If the Workload Identity Credentials are workload identity certificates then this can happen through TLS client authentication (mutual TLS). Alternatively, the workloads can use a JWT based authentication mechanism to authenticate one another. Workload 3 can use the authenticated identity of workload 1 to determine which APIs workload 1 is authorized to invoke, and to associated the authenticated identity with logs and other audit information.</t>
          <ul spacing="normal">
            <li>
              <t>(4) API request to workload 2</t>
            </li>
          </ul>
          <t>Similarly to the previous flow, the gateway may determine that for another API call, the application client's request needs to be handled by workload 2. The case behaves the same as the previous flow except that the gateway may need to authenticate workload 2 before forwarding traffic to it. Workload 3 will then authorize and audit the request based on the authenticated identity of workload 2. Workload 2 and workload 1 may be authorized to use different APIs on workload 3. If workload 1 or 2 makes an API request that it is not authorized for, then workload 3 will reject the request.</t>
        </section>
        <section anchor="context-and-workload-identity">
          <name>Context and workload Identity</name>
          <figure anchor="arch-context">
            <name>Context example workload application system.</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="512" width="544" viewBox="0 0 544 512" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,208 L 8,256" fill="none" stroke="black"/>
                  <path d="M 72,208 L 72,256" fill="none" stroke="black"/>
                  <path d="M 120,64 L 120,400" fill="none" stroke="black"/>
                  <path d="M 136,80 L 136,416" fill="none" stroke="black"/>
                  <path d="M 152,32 L 152,64" fill="none" stroke="black"/>
                  <path d="M 152,416 L 152,480" fill="none" stroke="black"/>
                  <path d="M 168,64 L 168,80" fill="none" stroke="black"/>
                  <path d="M 184,80 L 184,416" fill="none" stroke="black"/>
                  <path d="M 240,208 L 240,272" fill="none" stroke="black"/>
                  <path d="M 344,64 L 344,160" fill="none" stroke="black"/>
                  <path d="M 344,208 L 344,272" fill="none" stroke="black"/>
                  <path d="M 400,208 L 400,272" fill="none" stroke="black"/>
                  <path d="M 480,64 L 480,160" fill="none" stroke="black"/>
                  <path d="M 512,208 L 512,272" fill="none" stroke="black"/>
                  <path d="M 536,32 L 536,480" fill="none" stroke="black"/>
                  <path d="M 152,32 L 344,32" fill="none" stroke="black"/>
                  <path d="M 464,32 L 536,32" fill="none" stroke="black"/>
                  <path d="M 120,64 L 168,64" fill="none" stroke="black"/>
                  <path d="M 344,64 L 480,64" fill="none" stroke="black"/>
                  <path d="M 136,80 L 184,80" fill="none" stroke="black"/>
                  <path d="M 184,96 L 336,96" fill="none" stroke="black"/>
                  <path d="M 192,128 L 344,128" fill="none" stroke="black"/>
                  <path d="M 344,160 L 480,160" fill="none" stroke="black"/>
                  <path d="M 8,208 L 72,208" fill="none" stroke="black"/>
                  <path d="M 240,208 L 344,208" fill="none" stroke="black"/>
                  <path d="M 400,208 L 512,208" fill="none" stroke="black"/>
                  <path d="M 72,240 L 112,240" fill="none" stroke="black"/>
                  <path d="M 184,240 L 232,240" fill="none" stroke="black"/>
                  <path d="M 344,240 L 392,240" fill="none" stroke="black"/>
                  <path d="M 8,256 L 72,256" fill="none" stroke="black"/>
                  <path d="M 240,272 L 344,272" fill="none" stroke="black"/>
                  <path d="M 400,272 L 512,272" fill="none" stroke="black"/>
                  <path d="M 120,400 L 136,400" fill="none" stroke="black"/>
                  <path d="M 136,416 L 184,416" fill="none" stroke="black"/>
                  <path d="M 152,480 L 536,480" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="400,240 388,234.4 388,245.6" fill="black" transform="rotate(0,392,240)"/>
                  <polygon class="arrowhead" points="344,96 332,90.4 332,101.6" fill="black" transform="rotate(0,336,96)"/>
                  <polygon class="arrowhead" points="240,240 228,234.4 228,245.6" fill="black" transform="rotate(0,232,240)"/>
                  <polygon class="arrowhead" points="200,128 188,122.4 188,133.6" fill="black" transform="rotate(180,192,128)"/>
                  <polygon class="arrowhead" points="120,240 108,234.4 108,245.6" fill="black" transform="rotate(0,112,240)"/>
                  <g class="text">
                    <text x="368" y="36">Trust</text>
                    <text x="428" y="36">Boundary</text>
                    <text x="408" y="100">Context</text>
                    <text x="272" y="116">(3)</text>
                    <text x="408" y="132">Service</text>
                    <text x="272" y="148">(c)</text>
                    <text x="160" y="164">G</text>
                    <text x="160" y="180">a</text>
                    <text x="40" y="196">(1)</text>
                    <text x="160" y="196">t</text>
                    <text x="160" y="212">e</text>
                    <text x="48" y="228">App</text>
                    <text x="96" y="228">(2)</text>
                    <text x="160" y="228">w</text>
                    <text x="208" y="228">(4)</text>
                    <text x="376" y="228">(5)</text>
                    <text x="44" y="244">Client</text>
                    <text x="160" y="244">a</text>
                    <text x="284" y="244">workload</text>
                    <text x="328" y="244">1</text>
                    <text x="452" y="244">workload</text>
                    <text x="496" y="244">2</text>
                    <text x="96" y="260">(a)</text>
                    <text x="160" y="260">y</text>
                    <text x="208" y="260">(c)</text>
                    <text x="376" y="260">(c)</text>
                    <text x="160" y="292">S</text>
                    <text x="160" y="308">e</text>
                    <text x="160" y="324">r</text>
                    <text x="160" y="340">v</text>
                    <text x="160" y="356">i</text>
                    <text x="160" y="372">c</text>
                    <text x="160" y="388">e</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                  +------------------------Trust Boundary---------+
                  |                                               |
              .---+-.                     +----------------+      |
              | .---+-.                   |                |      |
              | |     +------------------>|    Context     |      |
              | |     |         (3)       |                |      |
              | |     |<------------------+    Service     |      |
              | |     |         (c)       |                |      |
              | |  G  |                   +----------------+      |
              | |  a  |                                           |
   (1)        | |  t  |                                           |
+-------+     | |  e  |      +------------+      +-------------+  |
|   App | (2) | |  w  | (4)  |            |  (5) |             |  |
| Client+---->| |  a  +----->| workload 1 +----->|  workload 2 |  |
+-------+ (a) | |  y  | (c)  |            |  (c) |             |  |
              | |     |      +------------+      +-------------+  |
              | |  S  |                                           |
              | |  e  |                                           |
              | |  r  |                                           |
              | |  v  |                                           |
              | |  i  |                                           |
              | |  c  |                                           |
              | |  e  |                                           |
              '-+     |                                           |
                '-+---'                                           |
                  |                                               |
                  |                                               |
                  |                                               |
                  +-----------------------------------------------+

]]></artwork>
            </artset>
          </figure>
          <t>In many cases the application system uses other security context information about the request during authorization and auditing.  The following is a basic scenario that illustrates the propagation of security context in the workload system.
Some of the components and interactions have been removed from the previous scenario for simplicity.</t>
          <ul spacing="normal">
            <li>
              <t>Context Service
This scenario adds a context service component which is responsible for creating security context based on authentication and other calculations. Context can be represented in many ways; it can be a plaintext data structure, a signed data structure such as a JWT or a pointer used to lookup the context as a data structure stored somewhere else. In one common example, creating the context may involve a token exchange converting an OAuth 2.0 access token into a different token format, such as a transaction token,  that is understood by internal services.</t>
            </li>
            <li>
              <t>(1) Initial Authentication
In the initial authentication the gateway service obtains credentials it can use with the gateway service. This authentication may involve several steps and may be performed by an external entity such as an identity provider. The authentication process will result in a credential that the gateway service can evaluate. For example, the credential could be an OAuth Access token.
If the client already has an access token that it can use to authenticate to the gateway, such as an X.509 certificate, then it may skip this step.</t>
            </li>
            <li>
              <t>(2) Application Client Request
The application client makes a request to the gateway over HTTPS.  The client may be authenticated to the gateway through TLS client authentication (mutual TLS) or through a credential such as an access token obtained in step 1.</t>
            </li>
            <li>
              <t>(3) Establishing the request context
The gateway service requests a security context token (c) from a token service. This process may entail sending an access token (a) along with other information to a token exchange endpoint to obtain the context token, which contains information about the entity accessing the system. This context is typically only relevant to the internal system and is not returned to the client.
The gateway may use alternative mechanisms to get the internal security context information (c).</t>
            </li>
            <li>
              <t>(4) Forwarding Request to Workload
The gateway forwards the request along with the context information (c) to the appropriate workload. A bearer token, such as an access token (a), is not usually forwarded as it is only meant for external access. The workload uses information in the context token in applying authorization policy to the application client's request.
If the workload does not receive a context token, then it will deny requests that rely on information from the token.</t>
            </li>
            <li>
              <t>(5) Making Additional Workload Originated Requests
The workload may need to make requests of other workloads. When making these requests, the workload includes the context information so Workload 2 can authorize and audit the request. Workload 2 may have a policy requiring Workload 1 to authenticate its service identity and provide valid context information (c) to access certain APIs.</t>
            </li>
          </ul>
        </section>
        <section anchor="cross-domain-communication">
          <name>Cross-Domain Communication</name>
          <figure anchor="arch-cross">
            <name>External request workload application system.</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="640" width="544" viewBox="0 0 544 640" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,160 L 8,208" fill="none" stroke="black"/>
                  <path d="M 72,160 L 72,208" fill="none" stroke="black"/>
                  <path d="M 120,64 L 120,352" fill="none" stroke="black"/>
                  <path d="M 136,80 L 136,368" fill="none" stroke="black"/>
                  <path d="M 152,32 L 152,64" fill="none" stroke="black"/>
                  <path d="M 152,368 L 152,432" fill="none" stroke="black"/>
                  <path d="M 168,64 L 168,80" fill="none" stroke="black"/>
                  <path d="M 176,560 L 176,624" fill="none" stroke="black"/>
                  <path d="M 184,80 L 184,368" fill="none" stroke="black"/>
                  <path d="M 240,160 L 240,224" fill="none" stroke="black"/>
                  <path d="M 256,224 L 256,560" fill="none" stroke="black"/>
                  <path d="M 312,560 L 312,624" fill="none" stroke="black"/>
                  <path d="M 320,288 L 320,352" fill="none" stroke="black"/>
                  <path d="M 344,160 L 344,224" fill="none" stroke="black"/>
                  <path d="M 360,560 L 360,624" fill="none" stroke="black"/>
                  <path d="M 368,464 L 368,528" fill="none" stroke="black"/>
                  <path d="M 400,160 L 400,224" fill="none" stroke="black"/>
                  <path d="M 408,224 L 408,288" fill="none" stroke="black"/>
                  <path d="M 416,288 L 416,352" fill="none" stroke="black"/>
                  <path d="M 448,224 L 448,464" fill="none" stroke="black"/>
                  <path d="M 464,464 L 464,528" fill="none" stroke="black"/>
                  <path d="M 488,224 L 488,560" fill="none" stroke="black"/>
                  <path d="M 504,560 L 504,624" fill="none" stroke="black"/>
                  <path d="M 512,160 L 512,224" fill="none" stroke="black"/>
                  <path d="M 536,32 L 536,432" fill="none" stroke="black"/>
                  <path d="M 152,32 L 368,32" fill="none" stroke="black"/>
                  <path d="M 488,32 L 536,32" fill="none" stroke="black"/>
                  <path d="M 120,64 L 168,64" fill="none" stroke="black"/>
                  <path d="M 136,80 L 184,80" fill="none" stroke="black"/>
                  <path d="M 8,160 L 72,160" fill="none" stroke="black"/>
                  <path d="M 240,160 L 344,160" fill="none" stroke="black"/>
                  <path d="M 400,160 L 512,160" fill="none" stroke="black"/>
                  <path d="M 72,192 L 112,192" fill="none" stroke="black"/>
                  <path d="M 184,192 L 232,192" fill="none" stroke="black"/>
                  <path d="M 344,192 L 392,192" fill="none" stroke="black"/>
                  <path d="M 8,208 L 72,208" fill="none" stroke="black"/>
                  <path d="M 240,224 L 344,224" fill="none" stroke="black"/>
                  <path d="M 416,224 L 440,224" fill="none" stroke="black"/>
                  <path d="M 456,224 L 512,224" fill="none" stroke="black"/>
                  <path d="M 320,288 L 400,288" fill="none" stroke="black"/>
                  <path d="M 120,352 L 136,352" fill="none" stroke="black"/>
                  <path d="M 320,352 L 416,352" fill="none" stroke="black"/>
                  <path d="M 136,368 L 184,368" fill="none" stroke="black"/>
                  <path d="M 152,432 L 536,432" fill="none" stroke="black"/>
                  <path d="M 368,464 L 440,464" fill="none" stroke="black"/>
                  <path d="M 368,528 L 464,528" fill="none" stroke="black"/>
                  <path d="M 176,560 L 248,560" fill="none" stroke="black"/>
                  <path d="M 264,560 L 312,560" fill="none" stroke="black"/>
                  <path d="M 360,560 L 480,560" fill="none" stroke="black"/>
                  <path d="M 176,624 L 312,624" fill="none" stroke="black"/>
                  <path d="M 360,624 L 504,624" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="496,560 484,554.4 484,565.6" fill="black" transform="rotate(90,488,560)"/>
                  <polygon class="arrowhead" points="456,464 444,458.4 444,469.6" fill="black" transform="rotate(90,448,464)"/>
                  <polygon class="arrowhead" points="456,224 444,218.4 444,229.6" fill="black" transform="rotate(270,448,224)"/>
                  <polygon class="arrowhead" points="416,288 404,282.4 404,293.6" fill="black" transform="rotate(90,408,288)"/>
                  <polygon class="arrowhead" points="416,224 404,218.4 404,229.6" fill="black" transform="rotate(270,408,224)"/>
                  <polygon class="arrowhead" points="400,192 388,186.4 388,197.6" fill="black" transform="rotate(0,392,192)"/>
                  <polygon class="arrowhead" points="264,560 252,554.4 252,565.6" fill="black" transform="rotate(90,256,560)"/>
                  <polygon class="arrowhead" points="240,192 228,186.4 228,197.6" fill="black" transform="rotate(0,232,192)"/>
                  <polygon class="arrowhead" points="120,192 108,186.4 108,197.6" fill="black" transform="rotate(0,112,192)"/>
                  <g class="text">
                    <text x="392" y="36">Trust</text>
                    <text x="452" y="36">Boundary</text>
                    <text x="160" y="116">G</text>
                    <text x="160" y="132">a</text>
                    <text x="160" y="148">t</text>
                    <text x="160" y="164">e</text>
                    <text x="48" y="180">App</text>
                    <text x="96" y="180">(1)</text>
                    <text x="160" y="180">w</text>
                    <text x="208" y="180">(2)</text>
                    <text x="376" y="180">(4)</text>
                    <text x="44" y="196">Client</text>
                    <text x="160" y="196">a</text>
                    <text x="284" y="196">workload</text>
                    <text x="328" y="196">1</text>
                    <text x="452" y="196">workload</text>
                    <text x="496" y="196">2</text>
                    <text x="96" y="212">(a)</text>
                    <text x="160" y="212">y</text>
                    <text x="208" y="212">(c)</text>
                    <text x="376" y="212">(c)</text>
                    <text x="160" y="244">S</text>
                    <text x="160" y="260">e</text>
                    <text x="240" y="260">(3)</text>
                    <text x="380" y="260">(5)(c)</text>
                    <text x="424" y="260">(t)</text>
                    <text x="160" y="276">r</text>
                    <text x="160" y="292">v</text>
                    <text x="160" y="308">i</text>
                    <text x="368" y="308">Token</text>
                    <text x="160" y="324">c</text>
                    <text x="472" y="324">(7)</text>
                    <text x="504" y="324">(a)</text>
                    <text x="160" y="340">e</text>
                    <text x="368" y="340">Service</text>
                    <text x="420" y="404">(6)(t)</text>
                    <text x="464" y="404">(a)</text>
                    <text x="456" y="468">-</text>
                    <text x="420" y="484">External</text>
                    <text x="416" y="500">Token</text>
                    <text x="416" y="516">Service</text>
                    <text x="496" y="564">-</text>
                    <text x="244" y="580">Infrastructure</text>
                    <text x="436" y="580">External</text>
                    <text x="240" y="612">Service</text>
                    <text x="432" y="612">Service</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                  +---------------------------Trust Boundary------+
                  |                                               |
              .---+-.                                             |
              | .---+-.                                           |
              | |     |                                           |
              | |  G  |                                           |
              | |  a  |                                           |
              | |  t  |                                           |
+-------+     | |  e  |      +------------+      +-------------+  |
|   App | (1) | |  w  | (2)  |            |  (4) |             |  |
| Client+---->| |  a  +----->| workload 1 +----->|  workload 2 |  |
+-------+ (a) | |  y  | (c)  |            |  (c) |             |  |
              | |     |      +-+----------+      +^----^----+--+  |
              | |  S  |        |                  |    |    |     |
              | |  e  |     (3)|            (5)(c)|(t) |    |     |
              | |  r  |        |                  |    |    |     |
              | |  v  |        |       +-+--------v+   |    |     |
              | |  i  |        |       |   Token   |   |    |     |
              | |  c  |        |       |           |   | (7)|(a)  |
              | |  e  |        |       |  Service  |   |    |     |
              '-+     |        |       +-----------+   |    |     |
                '-+---'        |                       |    |     |
                  |            |                       |    |     |
                  |            |                 (6)(t)|(a) |     |
                  |            |                       |    |     |
                  +------------+-----------------------+----+-----+
                               |                       |    |
                               |             +-+-------V-+  |
                               |             |  External |  |
                               |             |   Token   |  |
                               |             |  Service  |  |
                               |             +-----------+  |
                               |                            |
                     +---------v------+     +---------------v-+
                     | Infrastructure |     |     External    |
                     |                |     |                 |
                     |    Service     |     |     Service     |
                     +----------------+     +-----------------+
]]></artwork>
            </artset>
          </figure>
          <t>In many applications workloads must make requests of infrastructure or external services that operate as a different trust domain. Steps 5-7 of <xref target="arch-cross"/> involve a generic cross domain pattern as described in <xref target="I-D.draft-ietf-oauth-identity-chaining"/>. This document refers to a token service which performs a similar functions with respect to token issuance as the authorization service in <xref target="I-D.draft-ietf-oauth-identity-chaining"/>. The scenario shows some new components described below.
Components and interactions from previous scenarios are still relevant to this example, but are omitted for simplicity.</t>
          <ul spacing="normal">
            <li>
              <t>Token Service - the token service is responsible for exchanging information that is internal to the system such as service identity and/or security context information for a token that can be presented to an external token service in another trust domain to gain access to infrastructure or an external service.</t>
            </li>
            <li>
              <t>External Token Service - the external token service is part of another trust domain.  Workloads in the originating trust domain contact this service to get an access token to authenticate to external services.</t>
            </li>
            <li>
              <t>Infrastructure Service - this service is often part of the application, but it is managed by an infrastructure provider and may require different information to access it.</t>
            </li>
            <li>
              <t>External Service - this service is distinct from the application and hosted in a separate trust domain.  This trust domain often has different access requirements that workloads in the internal trust domain.</t>
            </li>
          </ul>
          <t>Some example interactions in this scenario:</t>
          <ul spacing="normal">
            <li>
              <t>(1) The application client is making requests with authentication information as in the other scenarios</t>
            </li>
            <li>
              <t>(2) The gateway forwards the request to the appropriate workload with the security context information</t>
            </li>
            <li>
              <t>(3) The workload needs to access an infrastructure service and, because it is managed by the same organization, it authenticates to the service directly using its workload credentials.</t>
            </li>
            <li>
              <t>(4) Workload 1 contacts Workload 2 to perform an operation. This request is accompanied by a security context as in the other scenarios.</t>
            </li>
            <li>
              <t>(5) Workload 2 determines it needs to communicate with an external service.  In order to gain access to this service it must first obtain a token/credential (t) that it can use externally.  It authenticates to the token service using its workload identity credential (c) and provides security context information.  The token service determines what type of externally usable token to issue to the workload for use with the external token service.</t>
            </li>
            <li>
              <t>(6) Workload 2 uses this new token/credential (t) to request an access token (a) for the external service from the token service.</t>
            </li>
            <li>
              <t>(7) Workload 2 uses the access token (a) to access the external service in the other trust domain.</t>
            </li>
          </ul>
          <t>There can be variations on cross domain workflows. For example, in step 3 the workload was able to use its Workload Identity Credentials to directly access an infrastructure service. It also may be possible for an workload to request an access token for an external service using its Workload Identity Credentials directly with an external token service.</t>
        </section>
      </section>
      <section anchor="workload-identity-use-cases">
        <name>Workload Identity Use Cases</name>
        <section anchor="bootstrapping-workload-identifiers-and-credentials">
          <name>Bootstrapping Workload Identifiers and Credentials</name>
          <t>Workloads need to obtain credentials before they can fully participate in the WIMSE architecture. The architecture does not specify a particular method for credential provisioning, but this section outlines some concepts involved in this process. WIMSE focuses on credentials that consist of a public token and a private key such as X.509 certificate and Workload Identity Token (WIT). This list is not exhaustive of all the ways provisioning can happen.</t>
          <ul spacing="normal">
            <li>
              <t>Direct Provisioning - A workload may receive its WIMSE credential when it is initially created. This is typically done using a deployment-specific mechanism that configures both the private and public portions of the credential for the workload. In direct provisioning the workload does not need to go through additional processes to obtain credentials and the credentials can be used immediately, whereas in the other cases more interactions are needed to obtain usable credentials.</t>
            </li>
            <li>
              <t>Bootstrap Credentials - A workload may receive a set of bootstrap credentials specific to its deployment mechanism, which are then used by the workload through another process to obtain WIMSE credentials. The workload may use the bootstrap credentials to obtain the private and public parts of the WIMSE credentials, or the workload may generate a private key pair and use the bootstrap credential to authorize an enrollment process to obtain the public credential (X.509 certificate or WIT). <xref target="I-D.ietf-wimse-workload-identity-practices"/> describes some ways workloads can be initially providioned with bootstrap credentials.</t>
            </li>
            <li>
              <t>Attestation - A workload credential provisioning process may use attestation in addition to or instead of bootstrap credentials. Attestation refers to the process of one peer in a communication (known as an "attester") generating attestation evidence, and providing that to a communication peer -- the "relying party", who may request verification of the supplied evidence from a "verifier". The Remote ATtestation procedureS (RATS) Architecture <xref target="RFC9334"/> describes evidence and some of the different communication patterns. Attestation in WIMSE is intentionally defined quite broadly, as it may be implemented in several ways that, while aligned with the definitions and architectures described in <xref target="RFC9334"/>, and here, do not rely on any specific implementation, or any specific communication protocol.  <xref target="SPIRE"/> provides an example outside of the RATS protocol work where attestation processes result in credentials being provisioned both to workloads, and the nodes that host them.</t>
            </li>
            <li>
              <t>Agent Assisted Provisioning - In some architectures, several workloads run on the same node that hosts an agent that assists in the credential provisioning process. The example below illustrates one way in which an agent can participate in the process, reflecting some concepts in the SPIFFE architecture. There are other ways an agent may participate. For example, the agent may not receive direct access to the workload private key but it may be the conduit for providing an encrypted private key which the workload can decrypt through a process that may involve attestation.</t>
            </li>
          </ul>
          <section anchor="agent-assisted-provisioning-example">
            <name>Agent Assisted Provisioning Example</name>
            <t><xref target="arch-fig"/> illustrates software layering at a host running workloads. During startup, workloads bootstrap their identifiers and credentials with the help of an agent. The agent may be associated with one or more workloads to help ensure that workloads are provisioned with the correct identifiers and credentials. The agent provides attestation evidence and other relevant information to a server. The server validates this information and provides the agent with identifiers and credentials for the workloads it is associated with. The server can use a variety of internal and external means to validate the request against policy. After obtaining credentials from the server, the agent passes them to the workload.</t>
            <figure anchor="arch-fig">
              <name>Host Software Layering in a Workload Identity Architecture.</name>
              <artset>
                <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="472" viewBox="0 0 472 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                    <path d="M 8,32 L 8,128" fill="none" stroke="black"/>
                    <path d="M 8,224 L 8,448" fill="none" stroke="black"/>
                    <path d="M 24,80 L 24,112" fill="none" stroke="black"/>
                    <path d="M 32,272 L 32,336" fill="none" stroke="black"/>
                    <path d="M 72,136 L 72,272" fill="none" stroke="black"/>
                    <path d="M 88,128 L 88,264" fill="none" stroke="black"/>
                    <path d="M 136,80 L 136,112" fill="none" stroke="black"/>
                    <path d="M 136,320 L 136,408" fill="none" stroke="black"/>
                    <path d="M 152,32 L 152,128" fill="none" stroke="black"/>
                    <path d="M 160,272 L 160,336" fill="none" stroke="black"/>
                    <path d="M 280,272 L 280,336" fill="none" stroke="black"/>
                    <path d="M 296,256 L 296,272" fill="none" stroke="black"/>
                    <path d="M 304,320 L 304,408" fill="none" stroke="black"/>
                    <path d="M 336,144 L 336,248" fill="none" stroke="black"/>
                    <path d="M 352,144 L 352,248" fill="none" stroke="black"/>
                    <path d="M 416,272 L 416,336" fill="none" stroke="black"/>
                    <path d="M 432,256 L 432,320" fill="none" stroke="black"/>
                    <path d="M 448,224 L 448,448" fill="none" stroke="black"/>
                    <path d="M 8,32 L 152,32" fill="none" stroke="black"/>
                    <path d="M 24,80 L 136,80" fill="none" stroke="black"/>
                    <path d="M 24,112 L 136,112" fill="none" stroke="black"/>
                    <path d="M 8,128 L 152,128" fill="none" stroke="black"/>
                    <path d="M 8,224 L 448,224" fill="none" stroke="black"/>
                    <path d="M 296,256 L 432,256" fill="none" stroke="black"/>
                    <path d="M 32,272 L 160,272" fill="none" stroke="black"/>
                    <path d="M 280,272 L 416,272" fill="none" stroke="black"/>
                    <path d="M 152,304 L 288,304" fill="none" stroke="black"/>
                    <path d="M 416,320 L 432,320" fill="none" stroke="black"/>
                    <path d="M 32,336 L 160,336" fill="none" stroke="black"/>
                    <path d="M 280,336 L 416,336" fill="none" stroke="black"/>
                    <path d="M 8,416 L 448,416" fill="none" stroke="black"/>
                    <path d="M 8,448 L 448,448" fill="none" stroke="black"/>
                    <polygon class="arrowhead" points="360,248 348,242.4 348,253.6" fill="black" transform="rotate(90,352,248)"/>
                    <polygon class="arrowhead" points="344,248 332,242.4 332,253.6" fill="black" transform="rotate(90,336,248)"/>
                    <polygon class="arrowhead" points="312,408 300,402.4 300,413.6" fill="black" transform="rotate(90,304,408)"/>
                    <polygon class="arrowhead" points="312,320 300,314.4 300,325.6" fill="black" transform="rotate(270,304,320)"/>
                    <polygon class="arrowhead" points="296,304 284,298.4 284,309.6" fill="black" transform="rotate(0,288,304)"/>
                    <polygon class="arrowhead" points="160,304 148,298.4 148,309.6" fill="black" transform="rotate(180,152,304)"/>
                    <polygon class="arrowhead" points="144,408 132,402.4 132,413.6" fill="black" transform="rotate(90,136,408)"/>
                    <polygon class="arrowhead" points="144,320 132,314.4 132,325.6" fill="black" transform="rotate(270,136,320)"/>
                    <polygon class="arrowhead" points="96,264 84,258.4 84,269.6" fill="black" transform="rotate(90,88,264)"/>
                    <polygon class="arrowhead" points="80,136 68,130.4 68,141.6" fill="black" transform="rotate(270,72,136)"/>
                    <g class="text">
                      <text x="76" y="52">Server</text>
                      <text x="80" y="100">Attestation</text>
                      <text x="132" y="164">Identity</text>
                      <text x="396" y="164">Workload</text>
                      <text x="144" y="180">Credentials</text>
                      <text x="396" y="180">to</text>
                      <text x="396" y="196">Workload</text>
                      <text x="416" y="212">Communication</text>
                      <text x="64" y="292">Agent</text>
                      <text x="328" y="292">Workloads</text>
                      <text x="212" y="324">Identity</text>
                      <text x="224" y="340">Credentials</text>
                      <text x="348" y="372">Identity</text>
                      <text x="80" y="388">Attestation</text>
                      <text x="360" y="388">Credentials</text>
                      <text x="36" y="436">Host</text>
                      <text x="96" y="436">Operating</text>
                      <text x="164" y="436">System</text>
                      <text x="208" y="436">and</text>
                      <text x="260" y="436">Hardware</text>
                    </g>
                  </svg>
                </artwork>
                <artwork type="ascii-art"><![CDATA[
  +-----------------+
  |     Server      |
  |                 |
  | +-------------+ |
  | | Attestation | |
  | +-------------+ |
  +---------+-------+
          ^ |                              . .
          | | Identity                     | | Workload
          | | Credentials                  | |    to
          | |                              | | Workload
          | |                              | | Communication
  +-------+-+------------------------------+-+-----------+
  |       | |                              v V           |
  |       | v                         +----------------+ |
  |  +----+----------+              +-+--------------+ | |
  |  | Agent         |              | Workloads      | | |
  |  |              <+--------------+>               | | |
  |  |            ^  |  Identity    |  ^             +-+ |
  |  +------------+--+  Credentials +--+-------------+   |
  |               |                    |                 |
  |               |                    | Identity        |
  |   Attestation |                    | Credentials     |
  |               v                    v                 |
  +------------------------------------------------------+
  | Host Operating System and Hardware                   |
  +------------------------------------------------------+
]]></artwork>
              </artset>
            </figure>
            <t>How the workload obtains its identity credentials and interacts with the agent is subject to different implementations. Some common mechanisms for obtaining this initial identity include:</t>
            <ul spacing="normal">
              <li>
                <t>File System - In this mechanism, the identity credential is provisioned to the workload via the filesystem.</t>
              </li>
              <li>
                <t>Local API - The identity credential is provided through an API, such as a local domain socket (for example, SPIFFE or QEMU guest agent) or network API (for example, Cloud Provider Metadata Server).</t>
              </li>
              <li>
                <t>Environment Variables - Identity credentials may also be injected into workloads using operating system environment variables.</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="service-authentication">
          <name>Service Authentication</name>
          <t>One of the most basic use cases for workload identity is authentication of one workload to another, such as in the case where one service is making a request to another service as part of a larger, more complex application. Following authentication, the identity of the peer can be used to enforce fine-grained authorization policies as described in <xref target="authorization"/> and generate audit trails as described in <xref target="audit-trails"/>.</t>
          <t>Authentication mechanisms are used to establish the identity of the peer workload before secure communication can proceed.</t>
          <t>Workloads often obtain their credentials without relying on pre-provisioned long-lived secrets. Instead, short-lived credentials are established through mechanisms provided by the infrastructure that allow a workload to prove it is running in a given environment. Common delivery patterns are described in <xref section="3" sectionFormat="of" target="I-D.ietf-wimse-workload-identity-practices"/>.</t>
          <t>Once credentials are issued, they are conveyed to peers using common security protocols. Typical mechanisms include:</t>
          <ul spacing="normal">
            <li>
              <t>Mutual TLS authentication using X.509 certificate for both client and server as described in <xref section="4" sectionFormat="of" target="I-D.ietf-wimse-s2s-protocol"/>.</t>
            </li>
            <li>
              <t>Application level authentication using cryptographic credentials passed within HTTP message as described in <xref section="3" sectionFormat="of" target="I-D.ietf-wimse-s2s-protocol"/>.</t>
            </li>
          </ul>
          <t>These authentication mechanisms establish a cryptographically verifiable identity for the communicating party, which can then be used for further policy enforcement.</t>
          <t><xref target="arch-chain"/> illustrates the communication between different workloads. Two aspects are important
to highlight: First, there is a need to consider the interaction with workloads that are external
to the trust domain (sometimes called cross-domain). Second, the interaction does
not only occur between workloads that directly interact with each other but instead may also
take place across intermediate workloads (in an end-to-end style).</t>
          <figure anchor="arch-chain">
            <name>Workload-to-Workload Communication.</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="520" viewBox="0 0 520 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                  <path d="M 8,144 L 8,352" fill="none" stroke="black"/>
                  <path d="M 32,192 L 32,304" fill="none" stroke="black"/>
                  <path d="M 72,80 L 72,208" fill="none" stroke="black"/>
                  <path d="M 128,192 L 128,304" fill="none" stroke="black"/>
                  <path d="M 152,32 L 152,96" fill="none" stroke="black"/>
                  <path d="M 216,192 L 216,304" fill="none" stroke="black"/>
                  <path d="M 312,192 L 312,304" fill="none" stroke="black"/>
                  <path d="M 400,192 L 400,304" fill="none" stroke="black"/>
                  <path d="M 496,192 L 496,304" fill="none" stroke="black"/>
                  <path d="M 512,144 L 512,352" fill="none" stroke="black"/>
                  <path d="M 8,32 L 152,32" fill="none" stroke="black"/>
                  <path d="M 8,96 L 152,96" fill="none" stroke="black"/>
                  <path d="M 8,144 L 272,144" fill="none" stroke="black"/>
                  <path d="M 392,144 L 512,144" fill="none" stroke="black"/>
                  <path d="M 32,192 L 128,192" fill="none" stroke="black"/>
                  <path d="M 216,192 L 312,192" fill="none" stroke="black"/>
                  <path d="M 400,192 L 496,192" fill="none" stroke="black"/>
                  <path d="M 120,240 L 224,240" fill="none" stroke="black"/>
                  <path d="M 304,240 L 408,240" fill="none" stroke="black"/>
                  <path d="M 80,288 L 440,288" fill="none" stroke="black"/>
                  <path d="M 32,304 L 128,304" fill="none" stroke="black"/>
                  <path d="M 216,304 L 312,304" fill="none" stroke="black"/>
                  <path d="M 400,304 L 496,304" fill="none" stroke="black"/>
                  <path d="M 8,352 L 512,352" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="448,288 436,282.4 436,293.6" fill="black" transform="rotate(0,440,288)"/>
                  <polygon class="arrowhead" points="416,240 404,234.4 404,245.6" fill="black" transform="rotate(0,408,240)"/>
                  <polygon class="arrowhead" points="312,240 300,234.4 300,245.6" fill="black" transform="rotate(180,304,240)"/>
                  <polygon class="arrowhead" points="232,240 220,234.4 220,245.6" fill="black" transform="rotate(0,224,240)"/>
                  <polygon class="arrowhead" points="128,240 116,234.4 116,245.6" fill="black" transform="rotate(180,120,240)"/>
                  <polygon class="arrowhead" points="88,288 76,282.4 76,293.6" fill="black" transform="rotate(180,80,288)"/>
                  <polygon class="arrowhead" points="80,208 68,202.4 68,213.6" fill="black" transform="rotate(90,72,208)"/>
                  <polygon class="arrowhead" points="80,80 68,74.4 68,85.6" fill="black" transform="rotate(270,72,80)"/>
                  <g class="text">
                    <text x="84" y="52">Workload</text>
                    <text x="84" y="68">(external)</text>
                    <text x="296" y="148">Trust</text>
                    <text x="356" y="148">Boundary</text>
                    <text x="168" y="196">Hop-by-</text>
                    <text x="352" y="196">Hop-by-</text>
                    <text x="152" y="212">Hop</text>
                    <text x="336" y="212">Hop</text>
                    <text x="76" y="228">Workload</text>
                    <text x="172" y="228">Security</text>
                    <text x="260" y="228">Workload</text>
                    <text x="356" y="228">Security</text>
                    <text x="444" y="228">Workload</text>
                    <text x="72" y="292">O</text>
                    <text x="448" y="292">O</text>
                    <text x="168" y="308">E2E</text>
                    <text x="352" y="308">E2E</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
  +-----------------+
  |     Workload    |
  |    (external)   |
  |       ^         |
  +-------+---------+
          |
          |
  +-------+-------------------------Trust Boundary---------------+
  |       |                                                      |
  |       |                                                      |
  |  +----+------+ Hop-by-  +-----------+ Hop-by-  +-----------+ |
  |  |    v      | Hop      |           | Hop      |           | |
  |  | Workload  | Security | Workload  | Security | Workload  | |
  |  |          <+----------+>         <+----------+>          | |
  |  |           |          |           |          |           | |
  |  |           |          |           |          |           | |
  |  |    O<-----+----------+-----------+----------+---->O     | |
  |  +-----------+   E2E    +-----------+   E2E    +-----------+ |
  |                                                              |
  |                                                              |
  +--------------------------------------------------------------+
]]></artwork>
            </artset>
          </figure>
        </section>
        <section anchor="authorization">
          <name>Service Authorization</name>
          <t>Once authentication has successfully established the identity of a peer workload, authorization mechanisms determine whether the authenticated identity is permitted to perform the requested action on the target workload.</t>
          <t>Authorization specified by WIMSE is context-aware. It relies on attributes carried in the security context, which may originate from upstream systems such as gateways or identity proxies. This context may be derived from end-user attributes, trust domain policies, or deployment-specific metadata (e.g., environment, service role, workload instance).</t>
          <t>Authorization decisions typically include:</t>
          <ul spacing="normal">
            <li>
              <t>Validating the integrity and provenance of the security context.</t>
            </li>
            <li>
              <t>Ensuring the authenticated identity has the correct role and attributes to access the requested API or resource.</t>
            </li>
            <li>
              <t>Applying fine-grained policy rules, which may include path, method, action type, and contextual constraints (e.g., geographic location, time of day).</t>
            </li>
          </ul>
          <t>Authorization checks may also incorporate delegation and impersonation semantics, as described in <xref target="delegation"/>, where upstream workloads are authorized to act on behalf of end-users or other services, within the scope of their issued credentials and policy.</t>
          <t>A key architectural consideration is where authorization is evaluated. For most workload-to-workload interactions (e.g., REST APIs, gRPC, or pub/sub flows), authorization is performed by the callee, ensuring that the target workload enforces its own access policies. But in some scenarios, such as database access or operations on complex back-end systems, authorization decisions may be too fine-grained or application-specific to be enforced by the subject of the operation. In these cases, authorization <bcp14>MAY</bcp14> be performed by the caller, provided that the caller has sufficient context and policy information to make a correct decision.</t>
        </section>
        <section anchor="audit-trails">
          <name>Audit Trails</name>
          <t>Auditability is a critical requirement in systems that rely on workload identities and security context. Each authenticated request <bcp14>MUST</bcp14> leave a verifiable and inspectable trace regardless of authentication and authorization decision.</t>
          <t>Audit trails are typically generated at multiple points:</t>
          <ul spacing="normal">
            <li>
              <t>Gateway Services: Log incoming client requests, their authenticated identities and relevant context.</t>
            </li>
            <li>
              <t>Workloads: Log authenticated peer identities, security context attributes, requested resources, and authorization outcomes.</t>
            </li>
            <li>
              <t>Identity and Token Services: Log issuance and validation events for workload identity credentials and context tokens.</t>
            </li>
          </ul>
          <t>Audit records may include:</t>
          <ul spacing="normal">
            <li>
              <t>Timestamp of the request</t>
            </li>
            <li>
              <t>Source workload identifier</t>
            </li>
            <li>
              <t>Target workload identifier</t>
            </li>
            <li>
              <t>Authentication method used</t>
            </li>
            <li>
              <t>Decision outcome (authorized/denied)</t>
            </li>
            <li>
              <t>Security context claims</t>
            </li>
            <li>
              <t>Delegation/impersonation metadata (if present)</t>
            </li>
          </ul>
          <t>To avoid inadvertent disclosure of sensitive information, workloads and services generating audit logs <bcp14>MUST NOT</bcp14> log secrets such as bearer tokens, private keys, or passwords. If logging of credential-related data is necessary for diagnostic or policy purposes, these values <bcp14>MUST</bcp14> be redacted, hashed, or otherwise sanitised to prevent misuse.</t>
          <t>WIMSE systems <bcp14>SHOULD</bcp14> ensure audit logs are tamper-evident and securely stored. Logs may be forwarded to centralized security information and event management (SIEM) systems to enable compliance, threat detection, and incident response.</t>
        </section>
        <section anchor="security-context-establishment-and-propagation">
          <name>Security Context Establishment and Propagation</name>
          <t>In a typical system of workloads additional information is needed in order for the workload to perform its function. For example, it is common for a workload to require information about a user or other entity that originated the request. Other types of information may include information about the hardware or software that the workload is running or information about what processing and validation has already been done to the request. This type of information is part of the security context that the workload uses during authorization, accounting and auditing. This context is propagated and possibly augmented from workload to workload using tokens. The context may be associated with a specific source or target workload by binding it to a specific workload identifier. This may indicate that the context originated from a specific workload, or that only a specific workload may make use of the context. A workload may also use a workload identity credential to bind a context to one or more transaction so the receiver can verify which workload initiated the transaction and the context that was intended for the transaction.</t>
        </section>
        <section anchor="delegation">
          <name>Delegation and Impersonation</name>
          <t>When source workloads send authenticated requests to destination workloads, those destination workloads may rely on upstream dependencies to fulfill such requests. Such access patterns are increasingly common in a microservices architecture. While X.509 certificates can be used for point-to-point authentication, such services relying on upstream microservices for answers, may use delegation and/or impersonation semantics as described in RFC 8693 OAuth 2.0 Access Token Exchange.</t>
          <t>WIMSE credentials constrain the subjects and actors identified in delegation and impersonation tokens to be bound by a trust domain, and to follow their issuing authorities' trust configurations. Upstream workloads should consider the security context of delegation and/or impersonation tokens within and across trust domains, when arriving at authorization decisions.</t>
        </section>
        <section anchor="asynchronous-and-batch-requests">
          <name>Asynchronous and Batch Requests</name>
          <t>Source workloads may send authenticated asynchronous and batch requests to destination workloads. A destination workload may need to fulfill such requests with requests to authorized upstream protected resources and workloads, after the source workload credentials have expired. Credentials identifying the original source workload as subject may need to be obtained from the credential issuing authority with appropriately-downscoped context needed access to upstream workloads. These credentials should identify the workload as the actor in the actor chain, but may also identify other principals that the action is taken on behalf. To mitigate risks associated with long-duration credentials, these credentials should be bound to the Workload Identity Credential such as a workload identity certificate or Workload Identity Token (WIT) of the acting service performing asynchronous computation on the source workload's behalf.</t>
        </section>
        <section anchor="cross-boundary-workload-identity">
          <name>Cross-boundary Workload Identity</name>
          <t>As workloads often need to communicate across trust boundaries, extra care needs to be taken when it comes to identity communication to ensure scalability and privacy. (TODO: align with OAuth cross domain identity and authorization)</t>
          <section anchor="egress-identity-generalization">
            <name>Egress Identity Generalization</name>
            <t>A workload communicating with a service or another workload located outside the trust boundary may need to provide modified identity information. The detailed identity of an internal workload originating the communication is relevant inside the trust boundary but could be excessive for the outside world and expose potentially sensitive internal topology information.</t>
            <t>For example, in a microservices architecture, an internal service may use workload-specific identities that include fine-grained details such as instance names or deployment-specific attributes. When interacting with external systems, exposing such details may inadvertently provide attackers with insights into the internal deployment structure, scaling strategies, security policies, technologies in use, or failover mechanisms, potentially giving them a tactical advantage. In such cases, an identity proxy at the trust boundary can generalize the Workload Identity by replacing the specific microservice instance name with the name of the overall service. This allows external parties to recognize the service while abstracting internal deployment details.</t>
            <t>A security gateway implementing Identity Proxy functionality at the edge of a trust boundary can validate identity information of the workload, perform context-specific authorization of the transaction, and replace workload-specific identity with a generalized one for a given trust domain. This approach ensures that external communications adhere to security and privacy requirements while maintaining interoperability across trust boundaries.</t>
          </section>
          <section anchor="inbound-gateway-identity-validation">
            <name>Inbound Gateway Identity Validation</name>
            <t>Inbound security gateway is a common design pattern for service protection. This functionality is often found in CDN services, API gateways, load balancers, Web Application Firewalls (WAFs) and other security solutions. Workload identity verification of inbound requests should be performed as a part of these security services. After validation of workload identity, the gateway may either leave it unmodified or replace it with its own identity to be validated by the destination.</t>
          </section>
        </section>
        <section anchor="ai-and-ml-based-intermediaries">
          <name>AI and ML-Based Intermediaries</name>
          <t>Emerging agentic AI systems and other ML-based intermediaries introduce new considerations for workload identity and security context propagation. These systems often act as autonomous agents that perform tasks on behalf of an upstream principal (such as a user or service) and then invoke downstream workloads as part of multi-step workflows.</t>
          <t>From WIMSE perspective, AI intermediaries are a special case of delegated workloads (see <xref target="delegation"/>). They inherit the upstream principal's security context and are expected to operate strictly within the constraints of that delegation. When invoking downstream workloads, the agent <bcp14>SHOULD</bcp14> propagate the upstream security context, unless it has been explicitly authorized to translate or reduce its scope.</t>
          <t>In some cases, AI systems may generate requests that are not attributable to a specific upstream principal. Such autonomous actions <bcp14>MUST</bcp14> be clearly distinguished from delegated ones, for example by using separate workload identities or token scopes. Because AI intermediaries may chain requests across multiple services, there is an elevated risk of privilege escalation if security context is propagated beyond the intended trust domain. Mechanisms such as cryptographic binding of delegation tokens or attestation of intermediary behavior can help mitigate these risks.</t>
          <t>A further consideration arises when AI agents interact with other AI agents. In these cases, each agent may act both as a delegated workload and as a delegator, creating multi-hop delegation chains. To avoid ambiguity, each hop in the chain <bcp14>MUST</bcp14> explicitly scope and re-bind the security context so that downstream services can reliably evaluate provenance and authorization boundaries. Without such controls, there is a risk that a chain of AI-to-AI interactions could unintentionally extend authority far beyond what was originally granted.</t>
          <figure anchor="arch-ai">
            <name>AI agent communication</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="648" viewBox="0 0 648 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
                  <path d="M 48,88 L 48,144" fill="none" stroke="black"/>
                  <path d="M 88,32 L 88,80" fill="none" stroke="black"/>
                  <path d="M 160,32 L 160,80" fill="none" stroke="black"/>
                  <path d="M 216,88 L 216,144" fill="none" stroke="black"/>
                  <path d="M 272,32 L 272,80" fill="none" stroke="black"/>
                  <path d="M 344,32 L 344,80" fill="none" stroke="black"/>
                  <path d="M 400,88 L 400,144" fill="none" stroke="black"/>
                  <path d="M 456,32 L 456,80" fill="none" stroke="black"/>
                  <path d="M 528,32 L 528,80" fill="none" stroke="black"/>
                  <path d="M 584,88 L 584,144" fill="none" stroke="black"/>
                  <path d="M 640,32 L 640,80" fill="none" stroke="black"/>
                  <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
                  <path d="M 160,32 L 272,32" fill="none" stroke="black"/>
                  <path d="M 344,32 L 456,32" fill="none" stroke="black"/>
                  <path d="M 528,32 L 640,32" fill="none" stroke="black"/>
                  <path d="M 88,48 L 152,48" fill="none" stroke="black"/>
                  <path d="M 272,48 L 336,48" fill="none" stroke="black"/>
                  <path d="M 456,48 L 520,48" fill="none" stroke="black"/>
                  <path d="M 8,80 L 88,80" fill="none" stroke="black"/>
                  <path d="M 160,80 L 272,80" fill="none" stroke="black"/>
                  <path d="M 344,80 L 456,80" fill="none" stroke="black"/>
                  <path d="M 528,80 L 640,80" fill="none" stroke="black"/>
                  <path d="M 48,144 L 576,144" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="584,144 572,138.4 572,149.6" fill="black" transform="rotate(0,576,144)"/>
                  <polygon class="arrowhead" points="528,48 516,42.4 516,53.6" fill="black" transform="rotate(0,520,48)"/>
                  <polygon class="arrowhead" points="400,144 388,138.4 388,149.6" fill="black" transform="rotate(0,392,144)"/>
                  <polygon class="arrowhead" points="344,48 332,42.4 332,53.6" fill="black" transform="rotate(0,336,48)"/>
                  <polygon class="arrowhead" points="216,144 204,138.4 204,149.6" fill="black" transform="rotate(0,208,144)"/>
                  <polygon class="arrowhead" points="160,48 148,42.4 148,53.6" fill="black" transform="rotate(0,152,48)"/>
                  <g class="text">
                    <text x="44" y="52">User</text>
                    <text x="72" y="52">/</text>
                    <text x="188" y="52">AI</text>
                    <text x="224" y="52">Agent</text>
                    <text x="372" y="52">AI</text>
                    <text x="408" y="52">Agent</text>
                    <text x="580" y="52">Workload</text>
                    <text x="48" y="68">Service</text>
                    <text x="204" y="68">(Agent</text>
                    <text x="244" y="68">A)</text>
                    <text x="388" y="68">(Agent</text>
                    <text x="428" y="68">B)</text>
                    <text x="588" y="68">Downstream</text>
                    <text x="120" y="116">Initial</text>
                    <text x="272" y="116">Delegated</text>
                    <text x="320" y="116">/</text>
                    <text x="356" y="116">Scoped</text>
                    <text x="456" y="116">Delegated</text>
                    <text x="504" y="116">/</text>
                    <text x="540" y="116">Scoped</text>
                    <text x="92" y="132">Security</text>
                    <text x="160" y="132">Context</text>
                    <text x="276" y="132">Security</text>
                    <text x="344" y="132">context</text>
                    <text x="460" y="132">Security</text>
                    <text x="528" y="132">context</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
   +---------+        +-------------+        +-------------+        +-------------+
   |  User / +------->|  AI Agent   +------->|  AI Agent   +------->|  Workload   |
   | Service |        |  (Agent A)  |        |  (Agent B)  |        |  Downstream |
   +---------+        +-------------+        +-------------+        +-------------+
        |                    |                      |                      |
        |     Initial        |  Delegated / Scoped  |  Delegated / Scoped  |
        | Security Context   |   Security context   |   Security context   |
        +------------------->+--------------------->+--------------------->|
]]></artwork>
            </artset>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="traffic-interception">
        <name>Traffic Interception</name>
        <t>Workloads communicating with applications may face different threats to traffic interception in different deployments. In many deployments security controls are deployed for internal communications at lower layers to reduce the risk of traffic observation and modification for network communications. When a security layer, such as TLS, is deployed in these environments. TLS may be terminated in various places, including the workload itself, and in various middleware devices, such as load balancers, gateways, proxies, and firewalls. Therefore, protection is provided only between each adjacent pair of TLS endpoints. There are no guarantees of confidentiality, integrity and correct identity passthrough in those middleware devices and services.</t>
      </section>
      <section anchor="information-disclosure">
        <name>Information Disclosure</name>
        <t>Observation and interception of network traffic is not the only means of disclosure in these systems. Other vectors of information leakage is through disclosure in log files and other observability and troubleshooting mechanisms. For example, an application may log the contents of HTTP headers containing JWT bearer tokens, user names, email addresses and other sensitive information. The information in these logs may be made available to other systems with less stringent access controls, which may result in this information falling into an attackers hands. This creates privacy risks and potential surface for reconnaissance attacks.</t>
      </section>
      <section anchor="credential-theft">
        <name>Credential Theft</name>
        <t>When the information disclosed to an attacker is a credential, the attacker may be able to use that credential to escalate their privilege, attack another system via lateral movement within the organization or to impersonate a workload.  Bearer credentials are particularly vulnerable to disclosure since they are communicated between systems and may be revealed in communication channels or application logs. Credentials bound to a cryptographic key are typically less vulnerable because the key is not disclosed in the authentication process. However, care must still be taken to prevent disclosure during key management operations.</t>
      </section>
      <section anchor="workload-compromise">
        <name>Workload Compromise</name>
        <t>Even the most well-designed and implemented workloads may contain security flaws that allow an attacker to gain limited or full compromise. For example, a server side request forgery may result in the ability for an attacker to force the workload to make requests of other parts of a system even though the rest of the workload functionality may be unaffected. An attacker with this advantage may be able to utilize privileges of the compromised workload to attack other parts of the system. Therefore it is important that communicating workloads apply the principle of least privilege through security controls such as authorization.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="WIMSE-ID">
          <front>
            <title>Workload Identifier</title>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <date day="29" month="December" year="2025"/>
            <abstract>
              <t>   This document defines a canonical identifier for workloads, referred
   to as the Workload Identifier.  A Workload Identifier is a URI that
   uniquely identifies a workload within the context of a specific trust
   domain.  This identifier can be embedded in digital credentials,
   including X.509 certificates and security tokens, to support
   authentication, authorization, and policy enforcement across diverse
   systems.  The Workload Identifier format ensures interoperability,
   facilitates secure identity federation, and enables consistent
   identity semantics.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-identifier-01"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="SPIFFE" target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE.md">
          <front>
            <title>Secure Production Identity Framework for Everyone (SPIFFE)</title>
            <author>
              <organization/>
            </author>
            <date year="2023" month="May"/>
          </front>
        </reference>
        <reference anchor="SPIFFE-ID" target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE-ID.md">
          <front>
            <title>The SPIFFE Identity and Verifiable Identity Document</title>
            <author>
              <organization/>
            </author>
            <date year="2025" month="May"/>
          </front>
        </reference>
        <reference anchor="SPIRE" target="https://spiffe.io/docs/latest/spire-about/spire-concepts/">
          <front>
            <title>SPIRE Concepts</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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>Defakto Security</organization>
            </author>
            <date day="24" month="January" year="2026"/>
            <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 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-07"/>
        </reference>
        <reference anchor="RFC9683">
          <front>
            <title>Remote Integrity Verification of Network Devices Containing Trusted Platform Modules</title>
            <author fullname="G. C. Fedorkow" initials="G. C." role="editor" surname="Fedorkow"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <author fullname="J. Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay"/>
            <date month="December" year="2024"/>
            <abstract>
              <t>This document describes a workflow for remote attestation of the integrity of firmware and software installed on network devices that contain Trusted Platform Modules (TPMs), as defined by the Trusted Computing Group (TCG), or equivalent hardware implementations that include the protected capabilities, as provided by TPMs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9683"/>
          <seriesInfo name="DOI" value="10.17487/RFC9683"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-s2s-protocol">
          <front>
            <title>WIMSE Workload-to-Workload Authentication</title>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>SPIRL</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <date day="16" month="October" year="2025"/>
            <abstract>
              <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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-s2s-protocol-07"/>
        </reference>
        <reference anchor="I-D.draft-ietf-oauth-identity-chaining">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="9" month="February" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism to preserve identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Web Authorization
   Protocol Working Group mailing list (oauth@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/oauth/.

   Source for this draft and an issue tracker can be found at
   https://github.com/oauth-wg/oauth-identity-chaining.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-08"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-workload-identity-practices">
          <front>
            <title>Workload Identity Practices</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>SPIRL</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="17" month="October" year="2025"/>
            <abstract>
              <t>   This document describes industry practices for providing secure
   identities to workloads in container orchestration, cloud platforms,
   and other workload platforms.  It explains how workloads obtain
   credentials for external authentication purposes, without managing
   long-lived secrets directly.  It does not take into account the
   standards work in progress for the WIMSE architecture
   [I-D.ietf-wimse-arch] and other protocols, such as
   [I-D.ietf-wimse-s2s-protocol].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-workload-identity-practices-03"/>
        </reference>
      </references>
    </references>
    <?line 590?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Todo: Add your name here.</t>
    </section>
    <section numbered="false" anchor="changes-since-draft-05">
      <name>Changes since draft -05</name>
      <ul spacing="normal">
        <li>
          <t>Update to gateway service definition and diagram</t>
        </li>
        <li>
          <t>alignment of cross-domain scenario with OAUTH cross-domain chaining</t>
        </li>
        <li>
          <t>rework of authentication section</t>
        </li>
        <li>
          <t>added audit section</t>
        </li>
        <li>
          <t>added AI use case</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="changes-since-draft-06">
      <name>Changes since draft -06</name>
      <ul spacing="normal">
        <li>
          <t>Separated Workload from Workload Instance</t>
        </li>
        <li>
          <t>Moved workload identifier definition to a separate draft</t>
        </li>
        <li>
          <t>Update credential provisioning section</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+V965Ybx5HmfzxFLfVD3SIAiqRkWb22PC1ezNaSosxuieud
M55TABLoMgtVcFWhmxi1/Cz7LPtkG9fMyKwCuinJ49mz/CE1gKq8REZGRnxx
yclkMuqKrnQn2b23dfOurPNFdrZwFXy5y4oqy7NX27IrsvNd27l19qy6Kpq6
WsMD2dHbs1fnz46z02Z+WXRu3m0bd2+Uz2aNu8Lm8Nfkx0U9r/I1dLZo8mU3
KVy3nFwX69ZNcnhu8ukXo3neuVXd7E6g82U9arezddG2RV1d7Dbw3tmzi+ej
UbFpTrKu2bbdo08//fLTR6O8cTl0ebrZlAW0AI+3WV4tsjcuLycXxRq6vobZ
rZp6u9k3033zbO+N3rkdvL6A7qvONZXrJk9x/KNR20Ev/56XdQVj27l21K7z
pvv3v23rzrUnWVWPNsVJ9q9dPR9nbd10jVu28NdujX/822iUb7vLujkZZZNR
Bv+KCl76ZpqdQ4vXbkffMb2+qVu3uYx+qJtVXhX/QbM9yZ7sZq45bd7RT26d
F+VJ9tfa/UvLb0xh0FEvf55mb+q2XufvLmvTz5/zpm7L/Cr5Me7rf7XzvHSN
7Won78F//2WFX03n9Trq8MU0u2jnl/XSVcXK9PgiryrXpr8pF72YfP3mfGAI
31fFlWtaXLp6mdG6u0V2Pi9cNYfWvq6ravLm0hXV5Lxw3OS83lYdMtYfXbPO
q50dPg9iGgYBk3hPNBtVNTzdQW8nI+RI/wFePv/u7PnzZ/RnlskuOndz4PTs
u6ZebOc41sBjzxuYMLJhBs1kz2D8O+Cb7IibOZZm8mblupPssus27cmDB6ui
u9zOkJoP2k2xXDr936ysZw9g9NUDYsK8WbQPuKXpesFtLWAvnWQPP81e5bvs
0aePHodBT86exuO+uHTyUxgw7qAfXFMsi3xWuvD903q+xZ3xq40YRpMM+tFD
HfTnMug3KaHxq+xJDeu96drhoXDH06J+AIKnfVBC022H3zYgcGb1Vv+eSysP
RqPJZALM13ZNPofFR6oU1RykS1tUq2wDPAmcDw8j183LersAtlpvth3+iuRa
F/OmzlrXXBXwUG6EX5td5m1WApd2ddZBu03RcjPQQOneg3xYdtcgyLLltpqz
CJs5bHe2LcqOWl+4TVnvoAlo6VpkGMiT60sHr+X+q6xo4dFlUfGTvmH3HpiT
hooMmGftxs1hcefZZttsQMCMsw3ILVjjvCx3NC4YIz6ObApvrGtopNlWFX4H
mxpWETbbNAPmwR6FK7JF0c63betQBEckoG4Xri1WldJLOaH4D6ZvDaKyLll4
b/IdTZBegyW6cjt8KMzS8mmL+w4/wIOde99lfrPW1ZSXdV0sFqUbjT5CMe73
53/pRW7pNGrpdVigBTZ194XPQ3fdZd4hadqi7Vps5eCS3sopQFE9Q9uscjzf
mcMFvCrwtIZvrkEOIAf4ZYLRVkgUWDDoFLpqOreYZq+XwHPjLF8sCiRIXtql
o8Zb2/rCLeAE3c4vcYakA0AnILabdpgPFq4DEQ9cGgYM55rLtrwwRdAAQqfY
kBnPAEvhiDauwc8ZHuLYyNy8TOe6nFah69AbcNuCd1pL1Ni2TEPTlsNVX28r
r9DMXHftgISeAabIu0Ub7zFa5AWcjVl3XWfX+Y6o594DW7ft4HRPsv85/fzT
L7O5azpcZJSSyFsF0rhBKsEC8QgLWsDs4uV5VuY714xptt+cv/42e+tm2UX9
zsFAj755e9Ee8xvAdvhGHjQzfnNKJ458PStKOclXcLYicaGdjAeI+8FVsGpI
WtPK4GLjl9dFWSK3wJRL4G4aNEr+Bh8nSgLdXuP2xoHZrSMsSa3gPq5nwDrI
ykNUG2cF7Cjgb3pLmYG2Eewwv71h8YXto66K6grmuMA21nDONe5vWziI4GsY
Z856A+2fGl5szIpnpxVMLEdhguSifWBfwllc1tcVTvrHH/9wNnk6JSW7Rsaa
wKlWtfzkhGjc/vSTChFsF5VblP2TZT7HmQDdNzU0b0e8JSFJ4riS/RFxe7Z2
80vQ1Np12KbQ+OtTeCh7NP00y+dz5ETqn7mgN+u8iucd0QhJ2V/4tq3nRd6p
3CGei4YlIgQexBUGjX1FD4EmCxv8EtYZuOKMFwp2SofUxb/9qXbt8OiaNwW0
AsOFla7LesWHD8qSed7itpHDT8WONmO36FjEvDRm50I7V7Y7St4u3d5TPL6e
eOKzzHuKIp+EVcunGdgrSDvYNPdefX9+cW/M/8++fU1/v3n2p+9BeXqKf5+/
OH350v8xkifOX7z+/uXT8Fd488nrV6+effuUX4Zvs+ir0b1Xp3++xxO89/q7
i7PX356+vMdiw6oIdCTRgtDag2yifdeOlCq0a79+8t3/+d8PPwNG/m9vnj95
9PDhl8Cu/OG3D7/4jHm34t7qqtzJRzxiRiAqXN6QBYsLnG+KDmTtmA5V2iDI
9UDNT/4VKfNvJ9nvZvPNw8++ki9wwtGXSrPoS6JZ/5vey0zEga8GuvHUjL5P
KB2P9/TP0Welu/nyd38oQZBlk4e//cNXIzk1/GJsUVVDJl3WJRiLuL2RwdsT
oI4/ukaj00iA4cFesWiGNoD2cF7iCUOWAi4IqxD0MSigJEWnrC/inga1q9wu
HGtUolDBIuGuRsnbwN9gh3dbEDLrHHZBhb/ic64pUYh4MTtGZaYt1kWZN6wt
VWi6s95DmwMPVHimcXMHZwzoFR2ZYvEZC/I1zLLbbYo5qcIqoForlDcg9ml/
53C8gN3RiLY2tWQDVZN1qph+8iURMkOBWqZaGA4YxRa171+EyeSZiGTYU8Xa
BRkbqAZcnv3wikiSW2qhCJ/3VBKv9OGCuPegIIrShwYqbhY43Rbbxg+Hej3K
s6WKbBoiSLG6WhzT0sNM9uiNQXGrVZuDp4BvYL1aEgnAV6ffnZGwBykM2iHR
+l1BGsCyT0IdNjKbswMnCa/jDkfRGoh02SJpdiAfYMGf8Wnael4EAzSf5ThW
4UfW+Zn9QLfPG1omOEsL+uOv9azlc6zarmcwWNQq/eh4RNFBdpXD8GoYJJNy
saWJI6YCzY2zJZwb+CutXw2y36E1SpSeucv8qqgbYrFzPTee8BmIHNY7F4XI
bU+nBgmbDM1otFaDkd1q3y9aqxNSM/aoHeMRj2CL2kv5FlVpNK2YC5ii3IQw
bdwB2eZyFBMfiJG0zhdump3Xa6dKUFg2GEsT62de7LA+1yzog+2nbga6vUaR
AXRDLQU7RU0wL8E6XOzgbzhWKpm0Gd80e4pIQ4PidFM4XHgy+vp2AzIAUGpV
VCiQlk29BpVBX23rbYMWNS6vR1u+a+r3O7FS9bsNfufFMEprtyiQrdjOo29x
73VjGOGmzOck+/LtilWZD7egQS6S8ghCD1tQ6ak2cBBCvpUVzA+sD5owCApR
A+MZEIsTGevS0bBRI8B1xXGyEpD7ToyKjbp9MS/IpK1YqzdLFime8JksHx0P
MT1tGZjHU1cWJC2+lQkdPXn67bH2KNppTHQ4bZHkhB+4ISsRZQfqI7Ka8v6y
wB0dnTbY4AZtLtkQ+QLmVvBmhxNqU8MU9bDUxrH3mbUM1dI3qr2YTz/+eAft
n1jtjVvXwIynHcJjeQBFkK+ye3n4+h7pT4owsIkBytiXv/nt459+QlZbkt3J
0IesB1l1sGdwViIPEF/Z8seGuzZ9ZM9QYFVIfVb1vnz8GFU91Qxb/wC1RTq6
30AJfbHZpmqTE1nX84m3wVF0BovcgyUsmPJ0v+BSZkcwOPJwTM6e/t4Tmn0Z
4bGffjoOQlL5uDPYUQQdML+ZgeDegdUGsVQxOgA/7jZdvWryDZjnpOfz4WTN
IzG50eDHXdT4kxb+j8jPElgL4blWD3Q2qEAHpwbXaCtD7+ZoVEvTohYqdwfo
anAEv0b9xwgsSJgpIWT7qJ0oJgi8CtsVoTFyyrBcKdta8DKgE4imhnm/tQDp
MOgC1CTBiTsQJTEpdqVb5fOdR92IlIs6A2sU5r/ZoCZk2/DrAmRjJrsgPOpp
jSg3MhXjUwv6zMoe2IyoVGbkiiJsdRn3117SkUWsjELEkSkaCefGI6QoIgqE
YE/bLDKdbqPlOBoa2UTbckHiV5kXPgGFQQ9ADfhvoILzlzIZdN4MWt3WT8Or
W4ipbXskO9b6BuHzR0O8JMh89uNH15cwD6TdRBf0JxZTfXStD4gJ6tldNs6h
hIbNg4jrgqDXsp6/a0+i8Y0HNz3SfIibaOO2zhoeBHFul0tcn4o1apRws7Jo
L0kORjt/nIAVdBwEJUpEKS70q7pxHk0eYHGYLMwDTRU5ThHXxgUiVaOjYQ7O
H1cEluCfxsF+Fec98SFbGpW3tt0iBgVGZ2MxHgYP85jFZC7K4mJx/+exOEnz
5396+q0imb0hZpeu3DA+W7XIq6uyngFp4QgDtbKS0zNt2HAk62Xmp3XO7Vl4
PwbJkRPh/C0WfAD3oV9mvgDj8XmFXk0gEkOi8PM3b/8HWCCdnNFffP7wCzij
k7Y5AuDt2YUsoTf8N8Q3hLPAcniYFXZnvV1dqhbp7BiQsZhIrV942j+qvqI0
Xykn4BPaDfS4hLcu6SkU5eTYqtdFi94HGlGvO7Rwtsy2czghAhanoMmUrC02
3CN2wGOJz7RsjQEFCNTGopacYMFaUJNIVdbwExxsedPxaYfiw4QkwNkM9miy
9Pg32Ie49ZiBhvjlbV+sibDCiTKT0wJHbSNqxqa8Hi/nonV/Nn2MZFJVCE/p
syW5HmwHPCkG6WDLRW2TR6jtELUnBZL0R3g/EIJkW+FURCWnBPYQoytBYDMd
oFPcy5Eqt2eeFYFb87xpZKYHtYgpH0C8vTGuA1TG96Tlw8oVLZCn2ZYIWWG7
ujHwW9bVeGmRHwbGzqsSqUeGyIRVq/FB7P79mzPeUaqYofPVS0fGwbTxti9T
hB7s9ekurdlCTgXiDhZp0XtBqh6WozOHgAzJyfoDhCg+jULS67BGNKoNvlc2
4mDb+aVbs6kgfwZMCv02SGQUCkpo5E4SCfKUmr+R2yW3/ah0V6sBP4oRpO7Y
QmET2Dca8ECLeAF8bjVKMTqUEi1Sboiv0YBC8EF0/IGHPR6ufBcdm/TsAOfD
6drI9ziTYiX42XTfBkN7NAzDFYTWBR0hDCdCA/tAKCPJHGsgGj1BFWoEv4FN
TJpQzvaycLr4DlKGRdWpWQiz+Y3bujXiqnNvoaYK6bAGGpYHiACEWtG41NHd
mr77JoZ1+3klMXH9evIF/yqBcMBn37y98NpPtXgAROwf1zBwfCwxf5pg/7Hl
WAXQeseIgbcGdfA0wJ0anRilwe9iQITosCvX7MbZZX3tEL6E84+9qAOzYnQP
d5a3kngEEZBInkW0Rgv0E6jpijqiWCNtV5eOubNxZEm7snXksoTh1tkathYi
OzIKELrvFK99x65CBkNIEWIYAmUUtATCig1TUlIii4FlwYDlHy0wD3dGyHQu
SzVkocMCfQ1TH2orLCN7rntP8OCPQIU6TuUE2jSk6oAIIVfEyWg0wf5No8Aw
qH2Jl4HWE9HtjE2ErYkLUahjswULJQALQ45v7qVuGLVfsH1SXGF/8BqfiIfn
GoYVeHQBxsGAWaSsxoCG7wXffQd2oeIW3gOoUQrxKnD4TgjcgM07CJQQ1Kvu
6V6f8Zz1AU8wWOc9RqzElJ7PXQVqQd2yqPmarLCBp+Wx0ejvf/97nrdXHL44
9O/+5JZ/bAF9jTswb3bJj/f3tnuz74c7/bsZbHeKPU6mv3q7N72WE6rc/7nt
3sj/wzfJA/zv6PHxz28Xx/pVFrjg4fCiRnM40O4fM9P6nvHu/e5Au7ltVwf4
l/30vWu7Xdaj8kHuS9q9P0AjatcNt3v0cN9Sxe3GH7OjR8fS7jV9hAX/eeO9
wUjl7ElJkBAP/iul730/CZ3V/cleAh8er/wP/tgd4F/7OenyvrS7l76ZHe9N
9uT0QVCT+Hcm9SALHuCHc6LvZ8eBf88FKc+ijQFbJuyZx7e3G/HDATp86Hib
oX0xsG576Lu33atfti/2tlv8sn2xt935P2i8boi+V79c7mS23WE5iVz489tN
5fqjny3XP1ZuGR7MHQ7r4XapZRjCx/7zr3Nu3mlI/5+0e6t+dvDffVQA/z76
8ST7iLKjGLan9Iff32PtUTGJECBkImQlHOneTyNWyvMZqr2LIge1eK1aLyr9
3PChNjLCUijMCey598FmbVMErYcjDTYL6vtl3VL4d/aW3yC0ROYz6jgmlQwU
9NiYmPfce/LFiTpmTR71dnQUaRRrNqdjVuFsOKKM6eZdsQSLIexxm79wCGyC
wT+T3kaJsT9AxIwnxUEb9mceqIZulNDZ6XdnFO9sI71f6MvZrCkcOmTXawok
WmYOsWDve+r7Ie+6dhqrasYmBIoSEFq0yAy4gxkgPTfETqHotXVYEWKDixMs
UPKq0ENmkT10LmsNX/lXwRRtcv++RH8StKABW9M4cPEiZiFGuzEGFNcPSXfn
uMYkkJGpg3M19vhdEit88FUvryIzaQria4GpFc0epkSfXm4hKq8v4ZGuocnQ
wrqXXOABGUMYBEnFkydIlHgeR7TsbPgyFoNRlBzAQQFQLYNM4mb0e1Bbw0g2
QX/kF8van2R/lC0to0e0MdnlJhqTAjE1uMfEPml+RKch5RSbbpk5BTzTcU6z
s850ZD3HniOBGQresCYDCneYDhiYSAIaCdQizy86roh2G4z5aSgYtWjrUsP6
eOB+OOrPog/iN6KxUcBDU287Dnyr1+kSUEg74hTzEOY1HdnhIWJLzfg4qzTC
SSP/8pKRH3QnDGEzDE659+g0W8lG5O8o0simX32SmAh+nc80MlxOJY/Y2aeV
BRjHkg8pjVGKD6WHkbejNlwunN2DwNPoG4tj9mDXiUR5NQj88QeU0cUKg0iu
XJkty/q61dOQg5RohkgL3JuHgObsKUaBFbMth2IFiRBYs3HwgCMUC6XD4bPL
5Q0FMcvDZbF08928dCo/7LM+Mqnv9y6aAXppSEmUxAHrMWLpRbkipvmrvMEF
oSYNzC9+N3bEYOIEdKsB+mR+n/bPyzfC9qPREznpUULZ6GG/I4wQgG3E66Gq
E2lFlDTgt4hsMBt/um9rZcYNFzdC8UktnQpFFe0dce6k+5fjIcTNZVFy4HQU
PpiMJzEcacqZ+jMo/TV2OKSP6nZVcs8x1JgxU6Z8luhiLD2E5jrUwvIiRuVy
PPOLi4vvzsfZDF3n7G7wCZ3iVVB8tsUYXi91rXzatltqlXNscl0ITDnTmDUU
Xh2BteiDkeQx4L86WjJUaJoF+5NpRSlhixew3DFnPT62/GLlRPZwNEqkunrE
2CsC6wOqwOJ26ZtF02N5sq4XwQ9relffrdcLktUbDpIeUCZZFlN4JWphVZzf
KGE65GQhF43T6bhw8ACN4qFb9aGNtd2ZW9aNb0Q53AdHc5RFMhddaEo/geUV
53LMw7yNIr0l4hXsClkDwyuRpZjt1i6vOCiOfLykvKBYSwYWz4HiJ8htlNsl
6eWi6fmhlpEeYa3g9r1cP2iTjs9BNntsds40AoJlx5Di2VPerM/RpkU89kE0
umm8gA5RRux26w1L1P8GDrGOHYXTCGWjxMpoGGGzyFJg4sDhiAmKDhmMB32S
nLwHfUjEf0J4DHTjwHw/eZy47oSY647WW0ongieOgUNK4nWMty5342jluF1U
n9m5xwd+0loUJBWRBs0AYZ2pJaI2mkhxm2Rq1/MhNgyCmYShE7OazEPziOwt
DB9k2cS5mqqR2bP8QLccAVuvWmNRUeZGkkr/CUFj+8Tmo9HonNOwUIarE81d
FfW2JaWof0qG6ZFcIstINh32gofMeI+c+7j1g7CJ4rAmi5KDOcLARL/DzB7K
oxEZ1nKUX3+geFSii9H7Ce2YNed9eDs8GhKITY7RoLQ83bS3r4id/SqGtJk4
C0ZTC+7IPY+mFoGMXMxBvkScg6wZAq9SHCJ7TPvXNAJr9YiEZptkbgly0Kme
YboBoox5vtcJERr3Vzw67dnBvtInNr87lRwHHaV7Ibg9rtEhp+iHwoMpIHjI
9dkbn7pZkjb6bs4D41MXUK8N67qJ/n1FvyiZ79BG6DP4Pz90HDe/GwA98Qfj
9PmAccx/1jj+OLy+d18X6x692z9qw/hcYlfoXduI3UyxuyQb8tzdT+fDjkN0
SbKP07g4PztOnR4w4s+PkyHecBtsf90XPrLuTPhohIX/zkrKm3guR/mxcV3S
mvbGMR8cR0KfmD/uSI+BNs5/xtqmbbhfoY3mV2jj6ldoo/gV2pj/82nad6t9
eBt9F9rPaeOXny//ldr4UJfX/VHi5dJMR/Fz6ZF0V0/XGTofwNylchw9rVE8
MWRyqs9gf9brQB6yCVNLsnUkx1ls5lBKoQgeNmMhom5UlltK9nSqfNabfOXT
7AcGFluWWm2A0qHFdrMJSIoh51JnivwxM8SZGRUIKUFB7/UjXHI5Bc6yZbBE
V0Kx24vI6M0XC61BgA8pjOgHJKbLADhOCUpIqd6Mvbo7UGGJVw9sg/m21NoN
OkLJfEoCa4kt0Jf037VyDwWtb8q8kEpRUWjkeG/MZEh2RruQ/DhUkgHzDaSM
U1nX77YbWRKtUAPPpS11VKAIkQuuwoPBrYQpovko+VPC+eNAKNssV9G4qkty
tsWQPFfpaSTvdk8JHgbOcqP12+pLJpW6n2I8zrx/kELLYTo1GV3BzWc9cqjx
nFEpjjI7jVZUC+8U8msKbxrjSxmL4eU2TkntvHntc7WS96aDUJQlono3YXNt
NJSYDCVJP5ekMeOt0fByk3NuHCoI5zaDUKwmSIvpgyAvJ7ynMcZD88eJSh41
TOo5OpmUT7o4idjHUnsWOLUVmEYCyChc4isdsJ/acoqadB7D6LsUzVCjLPye
A0UsQKl/1b4rNoKiAdkHUf8nEerPAQ193FNM0RS39+irxdoMrm1s4WBSJ+9+
GLbElQ00n82GHgSiRMQNxcYqIkL20EPUz2ziqD2NRAhEQHXwjwkunfcFq4SV
gx4tHiD+It4jyp5UX6Ui10BwAcdjR6WdS2qZ+jhJtbyecPLFxdAT7V3d8Ri1
DN0tVUJkt/GYfPKMALRR/YTIcUER440rYR9VnlWC7GJdwbimGgdSuwqcwVwQ
u1fXBEsDKwVkMaCEhE+tNF8lCMkDKggsksfcngc06U3gbx/oYIchwFPsYDBL
ZCmddGecZt5XHZwZp1GmyXgvOwNLjJVuivQHH0PeCjRES4BwvaRIew84tcVi
02s8pLZF+SMDLEMiFATDrq+ncTLRgFOwhyZ6qej7XtROmYALSOUpp6o8I3EO
u31nXEMoODl/NvbheA1MZDEuNFjZrxiaPw3FRTyM91prxyyCAzQikkUnyZvh
R4HBKV1STpCKE4onoOMUGnk8RsPVM9Xu5Zy2tljjPL8VzYywSRMwJKvEOZKU
RhyB4dGJU3TBYx0Vs1E/KiW/HeJ0YVo8mVACIeI5HQno2NRtO+EgKtAtTWWR
nwU4ToYxx/9swPGubRwCHO/eRj8q+Ge1sQek+6A2fg5Il7bxzwbpHkYg3aMh
cOyz/5dBuvt9elCWCf3n/t1AuoEFuon/cwugBCpX1AZIZJjNzVF3fGsbza8w
jquBNgxlru7foY1ioA38P9fc4b9va2O+pw37HSz+F0CZ/PgOIJ1pw+P7t4yj
B9IFesSMcqCNHki3bwMfbKPP4P+ANo5+cwxMdsO76x85jljw7Dms7ocf92cK
3mkcH/Z24PUfhvb7LW/fhJjsIYlz+9t2j3z425azP3jeidz/oLfTH4ffDn1E
STQpC1ztW/Gb7CyKvo7kt6f7/v57Y96nHxx6v+8d5P9G3982/8mh+fdzL7A8
bauYtJ+oGlZ3BaVzez9NCDQJkUdWV4/j3DNrHfnKpGRYaAkzRhgDjBfFap4T
nPX55Ats+scfw6R++sngh5QhjwnTNF2JlJYyelz6r19jzFzlw3UGVRGfUFlt
0OCxKExccjhUCkywB7H3BWvjvHUu6hsuTCADFlFkihWo1exrwcqkqoChQFAw
/byR8MHDdgHjxqSBluPMKndtwfZAF6xzcj0dPTkAxJPR14PcJS9B6uBYTCLE
YnJoJYUlr4tO0wgSnJ7ll26GSTAvbRx1L0KdURlOVkgCBan6q3Ce2M6Cjajx
P2SCPahvca5wBoRBFgWST+pWBK5PJlH5KKG0YMyK4vt9Hn9/I9lWFfRC0vmN
PUTDfeMIQYZD44kyOgSv0PqvHBZkxk4wFwXAFIGoAhn1wNg++NqTD1xINp6+
nZTpxdf01ckkEAmznkYOVvnK4+AJeRXy7hWmDJIpRQZ5WkUXr8H+gS4K2CYg
DUw8dHIxBCeXaflYmBJRKF4WkkhJ/hMS4DIqwiWDiyo2Ebf2EgrCHonLythy
xbEgKJLI0RP1kuwBt0PQpj8n+LqEA0HCgenY3RlqUDDEfitoeAANDFDioY2u
KHaEUvloPaFvn498IkK1AN5z8xxR1R7/+Qg+W06KruZIopVFbkmji4KjwIfC
VuP6Xoy8GghK9mhr0St7GUwl53EonW2C5rEw0XoDA9XSgwMXWexZMA8Omn59
5CTBqZ6mpjqwv4WnJ+8ocNkHyCciM95xHWsoy6LBKGGtAMhpOsazgQZy6iIK
d4pgh3tWJRaod4skJoDBIH3tLfWrObg86shQj2p+d7sNOdLDmGEsEn4tEpdS
RdPCTnSSRU7H4aOCV/A30QrK3QsIlINGMUzS2mSI9P0umpiaLnCCLceD+GJo
EK7feNigg11EnJqIvQtyaMuZjmk/ovaiOLPaJVKRkqUSL6a6wR7HtL5GLVdC
4lkitLfEkmMAtW7326RNSLJTp6/WpuKo5Kha/r5VWQ5rGIaxDw/Yj7a3d9OV
HKw29D1Q5QlGv0iZobruMMyEi2EO1E5kDTUqcxY0FvUkyK6Pqh9ziHNH9bpg
lFz9jwq0zYsNofPMHv0KW+IOj2puqX+FU19QNnJTW1T+1w6U+YWGi+ju8EXY
qOb7bOsVJ7mXYtuVtLtJY9c7/tTaWfjjVxydUxnoEowUig+Kp2tvUONKrlL6
iReFs8xtuShVjnuub3p2Xz1sqvUlB0dZtD5+2r2/hBOQ3InYOUeM8/Velgwm
GYJ2+lPiJbxDIDwysZecsIbGLi1iTaKBIfK1uLXICij0bkAuKqx3Q1in6gJD
V5jVc5PiN/EpTUlRV59VhfW0RX4qGUm+M5Wx+DbLj2Ua4KASMErK400U02bY
oacsvqqDwz443nzp5T27QOubR9XZWOhxrtua0pM7yi+hIJ/0hOdINcoXj7RD
qkzJN3WEruVASnUUv8kjQbJ3oXMtyjzz70U5oLpUlKvQ2kRNc7lXuCCOPJ80
W9HIgpRUglY+H1BVDJlQym+pz1f96djs8Gjj8IEh1tGLeoIwMu/7OyiiLuXG
Apfs6U1eNDatfnBIapqp7zNzVVOXJdez7BGABs0DtQd/X2pw1bzjqb3YgUu7
68gDhLEhLoKeoosTSA6SyIiTnGbObG3Wp4pwheMg1YnrzIURMa/tkdFRSAkF
SZgGClvPtuarWUAByBd7+XQaDWDv5RMojzbONRJbFd0QcfSuwrvAOH5Bbrpw
zb3j6MYK04mTqyfGRvVkyZJ3Uv4xvoEC+50wfnCvMTVMd/dwA9XeQEY94oqu
2p2Hi5bQYNnK1cbas0bs3OOnYbC8YfQOj4swWKLBAiTreXb05vTiPL6pe9/t
Gs7ertGa2NJbb9mIlsNvbUGPKpan5c5X2gWDGgY8a4BhUDZySIioXckdML7i
CN1meYlhiSB9MHm75AhNr3mHcrtS+CW6nDWBL8P8eT1ROo/1wgcN10Dc1gtE
Py6xM0nTM7/37neh1EuwPqjw75tnQGlvr+SmpPC2w5v/lNK4WCFvE3eVXtLY
JatLB1MIHYzVM9lx/kJWPl5NKYSxP72qeqFoMkIn+B3fY3ZK1W5PKY8dmkj0
iDNJ5I6oPO4XiKEbwWpTdwH7C91x9BD1xKV8Wi67oeE9h6UJ87+SkvDXKLYa
9z9lcGtVIt8Zyr4BfVXapftsStQlMTY5USHpQbkvu6fZSukiCbZBnvVdIn+b
LgciN8NzNtpI1Jm4OKmXt/aIEphONpJE6yxgr5GeFEQWnUtUJtXFDQyUbkJC
LRw9bIIa/VmmVXC8HyGwKefvfXSQj+SamdFI3BKgDqJTwiyhr7tDV8eyUIYB
EKtqjR0T1PSUg/TpYtbtZmz4MJwjnamqE6wgu4G8TKH641z1mxZHrBe/TrN+
tQxbBCj0rrXMJQ07gRHzZuD+ZF4/rihwYLB2SEHADBxcJnbeOxl6gZp8ZaA4
P+hvX0RcwIr0smTfZ+BgGv4h+qZqu4YEJrSMhhFSsqmQCKe7hlo/tqQP1QDA
+ejQ41BIBLzaUF/8dInh+8M1SzyQwoOw25Suk6VZr9NNOY3SUoc8jNZvCZ17
v+WwN/SmFxrE395Ex+7NgWfDdz6Sx3hJ/3JbZNM0m5rHsWNvug67am9CaGr8
tbVRBt+Df1096n23/9+Bzm59L47ss7U6b8llih+4b1bu1n6vsh/sKKJXr/a+
NeC9lldNrIb8kLzYq+2ojIL8Q6wcSJJQKIBBfm7+1ejf79JOvsrStoZf/Qt9
ttx0Q1/GM4jmajgZ5moZ6n4a0XI/ofCeie778gNeTfeDvhpv0MFX0y0x1Osg
Y/S/vBkUN3f6xzz8Ao/V1xu1f85DHPwLvURzYAq/pNc41gLOf420oKGc6+n/
Uk9/suT6CJo1b7js5QvQBSNNRtOGENYYrJVlvfVGB2Bxj+DidvZXiTswDs3I
LGjlilLJ3zLR/3jkhTNGTlJOeTKV9inQmnyBz9HGEfpPfKEZg8GQ33HAOVK0
kSqR6otXRU5fLKF9TSP8JHtZ45UdWMNhEl98OdDwwl7XRGHTNlOspJYE4IfT
/J3rsqOl1XRFdYav/vTs1ffZSg5l6IUyZ/R+URxM/OKTst6K/oiuq1euyymp
jg/RY5zHs3BRUvYDOh5meIfhJPCJXW9/jSCBILi0XALJVoxjNLP2O0KiH8yF
TOzgwH6kYIU6r5M8t9Hrylt565oreoDZ6O+PH7oMqNtpgRfj4xVcw7ojBGML
66DmE1Y8YfsRXzF+9KHCRIrUhTpwIbxB7rkexzU9o+Jqz33ea69a4GVcsogs
LSc6naKlVKMIaIA4R1G5yarhnKiBPA66NbVn0kcPghWB2zlgeZyCAG2Ww+/C
zxP+mW7nOU2yBMNGRmnkB6zZWfunmNbJkvvGYrSArFE0qaiUoCkDSlEJUTHQ
1EzBPChFlwgacBO7/THtZ4IX3S7kvgwsw8Tg2pgv+JZf0+KHfmpmtxsqeEkg
sG/iU2NbHvkhvWaa7t9gbT+USMXwMxhFZffVlLQzuhJILupVtElux4oWUO8k
oxvJ0vsvD4KkU9yZ8371R75vcMxOrryRjNqd3Ivj0Kxh4eDvOhQftC98B+YL
u0Ys4ayMf+VzBvsF0gYv6CMZQViOqfUm9lGfqf09bUiTw9erItxjgk64juXg
mJLbVQzRyCDyt6thpiXMu21Bsh8Y2+M7jA39yW0vhdbQNGzD5A4eAh0ZLSXf
id+haoCabajorM87zCv2bqiAwneW24adGZyoJAJLbgXU0EqMIUxQjKQvU/g1
aBIGxcC7wXIKchReXKMPDAx2rDV9WawuSyzUdgJKQtN2xKJaIFo9WuSt1Cu/
bH1OUmsMLkEbtQkOfq1mHUVHHSEGhjfWt1SSi8QFJkjxz8dTvJC+rhbjXm/o
aRshmEXJfvUctoifeTII7/rW93moVOCazyWCt8QxoGf3qMPYWb7mPOfgglAY
uLMIwxFFDWLq6aSrJ1gutO12pTu+u7HutU6rpB8p4Y4T1f0vg/rx/ahd+8Th
p9N/t97uM5S28QH/bn61Jqx9eh8MjM1ktpukIe97vrYW45UOBp7tj2vv176J
sHo3yK4sq+/0dd9uteauMXX3fD1s+t4M/rn/61+5ide/SzksIn3y51ev4ybS
JJxnj57h73f6ehjn+qB/v1ITv+yOhn6iwCWpaWy+KgOhsPHMFOFNZKamBkPQ
dH/8KFZoRU1JTkGMWAWlH8F4DsKJ9bZYKc1jlTS9edqcqLbspOMQr7iIhYtN
lA0+3XWqHHE8pAFdUY+XyBy2TNJ6xaxxm6B9f+UsKJjemyjhfZMcMQEK2ALV
t+CAHVAOqW62i+5wHYpQ1RMezxCNxxbn6nYDJ7bL1756vRpUehkBOadtzfTC
tUmdAfELwOFb+Eo7eOqAEtGYUcbXsHvDhhyLw7EzYu4euelqOraq8jhUfqjR
UDaZ21ym/rhH3wW0KndY+vAdq5r+EK5y1jOdb1hWyN9VlHGhvuqExGyLS+X7
A6xzmatuxH4OHD87b8NqxoGIgaEQIKjRl9HW2wZj4liHJUsosiA1q5zv4w1r
rxWXwa64HEuc2Vj5FCNC2UkqU9pSPRW8Yh2LBrW6DCvnlWGEPsTgLdh3vsh3
fdLPL938nUEfsBh4A/odMiHYOm4VfCug94GdUVeayCKXmI4HFOrwJrq02eb3
3Bx7muKyn6hpkT56mZd0J6jyqrm6QZMKxraqPV+PzQxQNHo/ewqoiZcFr3Wg
myUDTif0RC3V3wwjvu6IXpgDI9VuFuw0Jfjk2ghYw/AmikpW6M2z8wtK7ofF
evPdE9pgm+3sQbudcan+41QQskALFX8YSgG9143DfQ6+PE9atlqMAgYaKcSE
uTfcd/81KbJSCF2DvAN4g7sc61/pi7gMGlfOsYkCv8zy+TvWZFlapfMIm1xd
wnUdbw0MYgh238RGf82cziRE2wsAKpveBLtzESeFstJx4L0TaRUlT9NmbGFF
oSn/Iqcb1s4tOPgklIKVTZ04MKWGt4oTJYAgc6cEAl0wCITnqwF9cJfCx1xL
ylNFMxBpZL+bFBBaODkcotoeKXRHIBWZ54lo5ItnYoGoKBzdbVw6roZhDFeG
pski5AjoJqc6P6u8WZQS7DRQKW2YHaYyVw+HNfaKFYXMUAaHq0+oXE97MnBh
S3uSvaxX4UqD+LoAriWCkXNDB4DSyPujzfHhUTBuP36fg7p8I+OBZApz0IYz
Qw8LiX+J6VNvO5gD4rifBMAYH4tSwnS+Pucwvt+d7kveB+amwjEqI9P6dQHe
rTEXxxxSRPkLtMC7fL3x9dqlItYn2TlNa+iebnwvkVDRjz2kk8KtEfHAGGJh
GaVNdhQOjwfQCmhZx9h7Sv15mRfrlhrQY+lBfJgFdaZYat7f8Wh0AQfSVV0g
t+cLLGCHvLQo2nlZU+AEX0bUFhQNbTa/jfRQUIzSZG00HxGXypzTPvv29QV+
UmDUy9/oPu2xDZBh7QyBrmtcIKqIDS1Q7iSMLCzvBDiaGJWmSCkeKMrxqiLk
DLwQpoJDDCRt7cEkuQeKd0zr+KJ3GSqVNFzk6KEYo1S8xP/r8XxdtBhbhd6k
Nr62e120sJAIKZMGrXLr/MXr718+1VgUQxaSBDmu04SjRrogwlDMcdHCKW4A
f6aEyk4IO8ErcLCTbuG3ZBoxImOjTC4SqUfnZ89eHQexip4AjnXGg67IK77p
DQPPyTKZ84qzUJzzOCWr1XknjHSuhSF9ITV/6cx3oegmpWnnKgTVyWPKqbc2
LjwqQ9VqoLa/cyQNbrEmEaoEms2cJr3oZWtrnyCbZpwUTXw7DFdByzOyLLyy
JrKG88NDySgjL6bZa7bpQMfVfHPfqNWMh0uuXaormG7eEAetP7rt9ReK8NfN
QFOUeCWBZHq5mBGkVIVQKhJS6VLKLogvehHLS7O3koWx6az9Oni98VLmx1CR
1zHl7m2rTkcZCr6mBea0kCuenqSkUAoRXmOykpBWMgftwpr++W5xOgq4QmFs
UaaRZuYOOT7VKJw9kfWgauE99Zx+JDFe+tbAgSBTYiZY6I0jqpXJeAxXSUhy
r0kJrc8F+R3qdE0l894Ruh6K2IqOlGQvkKHE0V8HMwNRby0oHSccrVFEni1k
2iovUZwleyNJ59JASGNWoKded5Ftw+eAWLa6ziXweSFug+QtkVFPY2PvLDof
f/zIWHQgwNET0caHvNx6NahJcu6bw2Rpbs9E/gJrt274RwlKZ43Wm496J+Jc
LlRbbssl1iqgA1M7nGbndH6KsWN9dSBOMPcFeJBu1iMJR06/dYGQvR7VcTDt
W4ry7rnA4hQbimtF1RStQC4pmTqfaZC+D+Mq9dOLR8EpfO01rMXYZyvEdjnW
N9hjmvcs8zfPn2S//c2Xj00JXqnBylrlM6mJ6Q/pKJtI8QZrfkl0+xzO4jbs
XLnG6wB8wJJFTLsZeg44D9nCUP7eGC5ibUx7IxVR4/5YXtMULo1++b4POchl
U5FHqieOESy5hcYyfkEgmAZcmsVMgAAezMlrGr6kMu/2GcVqFLa7an7Z1BVW
5MBWv8474Jhwxdx5uuuoam1/5+VpQzNq6NYNicJu6IeonOPgltNyKOYazgDt
ePZGVyrHtnjrJ7pMBW0hCoGlhUnsCMuNVKTRvd8UpAPasDXhwp2ifXJAlL3m
8hBFZWc3c6EGrg+5jUKPYgbU/NhQmKDcTRb1dUWYVLCrRDULofN9RIxO2jZ2
/wvH6qxiNUFrzOD+U4SZPxD+z8moAdzTNjQJDhXWjU8qlZdFYUFfZhXAOBha
DcKpK1ChyJqifdeLkOb4joXsvzi3rds3L7/9RZk6lJJsIrsGDt4kRe1QXquv
KyJJFQJYi2JMi2v3D2r+W4mb1OyRmJc+bpVMtmTnTDyi/cGAcW2T3zi0JrjL
Q9mESKpIe4QxAEc1OToXXHTjFK+a5soSgkDZk55Kkd8/XMXWgqmhcBOj6mBn
YkD60cXrp69POMGJV5nPjih3Pip5Gkm4Y8m7eLbCy4vDYvyRLOFSnkJANuzy
KAxClUsttx7u5PIvENSN+KFkL4WIAb8Adn9rSVa5+9D6jmyhhgvK4pI7QCPH
VRUi/UM8py2l04uvoOIbPsth3yBxr/oi6XjpF+jrV87rbDo96LNcSI4B2uig
c3S8P8pdhEf4ZH2w6etVPL3RKC1ycEgBGkeT1rVQfcSD3yE9LSBqXIhDTLgI
7mXitiZMkP1DWZUj1+7xPAUoTYoGe5RdmSW9THnMdKKNjl1pv2xWeGDHp5xS
3lA+f4dOB04eAZKuLindKq3NbTKSzYUNuJk48Qexy1WMCQbfGhD3ssKlKaic
NNKSLJUlDI8KxAcf6Dha5BVrE5TtASoTRY9h2skCGSxf8c0NNFdFwOOrAN7v
MnUXxByI2uxKd6bbI49nqJRjkIsvcO69goaB4uUMAcz0STF7Ss8zpWD4ToSS
riz2y0hpaizGEItcVTo0U6qN7s9FcjMfDK2PLDs5f/xi+FtVNXAa3/Yz/W7g
GmohnFusuADCEAl9ps+QZNHJB+NU8Rh1KEeXrhpEeJmabmPBqzniaO82VAXF
LO2C7FAGdjjYMb1RGRcCNRp0D/AZIXvZr0sk4hCTIncZrJKnrjlI4sJVvGLY
lcag04qRD0cPoeGDT/P4zirWGhT/92v2gwdtEEfjh/rL3UqGNKngeLuKLy5I
hexUH2BltfAVlJIbyfXgXlIvWJz76bfGPYk+YXXVjzMGQOCUhT2B1txbN4vC
HJ8Dda6B91tQUU6ft8cmQ86Pv63Lrdg2b3sKUJq2XcjsvUoeNK7g/CJlymBT
rTGHfPU2yUozeJi93FEH0L9Q0xU0fHYhgTqyrfyZS75y5ttCc/TEQ+knxBqN
bibvqDPmiVpNZ0SsVy8nX9NNPWc+6A5ZZjR6tnYNweIU2A8bA15QfDdQGV7n
i36K6HX82NSL7VyLLRov8T7XypCrzd6rpHq+DoLZCJ3fOUXYg9q5JsNt5Xyd
Nx/IkqPqHTnJ88oaWKLUZ0dBW1ZMVlb0WJGiKuMbWjMyV3ru+YBakuttQnWQ
Qp0k0CHQPGKkAI1j9AgWeIk50DchIrn6+aRA0ZEzyiZWtjP2HwzbuSSEgOrQ
OJSisE5SvL8/4Y8HSm9x6j0Zimx1IgInZUrxantf3ijc4OBjKmhDEMivI/Ea
B9AM2WmIajYrU1wbHoeNB96PBNpWJRcgJLyZcGYYOJXULHdJpAQdA6UYO2Ah
bedyCwEanVPyIXCuOGsAhuOjsiLx1RBkTdTBX+nvfA5nfJ/uirUZtpWYB/UW
zUEC4DW8XC9xteWAMLKtAwfAgQTjNDk2uN8ZhvaVE4fc2nWj5ahw5hjQIDX6
+kyIM+e4uHApDR8z3rUcpHeIY4ZVQN2dQAuwe5Ex8FSDIwxvjyHLibX8ocvS
Ihh+5na1YLQeko0P3lch7E23bxzkrvh5jFEJHFU3UbK15iQzBXZ83XBRM7hM
GeDeoGfRT2Y9aUgaWx4HxQAZW6pSB+RGocviKY6RlguT9dd+OAYFUYesdXyR
sgi4bHBPIvAeNr/hrb3+CjIWTJf1xlKD1rglxIL9t/l6VgDb4RlFvePzuuOJ
H4hTzV7jcCLWriYE4g8Cha1coWcEgbefkMYYEJijy0Vjhmy0Wt/nb9Sc7K2k
07AaX+MZVEZcybzI21ZmAet9eobgs7K+bkS2KkFZiwqgoCYXxoCJCHmjLHqt
rgNFz9DsAJHTuSSh3GZzazhrP+/1A77GNm8yrB7XZA/8j3gPBMxKU4Tv8LUJ
kL/hNjW01VbxP5KCEPbmiPD118nXT8M63/yj5q59DUQJ7wke3h9TbB/QG+/M
bPxee5CdM1a592vTWM+bzT30wi72f+0bG4p5/mo4EHrf1zdJ3HNeaNCziqDY
UKE452gORp2jSoYXckE6aZFYZ4VsiZAHN4RP2XrqKNSW+dwWKuJwgVbObWq9
MK2Tt8Q/HGxWFp5Usd18GYshFAuSg4ZPiBvKG8CpkYaxFdeok2MKs9jUpDuQ
81FONx1jPUNpFlw4rL2LhbE06bFxL6ImmaKy1FuIKbx4eU53cvkhF3pEmDhi
lN8vz32wIEWA51KHCbNcUdEgA6IdC77UK60H+pArlxqb4d9aF4tF6a6ZaHLa
69BSKy3YbxJfza0t1ViTOjuYTTk29mKUn0xOZ0004tNv8dcco1O4jhtQHGeq
99C1tnZPVWerbU6Cl6MjyMcleDgdaHE0dFyjBeGevG01ZZLIjIhhnwJRnBJX
9DwzmMVTH/Q0Gr1OuCLiZBihMoXndC5vSICP3rJGUzGRVJ4BREnVoJArx57F
JJ4C9Ml3mMqHbgqZW9wYRlJRUrmx74SbDcgNm2eLudKXdc3KhFe+knCYvIrK
YCNPYg/e1y7mAqUZXrocryDVqwKxXbyeNYnjIouMgE5QSdZ4p2G+WDRcR8sa
/gPRZQxN96+fA+qVJhRqnSOSeQVNqxYvbYoZwB4btDfQEKpIUuolZF7dCPHp
obhXr/DOEjaCYDhUKD/Ap0DNhc9IoFKdbQCE2IVEgSmd9+80JDmXZNPAMKq8
aFvWlqhRYU3jEgJaLDsJSegSughP+Ar+OjANqNVGxGbTXzXCxVT35QqhUWiH
KP5O3NLeIhhLQyGDnQO4sNYBPo+h5njtMYGSxvS0hcPZqDEuZxtrMs3AxCFm
SrOEQ6FazDTdlmjjySTM9gCTau5sJrH3Ni28lLLoiJADo/jykuVvkjAOy1y5
sk0CuIkbY9es9/QlqbESjW8jf4kzzRy08jqSCp8WqRKWWL2fg3fbTrMXcOxR
0SRymVEdcb7jwjvNTKiioZbEYGGXJkgwhMAn1Y/xvg2wa8FMGo2eXQlPcoqA
K8sJg40SkGWLC8YOfZEd4QBdlvm12uicyG64WcumlwWYc4ytYfoVuS15LKk4
0zRt8idpuDfsm5UTX5nd7bgTWGZKQWnbMddISCMM99z36Aug5r50BZOIJDiH
P7VdCpAnqKuw47aC04UwnWl2asYkjgbc4eoO6W1oWHf0IfgtG4r5eootovnI
jk5mQSahv9xVtAAtUaxJ0iI6Yp0xQGyYI0QNCZxSEi4G5xvWBPMggx5yfc3P
Y3zWkESezM5Ovz3tqbfx7TeIMoGCQU+KqQivglZNyRzYyOkcC5PCrqeIwRbU
7Gq7nsFUF7+/B2K/dahOX9SL+gQvCc129ZZPNSphScN4QgFFrUgduuwmm3z6
+XBLn2TfbxZyiUh6j3CoqEmbB6OWm3wNr5BrmnflMkoFDxfmiN/6+4sX8QN6
ww60AvocKi391AWp4o0dLSh+gyKU02/B2NDiKftn/Zt9sz4XgMuU4yZ0LDjf
xJmGdRrqK8udIVrSUkjK5wlsRv0H4u6rY6lz+r//1TkvjNEAAA==

-->

</rfc>
