<?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.24 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schwenkschuster-wimse-credential-exchange-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="WIMSE Credential Exchange">WIMSE Credential Exchange</title>
    <seriesInfo name="Internet-Draft" value="draft-schwenkschuster-wimse-credential-exchange-01"/>
    <author fullname="Arndt Schwenkschuster" role="editor">
      <organization>SPIRL</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>AREA</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <keyword>credential</keyword>
    <keyword>exchange</keyword>
    <abstract>
      <?line 51?>

<t>WIMSE defines Workload Identity and its representation through credentials. Typically, a credential is provisioned to the workload, allowing it to represent itself. The credential format is usually chosen by the platform. Common formats are JSON Web Tokens or X.509 certificates. However, workloads often encounter situations where a different identity or credential is required.</t>
      <t>This document describes various situations where a workload requires another credential. It also outlines different ways this can be acchieved and compares them.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-wimse.github.io/draft-ietf-wimse-s2s-protocol/draft-ietf-wimse-s2s-protocol.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schwenkschuster-wimse-credential-exchange/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Workload Identity in Multi System Environments Working Group mailing list (<eref target="mailto:wimse@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/wimse/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/arndt-s"/>.</t>
    </note>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Workload Identity credentials come in many forms. JSON Web Tokens are popular but also X.509 certificates are commonly used. When a workload is provisioned it can be assumed that it gets all of the following</t>
      <ul spacing="normal">
        <li>
          <t>an identity in the form of an identifier.</t>
        </li>
        <li>
          <t>one or multiple credentials that allow the workload to represent itself (as that identity). Multiple credentials are often different types but representing the same identity.</t>
        </li>
        <li>
          <t>an indication of trust domain. (TODO not sure)</t>
        </li>
      </ul>
      <t>Identity, credential and trust domain enable the workload to interact within its environment, communicate to sibling workloads (same trust domain), access APIs inside that trust domain, or provide an API itself.</t>
    </section>
    <section anchor="rationale">
      <name>Rationale</name>
      <t>There are many reasons for a credential exchange. The following list highlights the most common reasons, and is not complete.</t>
      <section anchor="change-in-format">
        <name>Change in format</name>
        <t>Workloads may require a different format representing the same identity in the same trust domain. Some concrete examples are:</t>
        <ul spacing="normal">
          <li>
            <t>The initial credential was an X.509 certificate but infrastructure requires application-level authentication such as JWT or Workload Identity Tokens as defined in (TODO).</t>
          </li>
          <li>
            <t>The initial credential was a JWT bound to a key to be presented along with proof of possession, but the peer does not support it and requires a bearer credential.</t>
          </li>
        </ul>
        <t>"Credential format" is dificult to define abstractly. Some formats are opaque to the workload and should remain that way. For instance, how an OAuth Bearer token is constructed, and whether it carries claims or not, is not a concern of the workload. That a bearer token is required, however, is known to the workload. So a change in format between a bearer token and an X.509 certificate is certainly a change in format the workload can require. A different encoding of a bearer token, on the other hand, is not and this specification does not address those cases.</t>
      </section>
      <section anchor="change-in-scope">
        <name>Change in scope</name>
        <t>A credential in the same format may represent the same identity, scoped differently. Examples are:</t>
        <ul spacing="normal">
          <li>
            <t>A JWT credential with an <tt>audience</tt> set to interact with the Workload platform, but access to other workloads are required. The workload is in need of JWTs with different, dedicated audiences.</t>
          </li>
          <li>
            <t>An X.509 credential is constrained to a certain key usage, but the workload requires difference usage bits set. For instance, the existing certificate allows for <tt>digitalSignature</tt> but <tt>keyEncipherment</tt> or <tt>dataEncipherment</tt> is required.</t>
          </li>
        </ul>
        <t>Generally, scope should already be present and configured approperately with the workload platform only issuing narrowly scoped credentials to the workload.</t>
        <t>In some situation the platform may only support the provisioning of a single credential and not support scoping it. If those cannot be requested by the platform itself an exchange may be necessary.</t>
      </section>
      <section anchor="change-in-identity">
        <name>Change in identity</name>
        <t>A workload may be known under multiple identities. For example:</t>
        <ul spacing="normal">
          <li>
            <t>A workload identity representing an exact physical instance may be eligable for a workload identity representing a logical unit that consists of many phyiscal instances. Another example is a workload running in a specific region being eligable for a more broader, geographically scoped identity.</t>
          </li>
          <li>
            <t>A workload that can act on behalf of other workloads. These workloads often are part of infrastructure such as API gateways, proxies, or service meshes in container environments.</t>
          </li>
        </ul>
      </section>
      <section anchor="change-in-trust-domain">
        <name>Change in trust domain</name>
        <t>A provisioned workload identity is often part of a trust domain that is coupled to infrastructure or deployment. Workloads often interact with other workloads or access outside resources located in other trust domains or reside in different trust domains. This requires the client workload to retrieve an identity of the other trust domain. Examples here include:</t>
        <ul spacing="normal">
          <li>
            <t>Federation (a workload identity federates to a identity in a different trust domain). In existing workload identity environment OAuth2 with Token Exchange (TODO) and Assertion framework (TODO) are popular.</t>
          </li>
          <li>
            <t>A workload requires a credential of "higher trust" to interact with other workloads. This "higher trust" is facilitated by another trust domain. For instance, a workload may require a WebPKI certificate to offer a service to clients with "default" trust stores.</t>
          </li>
        </ul>
      </section>
      <section anchor="change-in-lifetime">
        <name>Change in lifetime</name>
        <t>Credentials often come with time restrictions, or usage may be restricted based on token lifetime. For instance:</t>
        <ul spacing="normal">
          <li>
            <t>A resource denies the long-lived workload credential based on a maximum lifetime policy.</t>
          </li>
          <li>
            <t>An initial provisioned credentials has expired and renewal is unsupported.</t>
          </li>
          <li>
            <t>A credential with shorter lifetime would reduce replay risk.</t>
          </li>
        </ul>
      </section>
      <section anchor="missing-provisioning-support">
        <name>Missing provisioning support</name>
        <t>A workload platform may not support the provisioning of credentials required by the workload. Technically, any of these would likely fall under the reasons above, but it's a very common reason and often falls into multiple categories. As an example:</t>
        <ul spacing="normal">
          <li>
            <t>Workload platform provisions identity and credential in the form of a simple signed document that carries the attributes attested by the platform, but gives not access in any way.</t>
          </li>
        </ul>
      </section>
      <section anchor="combinations">
        <name>Combinations</name>
        <t>Reasons for exchange credentials are often not binary. A change in trust domain is effectively a change in identity as well. A change in format can require a change in trust domain, because formats come with different trust structures and security promises. For example, a trust domain issuing JSON Web Tokens may not be able to issue WebPKI certificates.</t>
      </section>
    </section>
    <section anchor="mechanisms">
      <name>Mechanisms</name>
      <t>Workloads have multiple options to aquire credentials in the way they are required. The following terms divides them into three primary mechanisms:</t>
      <dl newline="true">
        <dt>Initial provisioning</dt>
        <dd>
          <t>Credentials are issued during workload creation. The workload is "born" with them. These credentials are fixed and pre-defined, often by configuration. The workload cannot influence their shape during runtime. Configuration may be changed to adjust initial provisioning.</t>
        </dd>
        <dt>On-demand provisioning</dt>
        <dd>
          <t>Workloads are able to obtain credentials on-demand. Parameters allow the workload to specify exactly the required format, scope, identity, lifetime, and other customization the workload requires. No authentication is necessary to request on-demand credentials. Workloads may choose to request additional on-demand credentials based on its needs. (TODO may emphasize that this is unauthenticated here)</t>
        </dd>
        <dt>Credential exchange</dt>
        <dd>
          <t>Workloads use a provisioned credential (on-demand or initial) to authenticate and authorize a request of a different credential. Based on parameters, the workload can specify the exact attributes of the credential it requires. This is also on-demand, however, the significant difference here is that this is an <strong>authenticated</strong> action, compared to on-demand provisioning, which is <strong>unauthenticated.</strong> Workloads may leverage credential exchange to obtain credentials based on its needs.</t>
        </dd>
      </dl>
      <t>Based on the exchange need, some mechanisms are more feasible and better suited than others. The following table gives some guidance based on the identified need. The security considerations below also highlight some additional considerations, particularly <xref target="use-on-demand-provisioning"/>.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Need</th>
            <th align="left">Preferred mechanism</th>
            <th align="left">Other options (in order)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Change in trust domain</td>
            <td align="left">Credential exchange</td>
            <td align="left">None</td>
          </tr>
          <tr>
            <td align="left">Change in identity</td>
            <td align="left">On-demand provisioning</td>
            <td align="left">1) Initial provisioning<br/>2) Credential exchange</td>
          </tr>
          <tr>
            <td align="left">Change in scope</td>
            <td align="left">On-demand provisioning</td>
            <td align="left">1) Initial provisioning<br/>2) Credential exchange</td>
          </tr>
          <tr>
            <td align="left">Change in format</td>
            <td align="left">On-demand provisioning</td>
            <td align="left">1) Initial provisioning<br/>2) Credential exchange</td>
          </tr>
          <tr>
            <td align="left">Change in lifetime</td>
            <td align="left">On-demand provisioning</td>
            <td align="left">1) Initial provisioning<br/>2) Credential exchange (only decrease, see <xref target="exchange-to-renew"/>)</td>
          </tr>
          <tr>
            <td align="left">Missing platform support</td>
            <td align="left">Credential exchange</td>
            <td align="left">None</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="exchange-patterns">
      <name>Exchange patterns</name>
      <section anchor="format-specific-exchange">
        <name>Format-specific exchange</name>
        <t>The existing trust and identity framework often consist of a protocol or framework to exchange credentials. Leveraging this makes use of existing adoption and specific guidelines.</t>
        <t>The following bullets give an overview of the existing patterns and when to use them based on the needs given above:</t>
        <ul spacing="normal">
          <li>
            <t>OAuth Token Exchange <xref target="RFC8693"/> is:
            </t>
            <ul spacing="normal">
              <li>
                <t>meant for a change in scope.</t>
              </li>
              <li>
                <t>meant for a change in identity.</t>
              </li>
              <li>
                <t>to a certain extend meant for a change in format (limited).</t>
              </li>
              <li>
                <t>NOT meant for a change in trust domain.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>OAuth Assertion Framework <xref target="RFC7521"/> is:
            </t>
            <ul spacing="normal">
              <li>
                <t>meant for a change in trust domain. As a result of the change in trust domain, a change in identity, scope and, potentially, format is unavoidable but not the primary use case.</t>
              </li>
              <li>
                <t>NOT meant for exchanges within a trust domain.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="on-behalf-of-exchange">
        <name>On-behalf-of exchange</name>
        <t>Workload environments can be highly dynamic and connected with a high variety of resources protected by different identity frameworks and formats. A format-agnostic component that exchanges credentials on behalf of the workload may be desired to remain control of credential issuance. For instance, it might enforce policy, collect audit trails, or aid management.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="808" viewBox="0 0 808 240" 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,160 L 8,224" fill="none" stroke="black"/>
              <path d="M 72,96 L 72,112" fill="none" stroke="black"/>
              <path d="M 72,144 L 72,160" fill="none" stroke="black"/>
              <path d="M 152,32 L 152,96" fill="none" stroke="black"/>
              <path d="M 216,160 L 216,224" fill="none" stroke="black"/>
              <path d="M 280,32 L 280,96" fill="none" stroke="black"/>
              <path d="M 368,96 L 368,128" fill="none" stroke="black"/>
              <path d="M 368,160 L 368,192" fill="none" stroke="black"/>
              <path d="M 480,32 L 480,96" fill="none" stroke="black"/>
              <path d="M 624,32 L 624,96" fill="none" stroke="black"/>
              <path d="M 800,32 L 800,96" fill="none" stroke="black"/>
              <path d="M 8,32 L 152,32" fill="none" stroke="black"/>
              <path d="M 280,32 L 480,32" fill="none" stroke="black"/>
              <path d="M 624,32 L 800,32" fill="none" stroke="black"/>
              <path d="M 152,64 L 272,64" fill="none" stroke="black"/>
              <path d="M 480,64 L 616,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 64,96" fill="none" stroke="black"/>
              <path d="M 80,96 L 152,96" fill="none" stroke="black"/>
              <path d="M 280,96 L 480,96" fill="none" stroke="black"/>
              <path d="M 624,96 L 800,96" fill="none" stroke="black"/>
              <path d="M 8,160 L 64,160" fill="none" stroke="black"/>
              <path d="M 80,160 L 216,160" fill="none" stroke="black"/>
              <path d="M 224,192 L 368,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 216,224" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="624,64 612,58.4 612,69.6" fill="black" transform="rotate(0,616,64)"/>
              <polygon class="arrowhead" points="280,64 268,58.4 268,69.6" fill="black" transform="rotate(0,272,64)"/>
              <polygon class="arrowhead" points="232,192 220,186.4 220,197.6" fill="black" transform="rotate(180,224,192)"/>
              <polygon class="arrowhead" points="80,160 68,154.4 68,165.6" fill="black" transform="rotate(90,72,160)"/>
              <polygon class="arrowhead" points="80,96 68,90.4 68,101.6" fill="black" transform="rotate(270,72,96)"/>
              <g class="text">
                <text x="200" y="36">2)request</text>
                <text x="536" y="36">4)request</text>
                <text x="220" y="52">credential</text>
                <text x="556" y="52">credential</text>
                <text x="60" y="68">Workload</text>
                <text x="340" y="68">Credential</text>
                <text x="424" y="68">Exchanger</text>
                <text x="684" y="68">Credential</text>
                <text x="756" y="68">issuer</text>
                <text x="28" y="132">1)</text>
                <text x="92" y="132">Provisioning</text>
                <text x="324" y="148">3)</text>
                <text x="372" y="148">validate</text>
                <text x="60" y="196">Workload</text>
                <text x="132" y="196">Platform</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+-----------------+ 2)request     +------------------------+  4)request      +---------------------+
