<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gazitt-oauth-authzen-token-exchange-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="AuthZEN Token Exchange Binding">AuthZEN Binding for OAuth 2.0 Token Exchange</title>
    <seriesInfo name="Internet-Draft" value="draft-gazitt-oauth-authzen-token-exchange-00"/>
    <author fullname="Omri Gazitt">
      <organization>Independent</organization>
      <address>
        <email>ogazitt@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="05"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>authorization</keyword>
    <keyword>authzen</keyword>
    <keyword>policy</keyword>
    <keyword>token exchange</keyword>
    <keyword>delegation</keyword>
    <abstract>
      <?line 61?>

<t>OAuth 2.0 Token Exchange (RFC 8693) defines the moment at which an
authorization server decides whether one party may obtain a token to act as,
or on behalf of, another. It states that the decision is governed by policy,
and does not define that policy. The specifications layered on top of it -
identity chaining, identity assertion authorization grants, and transaction
tokens - inherit the same seam.</t>
      <t>This document binds those flows to the AuthZEN profile for OAuth 2.0 token
issuance. It specifies how a token exchange request is derived into AuthZEN
evaluation requests, how the authority of the requesting party is expressed
as a decision distinct from the authority being delegated, and what each of
the token types layered on token exchange contributes to that mapping.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-gazitt-oauth-authzen-token-exchange/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ogazitt/oauth-authzen"/>.</t>
    </note>
  </front>
  <middle>
    <?line 76?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC8693"/> generalizes a family of operations in which a party presents one
token and asks for another. The specification is precise about the inputs -
<tt>subject_token</tt>, <tt>actor_token</tt>, <tt>audience</tt>, <tt>resource</tt>, <tt>scope</tt>,
<tt>requested_token_type</tt> - and about the shape of the result, including the
<tt>act</tt> claim that records a delegation chain and the <tt>may_act</tt> claim that
authorizes one party to become the actor for another.</t>
      <t>It is deliberately silent about the decision. Section 2.2.1 conditions a
successful response on the request meeting "all policy and other criteria of
the authorization server", and defines neither the policy nor the criteria.</t>
      <t><xref target="ISSUANCE"/> defines a framework for externalizing that class of decision to
a Policy Decision Point (PDP) using <xref target="AUTHZEN"/>, casting the authorization
server (AS) as a Policy Enforcement Point. That document is directly
implementable for grants whose request names a single party and a single
target. Token exchange names two parties, and several of its members name two
levels of target; supplying that structure is what this document does. It
covers:</t>
      <ul spacing="normal">
        <li>
          <t>token exchange as defined in <xref target="RFC8693"/>;</t>
        </li>
        <li>
          <t>identity chaining across trust domains
(<xref target="I-D.ietf-oauth-identity-chaining"/>);</t>
        </li>
        <li>
          <t>identity assertion authorization grants
(<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>), referred to here as
ID-JAG;</t>
        </li>
        <li>
          <t>transaction tokens (<xref target="I-D.ietf-oauth-transaction-tokens"/>), referred to
here as Txn-Tokens.</t>
        </li>
      </ul>
      <t>These are treated together because they are one grant with four sets of
parameters. Each names a subject, a requesting party, a target, and a set of
privileges, and each arrives at the same undefined decision.</t>
      <section anchor="what-this-document-adds">
        <name>What This Document Adds</name>
        <t>The framework maps a generic issuance request onto AuthZEN's mandatory
five-tuple. Token exchange adds one structural element the framework does
not have: <strong>a second party</strong>. Every other issuance flow decides what a
subject may obtain. A token exchange decides what a <em>requesting party</em> may
obtain <em>as, or on behalf of,</em> a subject.</t>
        <t>That second party is not decoration. <xref target="RFC8693"/> introduces <tt>may_act</tt>
precisely because the authority to become another party's actor is a
distinct privilege, and Section 4.4 identifies the party whose authority is
in question as "the client (or party identified in the <tt>actor_token</tt>)".
This document's central normative content is that this second privilege is
evaluated as its own tuple, so that any conforming PDP - including a
relationship-based engine in the style of <xref target="ZANZIBAR"/>, which reads it
directly as an edge between two named entities - can adjudicate it
(<xref target="actor-gate"/>).</t>
        <t>The remainder is the derivation of the framework's inputs from each
specification's parameters, and the small number of invariants that each
specification places beyond a PDP's reach.</t>
      </section>
      <section anchor="requirements-language">
        <name>Requirements Language</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>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document uses the terms of <xref target="RFC6749"/>, <xref target="RFC8693"/>, <xref target="AUTHZEN"/>, and
<xref target="ISSUANCE"/>. In particular, <em>gate tuple</em> and <em>scope tuple</em> are used as
defined in <xref target="ISSUANCE"/>.</t>
      <dl>
        <dt>Exchange subject:</dt>
        <dd>
          <t>The party the issued token will represent: the party whose identifier the
AS intends to place in the issued token's subject claim. Derived in
<xref target="subject"/>.</t>
        </dd>
        <dt>Requesting party:</dt>
        <dd>
          <t>The party asking for the token, on whose own authority the exchange
depends. This is the party identified by <tt>actor_token</tt> where one is
present, and the authenticated client otherwise. Derived in
<xref target="requesting-party"/>.</t>
        </dd>
        <dt>Issuance target:</dt>
        <dd>
          <t>As in <xref target="ISSUANCE"/>: the audience of the access being granted.</t>
        </dd>
      </dl>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>This binding applies to a request at the token endpoint whose <tt>grant_type</tt>
is <tt>urn:ietf:params:oauth:grant-type:token-exchange</tt>, and to the assertion
grants used to redeem an ID-JAG (<xref target="id-jag"/>).</t>
      <t>The AS performs the evaluation described here only after it has completed
