<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-arch-06" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="WIMSE Architecture">Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-06"/>
    <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="2025" month="October" day="01"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 39?>

<t>The increasing prevalence of cloud computing and micro service architectures has led to the rise of complex software functions being built and deployed as workloads, where a workload is defined as a running instance of software executing for a specific purpose.  This document discusses an architecture for designing and standardizing protocols and payloads for conveying workload identity and security context information.</t>
    </abstract>
    <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 43?>

<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 running instance of software 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 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. Once 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 other 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 discuss threats.</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 a running instance of software executing for a specific purpose. Workload typically interacts with other parts of a larger system. A workload may exist for a very short duration of time (fraction of a second) and run for a specific purpose such as to provide a response to an API request. Other kinds of workloads may execute for a very long duration, such as months or years. Examples include database services and machine learning training jobs.</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>Identity proxy is an intermediary that can inspect, replace or augment workload identity and security context information. Identity proxy can be a capability of a transparent network service, such as a security gateway, or it can be implemented in a service performing explicit connection processing, such as an ingress gateway or a Content Delivery Network (CDN) service. 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 used for service to service authentication. The credential is bound to a cryptographic key and requires that the presenter provide proof of possession of the secret key material. Examples of this credential 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>Workload identity construct 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. 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>The WIMSE architecture defines a workload identifier as a URI <xref target="RFC3986"/>. This URI is used in the subject fields in the certificates and tokens defined later in this document. The URI <bcp14>MUST</bcp14> meet the criteria for the URI type of Subject Alternative Name defined in Section 4.2.1.6 of <xref target="RFC5280"/>.</t>
          <ul empty="true">
            <li>
              <t>The name <bcp14>MUST NOT</bcp14> be a relative URI, and it <bcp14>MUST</bcp14> follow the URI syntax and
  encoding rules specified in <xref target="RFC3986"/>.  The name <bcp14>MUST</bcp14> include both a
  scheme and a scheme-specific-part.</t>
            </li>
          </ul>
          <t>In addition the URI <bcp14>MUST</bcp14> include an authority that identifies the trust domain within which the identifier is scoped. The trust domain <bcp14>SHOULD</bcp14> be a fully qualified domain name belonging to the organization defining the trust domain to help provide uniqueness for the trust domain identifier. The scheme and scheme specific part are not defined by this specification. An example of an identifier format that conforms to this definition is <eref target="https://github.com/spiffe/spiffe/blob/main/standards/SPIFFE-ID.md">SPIFFE ID</eref>.</t>
          <t>While IP addresses are allowed as host names in the URI encoding rules, they <bcp14>MUST NOT</bcp14> be used to represent trust domains except in the case where they are needed for compatibility with legacy naming schemes.</t>
          <t>A workload identifier only has a meaning within the scope of a specific issuer. Two identities of the same value signed by different issuers may or may not refer to the same workload. In order to avoid collisions identity URIs <bcp14>SHOULD</bcp14> specify, in the URI's "authority" field, the trust domain associated with an issuer that is selected from a global name space such as host domains. However, the validator of an identity credential <bcp14>MUST</bcp14> make sure that they are using the correct issuer credential to verify the identity credential and that the issuer is trusted to issue tokens for the defined trust domain.</t>
        </section>
        <section anchor="workload-identity-credentials">
          <name>Workload Identity Credentials</name>
          <t>An agent provisions the identity credentials to the workload. These credentials are represented in 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 are 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 instance of running software executing 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 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 on another. Workload three can use the authenticated identity of workload 1 to determine which APIs workload 1 is authorized 2 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>A workload needs to obtain its identifier and associated credentials early in its lifecycle. It also needs to learn what trust domain it belongs to. The identifier, trust domain and credentials forms the basis from which further credentials, attributes, identifiers and security context are derived.</t>
          <t>Identifier and credential bootstrapping often utilizes attribute information