|                 |   credential  |                        |    credential   |                     |
|  Workload       +-------------->|  Credential Exchanger  +---------------->|  Credential issuer  |
|                 |               |                        |                 |                     |
+-------^---------+               +----------+-------------+                 +---------------------+
        |                                    |
  1) Provisioning                            |
        |                              3) validate
+-------v-----------------+                  |
|                         |                  |
|  Workload Platform      |<-----------------+
|                         |
+-------------------------+
]]></artwork>
        </artset>
        <ol spacing="normal" type="1"><li>
            <t>The Workload Platform issues credential to the workload. This can be either "initial", during workload startup or "on-demand", once the workload requires it. See <xref target="mechanisms"/> for more details.</t>
          </li>
          <li>
            <t>The Workload requests a new credential from the Credential Exchanger by specifying at least the issuer, format, and identity. Potentially, it also specifies lifetime and scope. It authenticates itself with the credential it has received from the Workload Platform.</t>
          </li>
          <li>
            <t>The Credential Exchanger validates the credential it receives. For simplicity, the diagram shows this as a interaction with the Workload Platform, but other means of validations are also possible.</t>
          </li>
          <li>
            <t>The Credential Exchanger requests a credential from the Credential Issuer. Also, for simplicity this step shows the interaction with a third party. However, this may also be the Workload Platform itself. Authentication and other step details depend on the scenario, format, and trust framework.</t>
          </li>
        </ol>
        <t>The author believes that a specific protocol that fits all credential formats and trust frameworks is infeasable while remaining(maintaining?) the existing security promises. He rather believes that a profile for each scenario is the best way forward and welcomes everyone to profile this specificiation for their concrete use cases. As a general guidance it is recommended to:</t>
        <ul spacing="normal">
          <li>
            <t>narrowly scope the scenarios, instead of building a one-fits-all exchange for a specific format.</t>
          </li>
          <li>
            <t>decouple authentication and access control from the actual exchange as best as possible. For example, a credential of one profile should be allowed as a means of authentication to exchange to a credential of a different profile, whether or not the profiles are aware of each other.</t>
          </li>
          <li>
            <t>allow the workload to specify at least issuer, identity and format when requesting a credential. Lifetime and scope could be optionally specified, based on the need and support for it.</t>
          </li>
          <li>
            <t>keep multi-stepped issuance in mind. Some formats and trust frameworks may require the workload to perform challenges, like responding to a nonce or providing a signature.</t>
          </li>
        </ul>
        <t>The "Credential Exchanger" shown in the figure <bcp14>MAY</bcp14> be the Workload Platform itself that offers this capability. It <bcp14>MAY</bcp14> be offered during a "re-provisioning" without authentication.</t>
      </section>
    </section>
    <section anchor="consideration">
      <name>Consideration</name>
      <section anchor="credential-exchange-cannot-increase-trust">
        <name>Credential exchange cannot increase trust</name>
        <t>A credential exchange is an authenticated method to retrieve credential(s). Thus, the issued credential cannot be given a higher trust level than the credential that was used to authenticate the request. This is particularly relevant when a required credential, due to its format and framework, is of a higher trust than the one that was used to authenticate the request. This includes exchanging credentials without proof of key possession for credentials that do carry proof of possession.</t>
        <t>These situations are not recommended. Workloads <bcp14>SHOULD</bcp14> be provisioned with the credential of the highest trust and only retrieve less-trusted credentials via credential exchange.</t>
        <t>Alternatively, the authentication request should be enriched with additional identification that increases the level of authentication. For example, along with authentication, the workload would provide additional proof of platform attestation.</t>
      </section>
      <section anchor="credential-exchange-cannot-replace-on-demand-or-initial-provisioning">
        <name>Credential exchange cannot replace on-demand or initial provisioning</name>
        <t>Because credential exchange is authenticated it cannot replace provisioning. Without an initial or on-demand requested credential a workload cannot facilitate credential exchange, as there is no proof the workload is eligible for the requested credential.</t>
      </section>
      <section anchor="use-on-demand-provisioning">
        <name>Initial provisioning comes with over-provisioning risk</name>
        <t>Provisioning credentials preemptively risks being exposed to overprovisioning credentials that are not required. For example, with initial provisioning, every workload is provisioned with a default credential, even though some don't require it. This unnecessarily increases the risk of those credentials being exposed.</t>
        <t>On-demand provisioning, on the other hand, only issues credential when requested and mitigates this. They are exactly in the scope, format, identity and lifetime that is requires. This can significantly decrease the number of unnecessarily issued and provisioned credentials.</t>
      </section>
      <section anchor="exchange-to-renew">
        <name>Expanding credential lifetime</name>
        <t>A change in lifetime of a credential can be critical if it can be used to effectively keep a credential alive. One example is an issued short-lived bearer credential that can be used to exchange for a new, longer-lived credentials. Thus, it is highly recommended to only use on-demand provisioning to re-request a new credential.</t>
        <t>On the other hand, it is valid to leverage token exchange to request a shorter-lived credential whose lifetime is within the bound of the credential used for authenticating the request.</t>
      </section>
      <section anchor="involvement-of-human-transactional-or-other-contextual-credentials">
        <name>Involvement of human, transactional or other contextual credentials</name>
        <t>Although this document focuses heavily on workload identity, workloads often deal with other credentials carrying caller, transactional, or contextual information. This could include an access token of the caller used to authorize the request. or an OAuth Transaction Token that was part of the request coming from another workload carrying transactional data.</t>
        <t>These credentials and their formats, lifetime, scope, etc. are not covered by this document. However, they may be used as parameters or authentication to request additional credentials that combine multiple identities into a single credential.</t>
        <t>Some concrete examples are:</t>
        <ul spacing="normal">
          <li>
            <t>An access token and a workload identity credentials are used to request an OAuth Transaction Token.</t>
          </li>
          <li>
            <t>An on-behalf-of scenario where a workload identity is used as actor, and a different, contextual credential unrepresentative of the workload is used as a subject in an OAuth Token Exchange.</t>
          </li>
        </ul>
        <t>On-demand provisioning or credential exchange <bcp14>MAY</bcp14> be used to issue any of those contextual credentials to the workload. Existing contextual credentials <bcp14>MAY</bcp14> be supplied as parameters. Initial provisioning is not suitable with existing contextual credentials as it does not support parameters. In situations where the workload's identity does not play a role and only the contextual credentials are used as authentication, credential exchange is the preferred mechanism.</t>
      </section>
      <section anchor="offline-attenuation">
        <name>Credential formats supporting offline attenuation</name>
        <t>Some credential formats allow the scope of the credential to be reduced offline, without interaction to an issuing party ("offline attenuation"). In these situations no exchange or on-demand provisioning is required and workloads can "act on their own." Examples of these formats are <xref target="Macaroons"/> or <xref target="Biscuit"/> tokens. The provisioning of a credential that supports offline attenuation is still required in the first place.</t>
      </section>
    </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?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </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="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="Macaroons" target="https://theory.stanford.edu/~ataly/Papers/macaroons.pdf">
          <front>
            <title>Cookies with Contextual Caveats for Decentralized Authorization in the Cloud</title>
            <author initials="A." surname="Birgisson">
              <organization/>
            </author>
            <author initials="J. G." surname="Politz">
              <organization/>
            </author>
            <author initials="U." surname="Erlingsson">
              <organization/>
            </author>
            <author initials="M." surname="Vrable">
              <organization/>
            </author>
            <author initials="M." surname="Lentczner">
              <organization/>
            </author>
            <date year="2014"/>
          </front>
        </reference>
        <reference anchor="Biscuit" target="https://doc.biscuitsec.org/reference/specifications">
          <front>
            <title>Biscuit, a bearer token with offline attenuation and decentralized verification</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 277?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-schwenkschuster-wimse-credential-exchange-01">
        <name>draft-schwenkschuster-wimse-credential-exchange-01</name>
        <ul spacing="normal">
          <li>
            <t>Fix typo that wrongly said OAuth2 assertion flow is not meant for inter-trust domain exchanges (meant was "intra").</t>
          </li>
          <li>
            <t>Rephrased X509 change of scope example to be more clear.</t>
          </li>
          <li>
            <t>Sharpened ways of provisioning, renamed "provisioning" to "initial provisioning" and "re-provisioning" to "on-demand provisioning".</t>
          </li>
          <li>
            <t>Add "Change in lifetime" need.</t>
          </li>
          <li>
            <t>Add considerations for the involvement of contextual, transactional and human credentials</t>
          </li>
          <li>
            <t>Add consideration for credential formats supporting offline-attenuation.</t>
          </li>
          <li>
            <t>Describe "Credential Exchanger" pattern.</t>
          </li>
          <li>
            <t>Clean up for IETF 122.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-schwenkschuster-wimse-credential-exchange-00">
        <name>draft-schwenkschuster-wimse-credential-exchange-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial individual draft &amp; write up.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Big shoutout to the WIMSE token exchange design team (Dean Saxe, Yaroslav Rosomakho, Andrii Deinega, Dmitry Izumskiy, Ken McCracken and George Fletcher) that have done amazing groundlaying work in this area.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
h1ERw4ZPAAA=

-->

</rfc>