every validation the underlying specification requires: authenticating the
client, validating the <tt>subject_token</tt> and any <tt>actor_token</tt> and confirming
their issuers are trusted, and verifying any proof of possession. A permit
from a PDP does not substitute for any of these. This restates
<xref target="ISSUANCE"/>'s architecture and is repeated because token exchange is the
flow in which the temptation to conflate the two is greatest: the PDP is
being asked whether a delegation is <em>permitted</em>, never whether the presented
tokens are <em>valid</em>.</t>
    </section>
    <section anchor="forming-the-evaluation-request">
      <name>Forming the Evaluation Request</name>
      <section anchor="subject">
        <name>Subject</name>
        <t>The exchange subject is derived from <tt>subject_token</tt>, interpreted according
to <tt>subject_token_type</tt>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value of subject_token_type</th>
              <th align="left">Exchange subject</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>access_token</tt>, <tt>id_token</tt>, <tt>jwt</tt></td>
              <td align="left">The subject of the presented token</td>
            </tr>
            <tr>
              <td align="left">
                <tt>refresh_token</tt></td>
              <td align="left">The subject the refresh token was issued for</td>
            </tr>
            <tr>
              <td align="left">
                <tt>saml1</tt>, <tt>saml2</tt></td>
              <td align="left">The subject of the assertion</td>
            </tr>
            <tr>
              <td align="left">
                <tt>self_signed</tt>, <tt>unsigned_json</tt></td>
              <td align="left">See <xref target="txn-tokens"/></td>
            </tr>
          </tbody>
        </table>
        <t><tt>subject.type</tt> <bcp14>MUST</bcp14> be <tt>user</tt> where the exchange subject is a natural person
and <tt>workload</tt> where it is a non-human software identity, per the registry
established by <xref target="ISSUANCE"/>.</t>
        <t><tt>subject.id</tt> <bcp14>MUST</bcp14> be the identifier the AS intends to place in the issued
token's subject claim, as <xref target="ISSUANCE"/> requires. In token exchange this
ordering constraint has teeth, because the subject identifier frequently
changes during the exchange: an AS receiving a token from a peer trust
domain resolves the foreign subject to a local account, and an AS issuing
pairwise identifiers computes one per audience. Any such resolution <bcp14>MUST</bcp14> be
performed <strong>before</strong> the evaluation request is constructed.</t>
        <t>An AS that evaluated against the incoming identifier and then issued a token
bearing a resolved one would obtain a decision about a subject that does not
appear in the token it mints.</t>
      </section>
      <section anchor="requesting-party">
        <name>Requesting Party</name>
        <t>The requesting party is:</t>
        <ol spacing="normal" type="1"><li>
            <t>the party identified by <tt>actor_token</tt>, interpreted according to
<tt>actor_token_type</tt>, where an <tt>actor_token</tt> is present; otherwise</t>
          </li>
          <li>
            <t>the authenticated client.</t>
          </li>
        </ol>
        <t><tt>subject.type</tt> for the requesting party <bcp14>MUST</bcp14> be <tt>client</tt> where it is an
OAuth client identified by a client identifier, and <tt>workload</tt> where it is a
software identity presenting a credential such as an X.509 certificate
(<xref target="RFC8705"/>) or a workload identity document.</t>
        <t>The requesting party is derived in both delegation and impersonation. It is
in the impersonation case - where the issued token carries no <tt>act</tt> claim
and the requesting party is therefore invisible in the result - that
evaluating its authority matters most, because nothing downstream can
recover it.</t>
      </section>
      <section anchor="actions">
        <name>Actions</name>
        <t>A token exchange request produces gate tuples and scope tuples as defined in
<xref target="ISSUANCE"/>, which requires a gate tuple on every request. This binding
produces <strong>two</strong>, because a token exchange has two parties whose authority
is in question.</t>
        <t>Both carry the same <tt>action.name</tt>, of the form
<tt>issue:&lt;token-type&gt;:token_exchange</tt>, where the token type short name is the
one registered for the value of <tt>requested_token_type</tt> (<xref target="iana-actions"/>).
The grant segment is <tt>token_exchange</tt> throughout, since that is the grant
this binding applies to; it is what distinguishes these tuples from those a
direct request by the same party for the same target would produce.</t>
        <t>Where <tt>requested_token_type</tt> is absent, <xref target="RFC8693"/> directs the AS to its
default, and the short name for that default type is used.</t>
        <section anchor="subject-gate-tuple">
          <name>Subject Gate Tuple</name>
          <t>The AS <bcp14>MUST</bcp14> include a gate tuple whose subject is the exchange subject.</t>
        </section>
        <section anchor="actor-gate">
          <name>Requesting Party Gate Tuple</name>
          <t>The AS <bcp14>MUST</bcp14> include a second gate tuple whose subject is the requesting
party (<xref target="requesting-party"/>), with the same <tt>action.name</tt> and the same
resource as the subject gate tuple.</t>
          <t>This tuple is the interoperable expression of the question <xref target="RFC8693"/>
Section 4.4 poses: whether the client, or the party named in the
<tt>actor_token</tt>, is authorized to engage in the requested delegation or
impersonation. Expressing it as a five-tuple rather than as a property of
the subject's tuple is what puts it within reach of any conforming PDP: a
relationship-based engine adjudicates it directly, as the relation between a
named subject and a named object, without having to be told how to project a
property bag into one.</t>
          <t>The two gate tuples ask different questions and both <bcp14>MUST</bcp14> be permitted:</t>
          <ul spacing="normal">
            <li>
              <t>the subject gate asks whether a token of this kind may exist for this
subject and this target at all;</t>
            </li>
            <li>
              <t>the requesting party gate asks whether this party may be the one to obtain
it.</t>
            </li>
          </ul>
          <t>Where the requesting party and the exchange subject are the same entity -
a client exchanging a token it obtained for itself - the two gate tuples are
identical, and the AS <bcp14>MAY</bcp14> include only one.</t>
        </section>
        <section anchor="mayact-is-not-a-substitute">
          <name><tt>may_act</tt> Is Not a Substitute</name>
          <t>Where the <tt>subject_token</tt> carries a <tt>may_act</tt> claim, the AS <bcp14>MUST</bcp14> convey it