provisioned through mechanisms specific to hosting platforms and
orchestration services. This initial bootstrapping information is
used to issue specific credentials for a workload. This
process may use attestation to ensure the workload receives the
correct identity credentials. An example of a bootstrapping process
follows.</t>
          <t><xref target="arch-fig"/> provides an example of 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 credential may also be injected into workloads using operating system environment variables.</t>
            </li>
          </ul>
        </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 and their authenticated identities, including access tokens or client certificates used.</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="service-authorization">
          <name>Service Authorization</name>
          <t>After authentication of the peer, a workload can perform authorization by verifying that the authenticated identity has the appropriate permissions to access the requested resources and perform required actions. This process involves evaluating the security context described previously. The workload validates the security context, and checks the validity of permissions against its security policies to ensure that only authorized actions are allowed.</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="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-oauth-transaction-tokens">
          <front>
            <title>Transaction Tokens</title>
            <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale">
              <organization>SGNL</organization>
            </author>
            <author fullname="George Fletcher" initials="G." surname="Fletcher">
              <organization>Practical Identity LLC</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</organization>
            </author>
            <date day="28" month="July" year="2025"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) are designed to maintain and
   propagate user identity and authorization context across workloads
   within a trusted domain during the processing of external
   programmatic requests, such as API calls.  They ensure that this
   context is preserved throughout the call chain, even when new
   transactions are initiated internally, thereby enhancing security and
   consistency in complex, multi-service architectures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-06"/>
        </reference>
        <reference anchor="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="4" month="July" 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-06"/>
        </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>SPIRL</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</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="12" month="September" year="2025"/>
            <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-06"/>
        </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="7" month="July" 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-02"/>
        </reference>
      </references>
    </references>
    <?line 588?>

<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>
  </back>
  <!-- ##markdown-source:
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
soE1ioduRYY2llFnblk3vhGlcO9Ezy4eyVx0oynOBbZXDP4xDfMximSViFaw
KyQNdNpFkmKyQ7stu1yS3Z0EFmRrycDiOZCTDhl7crslauwKLFbuDNVn9Npq
BW2PWyWnqnd0ZQ6S2UNzcqYRfCsnJid7ViqwWROhCWOB5tRTSw+NZ9DBlY2N
Zb1hidDewCXWsW1vGmFjFJgZDSMcFtkKDDC59i5id6VBb+PHyW17reWH6E8W
Hr0pOYDDTx4nrichprqjza4DusMnjqfWs6fcj6Od43ZRZM7DHZ+2FnniRUtD
nqJEOTamivQHbTdh5DZO1W7pfWwbeDPxQyf6MOl15hE5Xuim6hAjkvNvbvFr
emMniXrVGg2IYnuS6PpPCMo6xDAfjEZnxaYoSdjwRi93UdS7lsSh/v0YZkUc
ifQgOW7YC14v4wMc7uPWD8KGlcNuLEp2sQgDE2kO/UZmDpXJNkh9edsfqDqc
eLueHbNGyA8fhAdDrLDJ0dmY+Hs37Z0oImS/eSGwKuJUPgDllkTzYGoRw8gk
HDhLIBgYGlJk8EpJcYPsIZ1c0wjs1QNil20SYyeafqcShukGFmXM871MFqFx
5Glnbw22bT62keEpz7jWsHkQMjtgyhwyYn4onJcCeNeZKnvjU7NI0kbfLHnN
+NRk02vDmlqif9/QL7rMt2gj9BnslR86jqvfDICU+IMx0nzAOOY/axy/Hd7f
2++LNWfe7h+1YWwksenytm3EZqHYvJENWdrupvNhQx+aENkmaUySnx2nRgoY
8efHyRCvuA3WvO4KHVnzI3w0zMJ/ZznlVTyXo/zYmBppT3vjmA+OI1mfmD5u
uR4DbZz9jL1N23C/QhvNr9DGxa/QRvErtDH/169p3wz24W30TV4/p41ffr/8
V2rjQ01Ud0eJVUrjYcUupVfSbS1Tp2gsqPacyqMnNYrlhJRNxfgPx0YPRKob
t7IkGEyi4EVbDtkaimARM7ohykZluaOQYKfCZ73NVz4dwsDAYp1SJj2igHnR
2mx8myLGuaSeIvvJDFFlxgNCxFmQe/0IKf4V8WCK32G8VsahSO15pO7mC3Jb
1MEqgOgHJBrLABRO8W9kE0ln7MXdgXxMvHugG8x3jJmDUqkjlMC6xAOWyAJt
P//dhKPn2bbMC8krFbkyjg/6OIZYd9QIyWpD+XU0dhjE6LKu3+22siWa3Qae
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

-->

</rfc>