as advisory context (<xref target="context"/>) and <bcp14>MUST NOT</bcp14> treat its presence as
satisfying the requesting party gate tuple, nor its absence as denying it.</t>
          <t><tt>may_act</tt> is an assertion made by the issuer of the subject token at the
time that token was minted. The gate tuple is a decision rendered by policy
at the time of the exchange. Substituting the first for the second would
reintroduce, one layer down, exactly the staleness that consulting a PDP at
issuance exists to address. An ABAC-class PDP is free to consume <tt>may_act</tt>
from context and require the requesting party to appear in it; that is a
policy choice made at the PDP, which is where it belongs.</t>
        </section>
        <section anchor="scope-tuples">
          <name>Scope Tuples</name>
          <t>Scope tuples are formed as in <xref target="ISSUANCE"/>, one per requested scope value,
carried verbatim.</t>
          <t>The subject of every scope tuple <bcp14>MUST</bcp14> be the exchange subject, not the
requesting party. Scope expresses access authority, and in both delegation
and impersonation the access being exercised is the subject's. A requesting
party cannot acquire access the subject does not have by asking for it on
the subject's behalf; its own privilege is the right to act as the subject
at all, which the gate tuple decides.</t>
          <t><xref target="txn-tokens"/> defines an additional requirement for Txn-Tokens, whose
governing specification makes the requesting workload's authority
scope-dependent.</t>
        </section>
      </section>
      <section anchor="resource">
        <name>Resource</name>
        <t><tt>resource.type</tt> <bcp14>MUST</bcp14> be <tt>audience</tt> and <tt>resource.id</tt> <bcp14>MUST</bcp14> be the issuance
target, as in <xref target="ISSUANCE"/>. Where the request carries an <tt>audience</tt>
parameter, or a <tt>resource</tt> parameter in the sense of <xref target="RFC8707"/>, that value
determines the issuance target.</t>
        <t>Where the request names more than one target, the AS <bcp14>MUST</bcp14> fan the tuples out
across targets: each gate tuple and each scope tuple is evaluated once per
named target.</t>
        <section anchor="two-level">
          <name>Two-Level Evaluation for Chained Grants</name>
          <t>Some members of this family issue an artifact that is consumed by one party
in order to obtain access at another. An ID-JAG is presented to a peer
authorization server, but the access it describes is at a resource behind
that server. The artifact's own audience and the audience of the access
being granted are different values, and both are decision-critical: the
first governs delegation into a trust domain, the second governs reach
within it.</t>
          <t>Where the two differ, the AS <bcp14>MUST</bcp14> perform a <strong>two-level evaluation</strong>,
producing tuples at both:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Level 1</strong>, with <tt>resource.id</tt> set to the consumer of the issued artifact
              </t>
              <ul spacing="normal">
                <li>
                  <t>the peer authorization server. Gate tuples appear only at this level.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Level 2</strong>, with <tt>resource.id</tt> set to each resource identifier named by
the request under <xref target="RFC8707"/>. Scope tuples are produced at both levels.</t>
            </li>
          </ul>
          <t>A denial at level 1 is a refusal to delegate into that trust domain and is
fatal. A denial at level 2 narrows the resource or scope set the issued
artifact may name.</t>
          <t>Where the request names no <xref target="RFC8707"/> resource, level 2 does not exist and
the evaluation is single-level.</t>
        </section>
      </section>
      <section anchor="context">
        <name>Context</name>
        <t>In addition to the keys defined by <xref target="ISSUANCE"/>, an AS implementing this
binding <bcp14>SHOULD</bcp14> convey the following in the request <tt>context</tt>. All are
advisory: a PDP <bcp14>MUST</bcp14> be able to render a decision from the five-tuple alone.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Key</th>
              <th align="left">Type</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>subject_token_type</tt></td>
              <td align="left">string</td>
              <td align="left">The <tt>subject_token_type</tt> parameter, verbatim</td>
            </tr>
            <tr>
              <td align="left">
                <tt>actor_token_type</tt></td>
              <td align="left">string</td>
              <td align="left">The <tt>actor_token_type</tt> parameter, if present</td>
            </tr>
            <tr>
              <td align="left">
                <tt>subject_token</tt></td>
              <td align="left">object</td>
              <td align="left">Selected validated claims of the subject token, such as <tt>iss</tt>, <tt>acr</tt>, <tt>amr</tt>, and <tt>auth_time</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>act</tt></td>
              <td align="left">object</td>
              <td align="left">The <tt>act</tt> claim of the subject token, if present, conveying an existing delegation chain</td>
            </tr>
            <tr>
              <td align="left">
                <tt>may_act</tt></td>
              <td align="left">object</td>
              <td align="left">The <tt>may_act</tt> claim of the subject token, if present</td>
            </tr>
            <tr>
              <td align="left">
                <tt>cnf</tt></td>
              <td align="left">object</td>
              <td align="left">The confirmation method of the presented credential, where the exchange is sender-constrained under <xref target="RFC8705"/> or <xref target="RFC9449"/></td>
            </tr>
          </tbody>
        </table>
        <t>Each key has one JSON type, as <xref target="ISSUANCE"/> requires of context keys defined
by a binding.</t>
        <t><tt>requested_token_type</tt> is not among them. It determines the token type
segment of the gate action name, so it is already in the five-tuple, and
repeating it in <tt>context</tt> would give a PDP two places to read the same fact
and a way for them to disagree. <tt>subject_token_type</tt> and <tt>actor_token_type</tt>
describe the credentials presented, not the token requested, and remain
advisory.</t>
        <t>An AS <bcp14>MUST NOT</bcp14> place raw token strings in <tt>context</tt>. Only claims the AS has
already validated are conveyed, and only those a deployment's policies
consume. The subject token may carry claims about a party that has not
authorized their disclosure to the PDP.</t>
      </section>
      <section anchor="composition">
        <name>Batch Composition</name>
        <t>Except where a request names no scopes and the two gate tuples coincide
(<xref target="actor-gate"/>), the AS uses the Access Evaluations API of <xref target="AUTHZEN"/> as
<xref target="ISSUANCE"/> specifies, with <tt>options.evaluations_semantic</tt> set to
<tt>execute_all</tt>.</t>
        <t><xref target="ISSUANCE"/> requires gate tuples to occupy the leading indices of the
<tt>evaluations</tt> array. Here that ordinarily means indices 0 and 1, in the order
given in <xref target="actions"/>: the subject gate first, then the requesting party gate.
Scope tuples follow. The AS <bcp14>MUST</bcp14> fail the request without issuing a token if
either gate is denied.</t>
        <t>Narrowing is the ordinary outcome of a scope denial, and matches
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>, which states that granted
scopes may be a subset of those requested. Where a deployment instead intends
the requested privileges to be granted whole, it does not vary the evaluations
semantic to obtain that: it fails the request when any scope tuple is denied.</t>
        <t>A short-circuiting semantic is not used, because it may return a truncated
<tt>evaluations</tt> array while the aggregation rules of <xref target="ISSUANCE"/> are defined
over the complete set of per-item results. Composing those results is the AS's
work here in any case: <xref target="AUTHZEN"/> selects the semantic per request rather
than per item, so the fatality of a gate denial is enforced by the AS and not
by the PDP. Retaining every per-item result also preserves the record of which
privilege was refused, which is what an operator needs when a request fails.</t>
      </section>
    </section>
    <section anchor="token-type-bindings">
      <name>Token Type Bindings</name>
      <section anchor="access-tokens-and-refresh-tokens">
        <name>Access Tokens and Refresh Tokens</name>
        <t>No additional derivation is required. The mapping of <xref target="ISSUANCE"/> and the
preceding sections is complete for an exchange whose
<tt>requested_token_type</tt> is <tt>urn:ietf:params:oauth:token-type:access_token</tt> or
<tt>urn:ietf:params:oauth:token-type:refresh_token</tt>.</t>
      </section>
      <section anchor="identity-chaining">
        <name>Identity Chaining</name>
        <t><xref target="I-D.ietf-oauth-identity-chaining"/> composes two token endpoint requests:
an exchange at the authorization server of trust domain A yielding an
authorization grant for trust domain B, and the redemption of that grant at
B's authorization server.</t>
        <t>Each leg is an independent issuance decision and is evaluated independently,
against the PDP of the trust domain whose authorization server is
performing it. Neither AS relies on the other's evaluation. This follows
from the specification's own model, in which each domain remains
authoritative for its own policy, and it is what the profile is for: the
first leg decides whether authority may leave domain A, the second decides
what authority it acquires in domain B.</t>
        <t>The first leg is a two-level evaluation under <xref target="two-level"/> where the
request names <xref target="RFC8707"/> resources. The second leg is an ordinary
single-level evaluation whose exchange subject is the local account the
foreign subject resolved to, per <xref target="subject"/>.</t>
        <t><xref target="I-D.ietf-oauth-identity-chaining"/> notes that a request may be denied due
to policy, for instance where a trust relationship is not established. Under
this binding, the existence of the trust relationship remains a
precondition the AS validates; the PDP decides what is permitted across a
relationship that already exists.</t>
      </section>
      <section anchor="id-jag">
        <name>Identity Assertion Authorization Grant</name>
        <t>An ID-JAG is issued by an identity provider's authorization server and
redeemed at an application's authorization server.</t>
        <t><strong>Issuance.</strong> The <tt>requested_token_type</tt> is
<tt>urn:ietf:params:oauth:token-type:id-jag</tt>, so the gate tuples carry
<tt>action.name</tt> of <tt>issue:id_jag:token_exchange</tt>. The issued grant's audience
is the
resource authorization server, while
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/> makes the <xref target="RFC8707"/>
          <tt>resource</tt> subset a policy decision in its own right. The AS <bcp14>MUST</bcp14> therefore
perform a two-level evaluation under <xref target="two-level"/>.</t>
        <t><tt>scope</tt> is <bcp14>OPTIONAL</bcp14> in an ID-JAG request. Where it is absent, the request
produces gate tuples and no scope tuples, and a PDP that wishes to grant a
specific set returns <tt>granted_scope</tt> in the response context, as
<xref target="ISSUANCE"/> defines. This is the case the framework's gate tuple exists
for: without it, a scopeless ID-JAG request would produce no evaluation at
all.</t>
        <t>The specification permits the authorization server to modify, filter, or
omit the requested authorization details. Under this binding those
operations have distinct sources: filtering follows from denied scope
tuples, omission from an entry all of whose tuples are denied, and
modification from the <tt>authorization_details</tt> shaping key of <xref target="ISSUANCE"/>,
subject to that key's structural narrowing checks.</t>
        <t><strong>Redemption.</strong> The application's authorization server presents the ID-JAG
as an assertion grant. This is an ordinary single-level evaluation. Its
exchange subject is the local account produced by the subject resolution
that <xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/> requires, and its
requesting party is the client authenticated at that endpoint - which is a
different party from the client that obtained the grant. Evaluating it is
the point: redemption is where an application's own authorization server
decides what the asserted identity may do locally.</t>
        <t>Where a deployment is multi-tenant, the AS <bcp14>SHOULD</bcp14> convey the tenant
identifier in <tt>context</tt>. A deployment whose decisions genuinely depend on
tenancy <bcp14>SHOULD</bcp14> instead encode the tenant in <tt>resource.id</tt>, so that the
dependency is visible in the five-tuple.</t>
      </section>
      <section anchor="txn-tokens">
        <name>Transaction Tokens</name>
        <t><xref target="I-D.ietf-oauth-transaction-tokens"/> defines a Transaction Token Service
(TTS) that mints short-lived tokens carrying a call chain's originating
context. Its issuance decision is the one this profile addresses, and the
specification states directly that the authorization policy determining
issuance is out of scope for it.</t>
        <t>Txn-Tokens differ from the rest of the family in four ways that the binding
must account for.</t>
        <t><strong>There is no <tt>actor_token</tt>.</strong> The requesting party is the workload that
authenticated to the TTS, typically with a credential under <xref target="RFC8705"/> or
a workload identity document. It is derived under rule 2 of
<xref target="requesting-party"/> with <tt>subject.type</tt> of <tt>workload</tt>.</t>
        <t><strong>The requesting workload's authority is scope-dependent.</strong> The
specification requires the TTS to determine whether the requesting workload
is authorized to obtain a Txn-Token <em>with the requested values</em>, not merely
whether it may obtain one. For <tt>requested_token_type</tt> of
<tt>urn:ietf:params:oauth:token-type:txn_token</tt>, the AS <bcp14>MUST</bcp14> therefore include
scope tuples for the requesting party in addition to those for the exchange
subject. Both sets <bcp14>MUST</bcp14> be permitted for the corresponding scope to be
granted. This is the one place in this document where the requesting party
is evaluated for access authority rather than only for issuance authority,
and it is required because the governing specification asks for it.</t>
        <t><strong>Subject derivation is ambiguous for self-signed and unsigned subject
tokens.</strong> Where <tt>subject_token_type</tt> is
<tt>urn:ietf:params:oauth:token-type:self_signed</tt> or
<tt>urn:ietf:params:oauth:token-type:unsigned_json</tt>, the presented token is not
an authority on identity. The AS <bcp14>MUST</bcp14> determine whether the request is on
behalf of a user, in which case the exchange subject is that user and the
AS <bcp14>MUST</bcp14> have an independent basis for believing the assertion, or on the
workload's own behalf, in which case the exchange subject is the requesting
workload itself and the two gate tuples coincide. An AS <bcp14>MUST NOT</bcp14> accept a
user identity from an unsigned subject token without such a basis. The PDP
cannot detect this error, because it sees only the identifier it is given.</t>
        <t><strong>Transaction context may originate at the PDP.</strong> The specification makes
the TTS authoritative for the transaction context of the token it mints, and
permits that context to be derived from the request details. A PDP is a
legitimate source for that derivation. Where a deployment uses one, the
transaction context is carried as a member of the <tt>claims</tt> shaping key of
<xref target="ISSUANCE"/>, and the TTS remains authoritative: it <bcp14>MUST</bcp14> validate the
returned value before minting, and its own determination prevails.</t>
        <t>A PDP that asserts a quantitative ceiling in transaction context is
asserting a constraint that a downstream enforcement point is expected to
apply, and dropping it would broaden what the token effectively authorizes.
A PDP asserting such a value <bcp14>MUST</bcp14> name the claim in <tt>crit</tt>, per <xref target="ISSUANCE"/>.</t>
        <t>Requests for replacement Txn-Tokens are a second issuance moment with the
same tuple shape and require no additional machinery. The invariants that
<xref target="I-D.ietf-oauth-transaction-tokens"/> places on a replacement - that it <bcp14>MUST
NOT</bcp14> expand scope, and <bcp14>MUST NOT</bcp14> modify the transaction identifier, subject,
or audience - are preconditions the TTS enforces. <strong>A PDP cannot waive
them.</strong> A permit authorizes a replacement within those bounds; it does not
authorize one outside them.</t>
      </section>
    </section>
    <section anchor="processing-the-response">
      <name>Processing the Response</name>
      <t>The response processing rules of <xref target="ISSUANCE"/> apply without change,
including the no-broadening rule, the mandatory-to-understand
classification, the reserved claim list, and the aggregation rules for
composing per-item shaping across a batch.</t>
      <t>Two consequences of that framework are worth restating here, because token
exchange is where they bind hardest.</t>
      <t><strong><tt>sub</tt> and <tt>aud</tt> are reserved.</strong> A PDP cannot rewrite the subject or the
audience of the issued token. In a family of flows whose entire purpose is
to produce a token for a different audience, or bearing a different subject
identifier, than the one presented, the temptation to let the PDP perform
that transformation is real. It must be resisted: re-subjecting a token is a
fresh issuance rather than an attenuation of an existing one, and must be
evaluated as such. The AS decides the transformation and evaluates the
result, as <xref target="subject"/> requires.</t>
      <t><strong><tt>act</tt> and <tt>may_act</tt> are reserved.</strong> The delegation chain of the issued
token is constructed by the AS from parties it authenticated. A PDP that
could write <tt>act</tt> could fabricate a delegation history; a PDP that could
write <tt>may_act</tt> could confer delegation authority that no evaluation
considered, which is broadening by construction.</t>
    </section>
    <section anchor="error-mapping">
      <name>Error Mapping</name>
      <t>The mapping of <xref target="ISSUANCE"/> applies, refined for the errors of <xref target="RFC8693"/>:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Condition</th>
            <th align="left">Authorization server behavior</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Subject gate tuple denied</td>
            <td align="left">Fail; <tt>invalid_request</tt></td>
          </tr>
          <tr>
            <td align="left">Requesting party gate tuple denied</td>
            <td align="left">Fail; <tt>invalid_request</tt></td>
          </tr>
          <tr>
            <td align="left">All scope tuples denied</td>
            <td align="left">Fail; <tt>invalid_scope</tt></td>
          </tr>
          <tr>
            <td align="left">Some scope tuples denied</td>
            <td align="left">Issue with the permitted subset; report via <tt>scope</tt></td>
          </tr>
          <tr>
            <td align="left">Level 1 denied in a two-level evaluation</td>
            <td align="left">Fail; <tt>invalid_target</tt></td>
          </tr>
          <tr>
            <td align="left">Every target denied, or shaping empties the target set</td>
            <td align="left">Fail; <tt>invalid_target</tt></td>
          </tr>
          <tr>
            <td align="left">Requested token type not permitted</td>
            <td align="left">Fail; <tt>invalid_request</tt></td>
          </tr>
          <tr>
            <td align="left">PDP unreachable or response malformed</td>
            <td align="left">Fail closed; do not issue</td>
          </tr>
        </tbody>
      </table>
      <t>An AS <bcp14>MUST NOT</bcp14> distinguish, in the error returned to the client, between a
denial of the subject gate and a denial of the requesting party gate. The
difference tells the requesting party whether its own authority or the
subject's was lacking, which is information about the subject's authority
that the requesting party has not been authorized to learn. Both are
reported as <tt>invalid_request</tt>, and the distinction is recorded where
<xref target="ISSUANCE"/> directs PDP reason information: in the AS's own logs.</t>
    </section>
    <section anchor="discovery">
      <name>Discovery</name>
      <t>This binding registers no capability URN of its own. A PDP advertises support
for the URN of <xref target="ISSUANCE"/>, and nothing further is negotiated.</t>
      <t>Nothing further is needed. A capability URN identifies response vocabulary,
because an AS must understand what it is asked to enforce, and this binding
adds none: it uses the shaping keys of <xref target="ISSUANCE"/> unchanged. The context
keys of <xref target="context"/> are advisory, and a PDP that does not recognize one
ignores it. The gate action names registered in <xref target="iana-actions"/> are covered
by <xref target="ISSUANCE"/>'s rule that a PDP advertising the issuance capability renders
a decision on any registered gate action, so an AS never has to discover
which members of this family a deployment's policy anticipates.</t>
      <t>An operator enabling one of these grants for the first time - ID-JAG on an AS
that previously performed only ordinary exchanges, say - can check whether
policy anticipates the new gate action before turning it on, using the Action
Search API of <xref target="AUTHZEN"/> as <xref target="ISSUANCE"/> describes.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>The first example below is shown in full, framed against the HTTPS JSON
binding of <xref target="AUTHZEN"/>; the second shows only the JSON payload. As
<xref target="ISSUANCE"/> notes, the transport is a property of the deployment, and where
the HTTPS JSON binding is in use the request URL is the PDP's
<tt>access_evaluations_endpoint</tt> where its metadata publishes one. Both requests
here carry two gate tuples, so neither reduces to a single evaluation.</t>
      <section anchor="delegation-with-an-actor-token">
        <name>Delegation With an Actor Token</name>
        <t>A gateway workload exchanges a user's access token for a token aimed at a
partner API, acting on the user's behalf. Two gate tuples and one scope
tuple result.</t>
        <sourcecode type="http-message"><![CDATA[
POST /token HTTP/1.1
Host: as.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&subject_token=eyJ...
&subject_token_type=urn:ietf:params:oauth:token-type:access_token
&actor_token=eyJ...
&actor_token_type=urn:ietf:params:oauth:token-type:jwt
&requested_token_type=urn:ietf:params:oauth:token-type:access_token
&audience=https%3A%2F%2Fapi.partner.example
&scope=read%3Adocs
]]></sourcecode>
        <sourcecode type="http-message"><![CDATA[
POST /access/v1/evaluations HTTP/1.1
Host: pdp.example.com
Content-Type: application/json
Authorization: Bearer <token>

{
  "resource": {
    "type": "audience",
    "id": "https://api.partner.example"
  },
  "context": {
    "client_id": "gateway-client",
    "may_act": { "sub": "spiffe://cluster/ns/prod/sa/gateway" },
    "issuance": {
      "capabilities": [
        "urn:ietf:params:authzen:token-issuance"
      ]
    }
  },
  "evaluations": [
    {
      "subject": { "type": "user", "id": "alice@example.com" },
      "action":  {
        "name": "issue:access_token:token_exchange"
      }
    },
    {
      "subject": {
        "type": "workload",
        "id": "spiffe://cluster/ns/prod/sa/gateway"
      },
      "action":  {
        "name": "issue:access_token:token_exchange"
      }
    },
    {
      "subject": { "type": "user", "id": "alice@example.com" },
      "action":  { "name": "read:docs" }
    }
  ],
  "options": { "evaluations_semantic": "execute_all" }
}
]]></sourcecode>
        <t>A relationship-based PDP reads the second tuple as an edge between
<tt>workload:spiffe://cluster/ns/prod/sa/gateway</tt> and
<tt>audience:https://api.partner.example</tt> under the relation
<tt>issue_access_token_token_exchange</tt>. No property bag is consulted, and the
relation is distinct from the one that would govern the gateway obtaining a
token for itself under the client credentials grant.</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "evaluations": [
    { "decision": true },
    { "decision": true },
    {
      "decision": true,
      "context": {
        "issuance": {
          "token_lifetime": 300,
          "claims": { "groups": ["eng", "sre"] }
        }
      }
    }
  ]
}
]]></sourcecode>
        <t>The AS issues an access token for <tt>https://api.partner.example</tt> bearing
<tt>scope</tt> of <tt>read:docs</tt>, an <tt>act</tt> claim naming the gateway, a <tt>groups</tt> claim,
and a lifetime no greater than 300 seconds.</t>
      </section>
      <section anchor="scopeless-id-jag-two-levels">
        <name>Scopeless ID-JAG, Two Levels</name>
        <t>An ID-JAG request naming a resource but no scopes. Two gate tuples at level
1, no scope tuples anywhere, and the PDP supplies the grantable set.</t>
        <sourcecode type="json"><![CDATA[
{
  "context": {
    "client_id": "chatterbox-idp-7f3a",
    "issuance": {
      "capabilities": [
        "urn:ietf:params:authzen:token-issuance"
      ]
    }
  },
  "evaluations": [
    {
      "subject":  { "type": "user", "id": "U0405936" },
      "action":   { "name": "issue:id_jag:token_exchange" },
      "resource": {
        "type": "audience",
        "id": "https://as.app.example"
      }
    },
    {
      "subject":  { "type": "client", "id": "chatterbox-idp-7f3a" },
      "action":   { "name": "issue:id_jag:token_exchange" },
      "resource": {
        "type": "audience",
        "id": "https://as.app.example"
      }
    }
  ],
  "options": { "evaluations_semantic": "execute_all" }
}
]]></sourcecode>
        <sourcecode type="json"><![CDATA[
{
  "evaluations": [
    {
      "decision": true,
      "context": {
        "issuance": {
          "granted_scope": "files.read",
          "token_lifetime": 300
        }
      }
    },
    { "decision": true }
  ]
}
]]></sourcecode>
        <t>The AS mints an ID-JAG naming <tt>files.read</tt> and the requested resource. Had
the PDP returned a bare permit, the AS would have fallen back to its own
default scope set for that client and target, which is a safe degradation:
a PDP unable to enumerate a grantable set is not thereby able to broaden
one.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The considerations of <xref target="ISSUANCE"/> apply in full, including fail-closed
behavior, the treatment of the PDP as a trust dependency, and the privacy
consequences of consulting a PDP on every issuance.</t>
      <section anchor="impersonation-is-the-dangerous-case">
        <name>Impersonation Is the Dangerous Case</name>
        <t>An impersonation exchange produces a token indistinguishable from one issued
to the subject directly. Nothing downstream can determine that a different
party obtained it, which means no downstream enforcement point can apply
policy to the requesting party's involvement. The requesting party gate
tuple of <xref target="actor-gate"/> is the only point at which that party's authority is
evaluated at all.</t>
        <t>An implementation that omitted it - reasoning that the client was already
authenticated, or that <tt>may_act</tt> was present in the subject token - would
externalize the delegation decision in name only. Client authentication
establishes who is asking; it does not establish that they may ask for this.</t>
      </section>
      <section anchor="chain-depth-and-repeated-exchange">
        <name>Chain Depth and Repeated Exchange</name>
        <t>A token obtained by exchange may itself be exchanged. Each exchange is an
independent decision under this binding, so authority cannot be broadened by
iteration: every step is gated, and the scope tuples at each step are
bounded by what the AS would otherwise grant.</t>
        <t>What repetition can accumulate is <em>lifetime</em>. A chain of exchanges, each
issuing a token whose lifetime is permitted at that moment, can keep
authority alive well past the point at which the original grant would have
expired. Deployments <bcp14>SHOULD</bcp14> convey the existing <tt>act</tt> chain in context so
that policy can act on chain depth, and <bcp14>SHOULD</bcp14> bound the lifetime of an
exchanged token by the remaining lifetime of the subject token. The second
is an AS responsibility: a <tt>token_lifetime</tt> shaping value is a ceiling and
never a floor, so a PDP cannot repair an AS that fails to apply it.</t>
      </section>
      <section anchor="trust-in-the-subject-token-issuer">
        <name>Trust in the Subject Token Issuer</name>
        <t>In cross-domain flows the subject token is issued by a party in another
trust domain, and the claims conveyed to the PDP as context originate there.
A PDP whose policy depends on those claims has extended trust to that
issuer. This is a further reason for the five-tuple rule: a decision that
depends only on the resolved local subject identifier, the requesting party,
the action, and the target depends on values the local AS established
itself.</t>
      </section>
      <section anchor="denial-information-disclosure">
        <name>Denial Information Disclosure</name>
        <t>Both the error mapping above and <xref target="ISSUANCE"/>'s prohibition on relaying PDP
reason strings exist to keep the requesting party from learning the shape of
a policy that governs a subject it is merely acting for. Deployments adding
diagnostics to token endpoint error responses should preserve this.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-actions">
        <name>Issuance Authorization Action Names</name>
        <t>IANA is requested to register the following token type short names in the
"OAuth Token Issuance Authorization Action Names" registry established by
<xref target="ISSUANCE"/>, whose registration policy is Specification Required
<xref target="RFC8126"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Short name</th>
              <th align="left">Token type</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>id_jag</tt></td>
              <td align="left">
                <tt>urn:ietf:params:oauth:token-type:id-jag</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>txn_token</tt></td>
              <td align="left">
                <tt>urn:ietf:params:oauth:token-type:txn_token</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>jwt</tt></td>
              <td align="left">
                <tt>urn:ietf:params:oauth:token-type:jwt</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>saml1</tt></td>
              <td align="left">
                <tt>urn:ietf:params:oauth:token-type:saml1</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>saml2</tt></td>
              <td align="left">
                <tt>urn:ietf:params:oauth:token-type:saml2</tt></td>
            </tr>
          </tbody>
        </table>
        <t>The short names for <tt>access_token</tt>, <tt>refresh_token</tt>, and <tt>id_token</tt>, and the
<tt>token_exchange</tt> grant type short name that pairs with all of the above, are
registered by <xref target="ISSUANCE"/>.</t>
        <t><tt>id_jag</tt> uses an underscore where the token type URI uses a hyphen, as
<xref target="ISSUANCE"/> requires of every registered short name.</t>
        <ul empty="true">
          <li>
            <t><strong>Editor's note.</strong> These registrations depend on the corresponding token
types being registered in the "OAuth URI" registry by their own
specifications. <tt>id-jag</tt> and <tt>txn_token</tt> are requested by documents still
in progress, and the short names above should be confirmed against the
values those documents ultimately register.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </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="RFC8707">
          <front>
            <title>Resource Indicators for OAuth 2.0</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8707"/>
          <seriesInfo name="DOI" value="10.17487/RFC8707"/>
        </reference>
        <reference anchor="AUTHZEN" target="https://openid.net/specs/authorization-api-1_0-final.html">
          <front>
            <title>Authorization API 1.0</title>
            <author initials="" surname="OpenID Foundation AuthZEN Working Group">
              <organization>OpenID Foundation</organization>
            </author>
            <date year="2026" month="January" day="11"/>
          </front>
        </reference>
        <reference anchor="ISSUANCE">
          <front>
            <title>AuthZEN Profile for OAuth 2.0 Token Issuance</title>
            <author fullname="Omri Gazitt" initials="O." surname="Gazitt">
              <organization>Independent</organization>
            </author>
            <date day="4" month="August" year="2026"/>
            <abstract>
              <t>   Numerous OAuth 2.0 specifications define a moment at which an
   authorization server decides whether to issue a security token, and
   each of them declares the decision itself to be a matter of local
   policy that is out of scope.  The result is that a decision common to
   every OAuth deployment has no interoperable expression.

   This document defines a profile for using the OpenID AuthZEN
   Authorization API to externalize that decision to a Policy Decision
   Point.  It specifies how the inputs to a token issuance request map
   onto AuthZEN's mandatory five-tuple, how a Policy Decision Point
   response may shape the issued token, and how the two parties discover
   each other's capabilities.

   The mapping is complete for grants whose request names a single party
   and a single target, including the authorization code and client
   credentials grants.  Companion documents bind the grant families that
   add structure this document does not model, the token exchange family
   first among them.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gazitt-oauth-authzen-issuance-00"/>
        </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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <t>   This specification describes a mechanism for preserving identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.  A JSON Web Token (JWT) authorization grant, obtained
   through an intra-domain OAuth 2.0 Token Exchange, facilitates the
   cross-domain acquisition of an access token.  The relevant identity
   and authorization information is chained throughout the flow by being
   conveyed in the respective artifacts exchanged at each step of the
   process.  Chaining across multiple domains is achieved by using the
   same protocol every time a trust domain boundary is crossed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-17"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-assertion-authz-grant">
          <front>
            <title>Identity Assertion JWT Authorization Grant</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Karl McGuinness" initials="K." surname="McGuinness">
              <organization>Independent</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="21" month="May" year="2026"/>
            <abstract>
              <t>   This specification provides a mechanism for an application to use an
   identity assertion to obtain an access token for a third-party API by
   coordinating through an identity provider that the downstream
   Resource Authorization Server already trusts for single sign-on
   (SSO), using Token Exchange [RFC8693] and JWT Profile for OAuth 2.0
   Authorization Grants [RFC7523].  This pattern is informally referred
   to as Cross-App Access (XAA).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-assertion-authz-grant-04"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-transaction-tokens">
          <front>
            <title>Transaction Tokens</title>
            <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale">
              <organization>CrowdStrike</organization>
            </author>
            <author fullname="George Fletcher" initials="G." surname="Fletcher">
              <organization>Practical Identity LLC</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <date day="30" month="July" year="2026"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) are designed to maintain and
   propagate user identity, workload identity and authorization context
   throughout the Call Chain within a trusted domain during the
   processing of external requests (e.g. such as API calls) or requests
   initiated internally within the Trust Domain.  Txn-Tokens ensure that
   this context is preserved throughout the Call Chain thereby enhancing
   security and consistency in complex, multi-service architectures.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-11"/>
        </reference>
        <reference anchor="ZANZIBAR" target="https://www.usenix.org/conference/atc19/presentation/pang">
          <front>
            <title>Zanzibar: Google's Consistent, Global Authorization System</title>
            <author initials="R." surname="Pang">
              <organization/>
            </author>
            <author initials="R." surname="Caceres">
              <organization/>
            </author>
            <author initials="M." surname="Burrows">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 865?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The separation of issuance authority from access authority, which this
document expresses as two gate tuples, was arrived at by working through the
protocol messages of <xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/> and
<xref target="I-D.ietf-oauth-transaction-tokens"/>, and the resulting shape owes a great
deal to the care with which those documents model their inputs.</t>
      <t>Thanks to the members of the OAuth Working Group and the OpenID AuthZEN
Working Group.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V9e3PbRrbn//0pepW6k4RFUpaTSSbyTO7IjySam9heS9ns
5NaUBZJNCjEI8KJB0Yzj+Sz3s+wn2/PsB0DaTu2trd3UTCJBQKMf531+52Ay
mZiu7Cp3bk8utt3tz0+e2odlvSjrlV02rX2GF+396T173bxytX3yen5b1Ct3
YorZrHV3yWP5DTrKiZkXnVs17f7c+m5hFs28LtbwukVbLLvJqvi17LpJU8Ag
E/zXr66edDjSxMlIk3v3jN/O1qX3ZVN3+w08fPnk+htTbtpz27Vb392/d++r
e/dN0boCJnTl5tu27PYnZte0r1Zts93A1Z/czOJUm7b8tehgJPu8bbpm3lQw
xab2rvZbT+M5A8v6zLxye3h+cW7sxNL88IciHUEvwJzxx01TlfM9/kQLsLoA
vLJwlVvxQ3eu3joY1X7IzKzlBZ/8BEvBQ/kWH8Lr66Ks4DrN7K+l65bTpl3h
H4p2fgt/uO26jT8/PcX78FJ556Z62yleOJ21zc67UxrhFJ9cld3tdoaD8rGc
ZsdyYgyvHncE7rZ2ua0qPsyTZ+u2tN/SUyf0N3hLUct64O+X9cJtHPyrlr87
nT+/6q8r/H06b9bwmrpp1/DgHe3Si28effHl51/Jj3/64qvP9Mcv732JP178
eP0d0N85DZvSctzPi+eX9mx6j9/cFe3KdckONTCxcjGtXXfqN27uT7NDnhSb
cnL28t5kWdZFNb3t1hWPswC6Prf3793/YnLvbHJ2RhfDDtE/E1vWHncH3nD5
2H7TbOuFzEiYZnCs/A/s3qHH8IbLq6sfL54+egJMMHk8Pcg/wCnbop47Y8p6
2dvLP53d/yJu4B/lx68+5x3GIZFIZMASzws4aQKEXNYwz3fdU3jvWt4xnMdk
1RZ1d+CBDq77Yk53EqN4vOnni6c/Xz68eJEf489F/Ws5K4DPv22aVeU+9vYR
8GrpO3jp2H5bNbOi6jHP1R7+uj5y1rvdbroFXi9fEx8A4y9d62CvTotufvbV
6aZ18NeORjrdFPUqP+uzr46f8oupfQ4PDC4+KubwCp9f/2FqH25bZEBjJhMQ
IzMP+zLvjDkmce0ncE4W6f9TkCZAjM7b7tbZdbOGCduis7vbcn5ri9pk9Gvh
VO5cC8/M4ag83OXgsdY2tbObou32IEn2tpl1cMK2ENHVNRYmYws/Ng3eamfu
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
AA==

-->

</rfc>
