<?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-claims-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 Authorization Claims">AuthZEN Profile for Authorization Claims in JWT Access Tokens</title>
    <seriesInfo name="Internet-Draft" value="draft-gazitt-oauth-authzen-claims-00"/>
    <author fullname="Omri Gazitt">
      <organization>Independent</organization>
      <address>
        <email>ogazitt@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="14"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>authorization</keyword>
    <keyword>authzen</keyword>
    <keyword>policy</keyword>
    <keyword>claims</keyword>
    <keyword>search</keyword>
    <abstract>
      <?line 52?>

<t>RFC 9068 recommends that an authorization server placing group memberships,
roles, or entitlements in a JWT access token draw those claims from the SCIM
user schema. It says what the claims are named and how their values are
encoded, and it does not say where an authorization server obtains them. In
deployments today they come from a directory, a database, or a
vendor-specific hook, and the question they answer is an authorization
question asked of something that is not the authorization system.</t>
      <t>This document profiles the Resource Search API of the OpenID AuthZEN
Authorization API for that purpose. It binds each authorization claim to a
search, defines how a search result set becomes a claim value, and requires
that a search result never influence whether a token is issued or what
authority it conveys. It may be applied on its own, by an authorization
server that externalizes claim enrichment but not its issuance decision, or
alongside the companion framework document that externalizes the decision.</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-claims/"/>.
      </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 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC9068"/> Section 2.2.3.1 describes the authorization attributes an
authorization server (AS) commonly places in a JWT access token beyond the
delegated authority the grant itself conveys: the group memberships, roles,
and entitlements a resource server is expected to consult. It recommends the
<tt>groups</tt>, <tt>roles</tt>, and <tt>entitlements</tt> attributes of the user schema of
<xref target="RFC7643"/> as the claim types, and registers all three as JWT claims.</t>
      <t>What it does not describe is where the values come from. An AS populating
<tt>groups</tt> is answering the question "which groups does this subject belong
to." That is an authorization question, and in most deployments it is
answered by a directory query, a database join, or a proprietary extension
point rather than by the system that holds the deployment's authorization
policy.</t>
      <t><xref target="AUTHZEN"/> answers questions of exactly that shape. Its Resource Search API
returns the resources of a given type on which a given subject may perform a
given action. Given a subject and a <tt>member</tt> action, the resources of type
<tt>group</tt> it returns are the groups the subject is a member of.</t>
      <t>This document defines the bindings that make that correspondence
interoperable, and the rules an AS follows to turn a search result into a
claim.</t>
      <section anchor="division">
        <name>Why a Search</name>
        <t><xref target="AUTHZEN"/> defines a Search API for enumerating one leg of a tuple given the
other two, and enumerating what a subject holds is that operation exactly.</t>
        <t>The alternative would be to obtain these claims as a side effect of an
evaluation, attaching the enumeration to the response context of a decision
the AS was making anyway. <xref target="ISSUANCE"/> defines a <tt>claims</tt> key that could be
used that way, and declines to route these claims through it. An evaluation
response is the answer to the question the request asked, and an AS asking
whether a token may be issued has not asked what its subject belongs to. A
purpose-built operation exists for the second question, so the second
question is asked with it.</t>
        <t>So the AS makes each call for what it is for, and composes the results. The
consequence is worth stating at the outset: <strong>this document asks nothing of a
PDP that <xref target="AUTHZEN"/> does not already require.</strong> The searches it specifies
are ordinary Resource Search requests carrying registered type and action
names, and a PDP answering them is not required to know that their results
will reach a token. Everything specified here is a rule for the authorization
server.</t>
      </section>
      <section anchor="relationship">
        <name>Composition with the Issuance Framework</name>
        <t>This document is independent of <xref target="ISSUANCE"/>. An AS that does not externalize
its issuance decision may still externalize claim enrichment, and for such an
AS everything in this document applies unchanged; the decision to issue is
simply its own.</t>
        <t>Where both are used, they compose as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The decision governs. A token is minted only if the gate of <xref target="ISSUANCE"/>
permits it, and no search result contributes to that decision
(<xref target="ordering"/>).</t>
          </li>
          <li>
            <t>Enrichment is discardable. Where the gate denies, any search results the AS
has obtained are discarded and no claim is rendered from them.</t>
          </li>
        </ul>
        <t><xref target="ISSUANCE"/> defines no vocabulary this document extends, and this document
defines none of its own, so the two interact only through that ordering.</t>
        <t>Where the grant is a member of the token exchange family,
<xref target="I-D.gazitt-oauth-authzen-token-exchange"/> determines the subject, and the
searches of this document follow it (<xref target="search-subject"/>).</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 Authorization Server, Client, Resource Server,
access token, and scope from <xref target="RFC6749"/>; Policy Decision Point (PDP), Policy
Enforcement Point (PEP), Subject, Action, Resource, and Context from
<xref target="AUTHZEN"/>; and gate tuple and scope tuple from <xref target="ISSUANCE"/>.</t>
      <dl>
        <dt>Authorization claim:</dt>
        <dd>
          <t>One of the claims of <xref target="RFC9068"/> Section 2.2.3.1 - <tt>groups</tt>, <tt>roles</tt>, and
<tt>entitlements</tt> - or any other claim whose value enumerates what a subject
holds.</t>
        </dd>
        <dt>Claim binding:</dt>
        <dd>
          <t>The association of an authorization claim with an AuthZEN resource type and
action name, such that a Resource Search over that type and action
enumerates the claim's members. See <xref target="bindings"/>.</t>
        </dd>
        <dt>Bound claim:</dt>
        <dd>
          <t>An authorization claim for which the AS has a claim binding configured, and
which it will therefore attempt to populate on the token it is about to
issue.</t>
        </dd>
      </dl>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>This document applies to an authorization server that populates one or more
authorization claims in a token it issues by querying an AuthZEN PDP.
Implementing <xref target="ISSUANCE"/> is not a prerequisite. The two address different
halves of an issuance, a deployment may adopt either without the other, and
<xref target="relationship"/> governs the case where it adopts both.</t>
      <t>The bindings of <xref target="bindings"/> are keyed by claim name and say nothing about
token type. An AS that places the same claims in an artifact other than a JWT
access token may use them, though <xref target="RFC9068"/>, which is what makes these
particular claim names interoperable, governs access tokens.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <artwork type="ascii-art"><![CDATA[
+--------+           +----------------------+        +-------+
| Client |           | Authorization Server |        |  PDP  |
+---+----+           |        (PEP)         |        +---+---+
    |                +----------+-----------+            |
    | 1. token req              |                        |
    +-------------------------->|                        |
    |                           | 2. evaluate (ISSUANCE) |
    |                           +----------------------->|
    |                           |                        |
    |                           | 3. search: groups      |
    |                           +----------------------->|
    |                           | 4. search: roles       |
    |                           +----------------------->|
    |                           |                        |
    |                           | 5. decision            |
    |                           |<-----------------------+
    |                           | 6. result sets         |
    |                           |<-----------------------+
    |                           |                        |
    |                           | 7. if permitted, mint  |
    |                           |    and render claims   |
    | 8. token response         |                        |
    |<--------------------------+                        |
]]></artwork>
      <t>Steps 3 and 4 are drawn as concurrent with step 2 because <xref target="ordering"/>
permits it. They are semantically after it: their results are discarded if
step 5 denies.</t>
      <t>Step 2 is one request under <xref target="ISSUANCE"/>, ordinarily a batch. Each bound
claim is a separate search, because a Resource Search names one resource type
and <xref target="AUTHZEN"/> defines no batch form for searches.</t>
    </section>
    <section anchor="bindings">
      <name>Claim Bindings</name>
      <section anchor="relations">
        <name>Membership as an Action</name>
        <t>A claim binding names an AuthZEN action. The names this document registers -
<tt>member</tt>, <tt>assignee</tt>, <tt>holder</tt> - describe how a subject relates to a resource
rather than an operation the subject performs on it.</t>
        <t>Nothing in <xref target="AUTHZEN"/> requires otherwise. An action names something asserted
of a subject and a resource together, and "Alice is a member of engineering"
fills the three positions of a tuple as readily as "Alice may read document
7" does. How a deployment's PDP arrives at either answer is its own affair.</t>
        <t>The names are consequently meaningful in an evaluation as well as in a
search, which is what makes a search result checkable. <xref target="AUTHZEN"/> Section
8.1 states that a search result, used in a subsequent evaluation, <bcp14>SHOULD</bcp14>
yield a permit; an AS or an auditor can verify any member of a rendered claim
by evaluating the corresponding tuple.</t>
      </section>
      <section anchor="registered">
        <name>Registered Bindings</name>
        <t>This document registers the following bindings in the registry established in
<xref target="iana-bindings"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim</th>
              <th align="left">resource.type</th>
              <th align="left">action.name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>groups</tt></td>
              <td align="left">
                <tt>group</tt></td>
              <td align="left">
                <tt>member</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>roles</tt></td>
              <td align="left">
                <tt>role</tt></td>
              <td align="left">
                <tt>assignee</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>entitlements</tt></td>
              <td align="left">
                <tt>entitlement</tt></td>
              <td align="left">
                <tt>holder</tt></td>
            </tr>
          </tbody>
        </table>
        <t>Reading the first row: the members of the <tt>groups</tt> claim are the identifiers
of the resources of type <tt>group</tt> on which the subject may perform the action
<tt>member</tt>.</t>
        <t>Each action name matches the grammar <xref target="ISSUANCE"/> defines for registered
action names, <tt>[a-z][a-z0-9_]{0,30}</tt>. They are not composed with the <tt>issue:</tt>
prefix, which <xref target="ISSUANCE"/> reserves for gate actions.</t>
        <ul empty="true">
          <li>
            <t><strong>Editor's note.</strong> <tt>member</tt> is the settled choice of the three. It is the
name <xref target="RFC7643"/> uses, and it is what schema languages call this
association in their own examples. <tt>assignee</tt> and <tt>holder</tt> are less
settled: a role or an entitlement is variously said to be assigned to,
granted to, or held by a subject, and a single name could serve for both
claims, with the resource type carrying the distinction. Distinct names are
registered here on the theory that policy is easier to read when names
differ where the concepts do. Implementer feedback is invited.</t>
          </li>
        </ul>
      </section>
      <section anchor="configuration">
        <name>Deployment Configuration</name>
        <t>A deployment that uses action names other than the registered ones
configures the AS with the names it uses. The registered bindings are
defaults, not constraints on a deployment's policy vocabulary.</t>
        <t>They earn their place by being defaults. An AS and a PDP from different
implementers, neither configured for the other, interoperate on these three
claims only because both arrive at <tt>group</tt>/<tt>member</tt> without being told. A
deployment that overrides a binding has taken on the configuration burden
knowingly, which is a reasonable trade and a poor default.</t>
        <t>A deployment <bcp14>MAY</bcp14> also bind a claim this document does not register, using a
binding registered under <xref target="iana-bindings"/> or one local to the deployment. A
local binding is not interoperable and <bcp14>SHOULD NOT</bcp14> use a claim name registered
in the JSON Web Token Claims registry for some other purpose.</t>
      </section>
    </section>
    <section anchor="request">
      <name>Forming the Search Request</name>
      <t>For each bound claim, the AS forms one Resource Search request as defined in
Section 8.5 of <xref target="AUTHZEN"/>.</t>
      <section anchor="search-subject">
        <name>Subject</name>
        <t>The <tt>subject</tt> of every search <bcp14>MUST</bcp14> be the same entity as the subject of the
gate tuple of <xref target="ISSUANCE"/>: the same <tt>type</tt> and the same <tt>id</tt>, the latter
being the identifier the AS intends to place in the issued token's subject
claim.</t>
        <t>The requirement is not merely for tidiness. A claim enumerating what a
subject holds is only true of the subject the token names, and any identifier
transformation the AS applies - pairwise identifiers, resolution of a foreign
identity to a local account - <bcp14>MUST</bcp14> therefore be applied before the search is
formed, exactly as <xref target="ISSUANCE"/> requires of the evaluation.</t>
        <t>Where <xref target="I-D.gazitt-oauth-authzen-token-exchange"/> applies, the subject is the
exchange subject and never the requesting party. The token represents the
subject, and a claim enumerating the requesting party's holdings would assert
of the subject something that is not true of it.</t>
      </section>
      <section anchor="action-and-resource">
        <name>Action and Resource</name>
        <t><tt>action.name</tt> <bcp14>MUST</bcp14> be the action name of the claim binding, and
<tt>resource.type</tt> <bcp14>MUST</bcp14> be its resource type. The <tt>resource</tt> object carries no
<tt>id</tt>; Section 8.5.1 of <xref target="AUTHZEN"/> states that the identifier of the entity
being searched for is omitted, and is ignored if present.</t>
      </section>
      <section anchor="search-context">
        <name>Context</name>
        <t>An AS <bcp14>SHOULD</bcp14> convey in the search <tt>context</tt> the same values it conveys on the
evaluation request under <xref target="ISSUANCE"/>, other than the capability declaration
of that document, which concerns response shaping and has no meaning on a
search. It <bcp14>MAY</bcp14> additionally convey:</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>audience</tt></td>
              <td align="left">array of strings</td>
              <td align="left">The issuance targets of the token being minted</td>
            </tr>
          </tbody>
        </table>
        <t>The type is an array for the same reason <xref target="ISSUANCE"/> makes its <tt>audience</tt>
shaping key an array: the value is a set, and a set has one JSON rendering
here.</t>
        <t>This key exists because <xref target="RFC9068"/> scopes its authorization claims to the
target, describing roles and groups "relevant to the resource being accessed"
and entitlements "for the targeted resource," while a Resource Search has no
slot to say so. Its mandatory entities are the subject, the action, and the
type of the resource being enumerated; the resource identifier position is
the answer, not an input. There is no second resource.</t>
        <t>The consequence is that this is advisory input, and this document does not
pretend otherwise. A PDP <bcp14>MAY</bcp14> use it to scope the result set and <bcp14>MAY</bcp14> ignore
it, so an AS <bcp14>MUST NOT</bcp14> assume the returned set has been filtered by target,
and <bcp14>MUST NOT</bcp14> represent the resulting claim to itself as target-scoped. A
deployment that requires the scoping to be honored registers a binding whose
resource type distinguishes the target, which puts the distinction in the
type slot where a PDP must read it.</t>
      </section>
      <section anchor="endpoint-selection">
        <name>Endpoint Selection</name>
        <t>Where the HTTPS binding of <xref target="AUTHZEN"/> is in use, the request is sent to the
<tt>search_resource_endpoint</tt> published in the PDP's metadata, or to
<tt>/access/v1/search/resource</tt> where metadata provides no value.</t>
        <t>Section 9.1.1 of <xref target="AUTHZEN"/> states that the absence of an endpoint parameter
is sufficient for a PEP to determine that the PDP does not support the
corresponding API. An AS whose PDP publishes metadata without
<tt>search_resource_endpoint</tt>, and which has not been configured with an
endpoint out of band, <bcp14>MUST NOT</bcp14> attempt the searches; every bound claim then
fails under <xref target="failure"/>. This is a deployment error rather than a request
error, and an AS <bcp14>SHOULD</bcp14> detect it at configuration time rather than at the
token endpoint.</t>
      </section>
    </section>
    <section anchor="ordering">
      <name>Ordering</name>
      <t><strong>An AS <bcp14>MUST NOT</bcp14> include an enrichment claim in a token it does not issue,
and <bcp14>MUST NOT</bcp14> treat a search result as authorizing anything.</strong> In particular,
an AS <bcp14>MUST NOT</bcp14> derive the <tt>scope</tt> claim, the audience, or
<tt>authorization_details</tt> from search results, and <bcp14>MUST NOT</bcp14> allow a search
result to affect whether it issues a token or what authority that token
conveys. Where <xref target="ISSUANCE"/> is in use, this means a search result never
affects the gate or scope decisions.</t>
      <t>An AS <bcp14>MAY</bcp14> nonetheless issue the searches concurrently with whatever it does
to decide, discarding their results if it decides not to issue.</t>
      <t>The two statements are compatible, and it is worth being precise about why,
because they look like a contradiction. The ordering is semantic: search
results are inputs to claim construction and to nothing else, so no ordering
of the calls in time can make one an input to the decision. The concurrency
is a performance affordance: the calls are independent, and running them in
sequence would add their latencies together on the token endpoint's critical
path.</t>
      <t>Two consequences follow for a deployment that takes the affordance. It
performs work it may discard, so the cost of a denied request rises by the
cost of the searches. And its PDP receives searches for subjects who never
receive a token, so search volume at the PDP is not a measure of tokens
issued, and neither logs nor rate limits should be read as though it were.</t>
    </section>
    <section anchor="rendering">
      <name>Rendering the Claim</name>
      <t>A Search API response, per Section 8.3 of <xref target="AUTHZEN"/>, carries a <tt>results</tt>
array of entities of the type searched for, each an object with a <tt>type</tt> and
an <tt>id</tt>. A claim value is a JSON array. This section defines the mapping
between them.</t>
      <section anchor="members">
        <name>From Results to Claim Members</name>
        <t>The value of a bound claim <bcp14>MUST</bcp14> be a JSON array of strings, each member being
the <tt>id</tt> of one result object, and every result contributing exactly one
member.</t>
        <t><xref target="RFC9068"/> recommends encoding these claims according to the guidance of
<xref target="RFC7643"/>, whose corresponding attributes are multi-valued and complex:
each value is an object with a <tt>value</tt> sub-attribute carrying the identifier,
and, depending on the attribute, <tt>$ref</tt>, <tt>display</tt>, <tt>type</tt>, and <tt>primary</tt>
sub-attributes carrying a reference, a human-readable label, and
classification.</t>
        <t>An AuthZEN search result supplies exactly one of those: the identifier, in
<tt>id</tt>. The <tt>type</tt> field of a result is invariant across the response by
construction, since the search named it and Section 8.3 of <xref target="AUTHZEN"/>
requires results to be of that type alone, so it carries no per-member
information. The remaining sub-attributes have no source in a search result
and could only be fabricated or fetched from a system this profile does not
define. A conforming complex rendering would therefore be an array of
single-member objects, conveying what an array of strings conveys, in a claim
that is carried on every request the token is presented with.</t>
        <t>This document accordingly renders the array of identifiers directly. The
recommendation in <xref target="RFC9068"/> is a <bcp14>SHOULD</bcp14>, and this document deviates from it:
the profile emits the <tt>value</tt> sub-attribute of each SCIM value and omits an
enclosing object that would have nothing else in it. An AS that must produce
the complex form for a resource server that requires it is not prevented from
doing so, but it is then rendering something this profile does not define,
and a resource server cannot infer which form to expect from the presence of
this profile.</t>
      </section>
      <section anchor="type-mismatch">
        <name>Type Mismatch</name>
        <t>An AS <bcp14>MUST</bcp14> reject a result whose <tt>type</tt> does not equal the <tt>resource.type</tt> it
searched for, and <bcp14>MUST</bcp14> treat the response as a failed search under
<xref target="failure"/> rather than filtering the offending results and proceeding.</t>
      </section>
      <section anchor="dedup">
        <name>Duplicates and Order</name>
        <t>A result set is a set. An AS <bcp14>MUST</bcp14> remove duplicates, comparing <tt>id</tt> values as
JSON strings for exact equality, before rendering the claim. Duplicates are
expected rather than exceptional: <xref target="AUTHZEN"/> recommends that searches be
performed transitively, so a subject holding the same group through two paths
may be returned twice, and pagination admits repetition on its own account
(<xref target="pagination"/>).</t>
        <t>A JSON array is ordered and a set is not, so the order of the members carries
no meaning. A resource server <bcp14>MUST NOT</bcp14> attribute any to it.</t>
        <t>An AS <bcp14>SHOULD</bcp14> nonetheless render members in an order that is stable across
issuances, so that two tokens issued for the same subject against unchanged
policy data differ only where the underlying facts differ. Sorting
ascending by Unicode code point is one way; preserving the PDP's response
order is another where the PDP's order is itself stable.</t>
      </section>
      <section anchor="empty">
        <name>Empty Result Sets</name>
        <t>Where a bound claim's search succeeds and returns no results, the AS <bcp14>MUST</bcp14>
include the claim with an empty array as its value. It <bcp14>MUST NOT</bcp14> omit the
claim.</t>
        <t>The choice is observable, so it has to be made deliberately. Under this rule
the presence of a bound claim means the enumeration was performed, and its
absence means the claim was not populated. Had an empty result set also been
rendered as absence, a resource server could not distinguish "this subject
holds nothing" from "the enumeration did not happen."</t>
      </section>
    </section>
    <section anchor="pagination">
      <name>Pagination</name>
      <t>A PDP <bcp14>MAY</bcp14> paginate a search response. Section 8.2 of <xref target="AUTHZEN"/> defines the
mechanism: a response that does not carry the entire result set includes a
<tt>page</tt> object with a non-empty opaque <tt>next_token</tt>, and the PEP retrieves the
next page by repeating the request with <tt>page.token</tt> set to that value, until
a response carries an empty <tt>next_token</tt>. Apart from the token, every value
in the request <bcp14>MUST</bcp14> remain identical across pages, and a PDP is entitled to
return an error if one changes.</t>
      <t>Section 8.2 of <xref target="AUTHZEN"/> states that pagination does not guarantee an
atomic snapshot, and that consequently, if items are added or removed while
paginating, results <bcp14>MAY</bcp14> be repeated or omitted between pages. A claim
assembled from a paginated response is therefore a best-effort enumeration:
the AS deduplicates across the whole set of pages rather than within each
(<xref target="dedup"/>), and an item added or removed mid-pagination may be reflected in
the claim or not.</t>
      <t>An AS <bcp14>SHOULD</bcp14> bound the number of pages it will follow for a single claim, so
that an unexpectedly large enumeration does not stall the token endpoint, and
where that bound is exceeded it treats the search as failed under
<xref target="failure"/>. Reaching such a bound is a sign that the data belongs at the
resource server rather than in the token; see <xref target="token-size"/>.</t>
    </section>
    <section anchor="failure">
      <name>Failure Handling</name>
      <t>A bound claim's search fails if the PDP returns an error status, if the
response is malformed or contains a result of the wrong type
(<xref target="type-mismatch"/>), if the page bound is exceeded (<xref target="pagination"/>), if the
request times out, or if the PDP cannot be reached.</t>
      <t>Where a bound claim's search fails, the AS <strong><bcp14>MUST NOT</bcp14></strong> render the claim, and
<strong><bcp14>MUST NOT</bcp14></strong> substitute a default, a placeholder, or an empty array for it.
An empty array asserts that the subject holds nothing (<xref target="empty"/>), which a
failed search does not establish.</t>
      <t>Whether the AS then issues a token without the claim, or issues none, is a
deployment decision, and this document specifies no default. An AS <bcp14>SHOULD</bcp14>
allow the choice to be configured per claim binding and per client, because
the correct answer differs by claim and by consumer: the absence of a claim
a resource server reads before granting access is a different event from the
absence of one used for display or personalization, and only the deployment
knows which it has.</t>
      <ul empty="true">
        <li>
          <t><strong>Implementer's note.</strong> Issuing the token without the claim is the common
behavior in authorization servers that support enrichment today, and it is
a defensible default: an enrichment dependency that is briefly unreachable
should not take down every token issuance that names the claim. The case
that argues the other way is a resource server that reads the claim as an
input to an access decision and treats its absence as a value rather than
as an absence. An AS cannot detect that from the request, so the choice
belongs with the operator, stated rather than assumed, and the two
behaviors should be nameable in configuration rather than implied by the
product's default.</t>
        </li>
      </ul>
      <t>An AS <bcp14>MAY</bcp14> serve a bound claim from a cache of an earlier successful search. A
cache hit is not a failure. Cached results are subject to the staleness
discussed in <xref target="consistency"/>, and a deployment that caches <bcp14>SHOULD</bcp14> bound the
cache lifetime by the lifetime of the tokens the results are rendered into.</t>
    </section>
    <section anchor="discovery">
      <name>Discovery</name>
      <t>This document registers no capability URN.</t>
      <t><xref target="ISSUANCE"/> draws the line at response vocabulary: an extension that adds
keys an AS must understand and enforce registers a URN, and one that does not
relies on the mechanisms already in place. This document adds no response
vocabulary at all, and, as <xref target="division"/> notes, requires nothing of a PDP that
<xref target="AUTHZEN"/> does not already require. What an AS needs to discover is
therefore already discoverable:</t>
      <ul spacing="normal">
        <li>
          <t>whether the PDP supports Resource Search at all is answered by the presence
of <tt>search_resource_endpoint</tt> in its metadata, which Section 9.1.1 of
<xref target="AUTHZEN"/> defines for exactly this purpose;</t>
        </li>
        <li>
          <t>what the bindings mean is answered by the registry of <xref target="iana-bindings"/>,
which is what makes an unconfigured pairing interoperate.</t>
        </li>
      </ul>
      <t>What remains is a question about the content of a deployment's policy: does
this PDP actually recognize <tt>member</tt> as an action on resources of type
<tt>group</tt>, or will a correctly formed search return nothing forever? As
<xref target="ISSUANCE"/> argues for the analogous question about gate actions, that
belongs on the authenticated evaluation surface rather than in an
unauthenticated metadata document, and the Action Search API of <xref target="AUTHZEN"/>
answers it: a search for the actions a representative subject may perform on
a representative resource of type <tt>group</tt> returns <tt>member</tt> where the binding
is live. This is a deployment-time check, and nothing in this document
requires it.</t>
    </section>
    <section anchor="error-mapping">
      <name>Error Mapping</name>
      <table>
        <thead>
          <tr>
            <th align="left">Condition</th>
            <th align="left">Authorization server behavior</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Gate evaluation denied (<xref target="ISSUANCE"/>)</td>
            <td align="left">Fail per <xref target="ISSUANCE"/>; discard results</td>
          </tr>
          <tr>
            <td align="left">Result of the wrong type</td>
            <td align="left">Treat as a failed search</td>
          </tr>
          <tr>
            <td align="left">Page bound exceeded</td>
            <td align="left">Treat as a failed search</td>
          </tr>
          <tr>
            <td align="left">Search endpoint not published</td>
            <td align="left">Treat as a failed search</td>
          </tr>
          <tr>
            <td align="left">Search failed</td>
            <td align="left">Do not render the claim; issue or fail per configuration</td>
          </tr>
        </tbody>
      </table>
      <t>A failed search that prevents issuance is a fault in the authorization
server's dependencies rather than a defect in the client's request, and the
token endpoint error codes of Section 5.2 of <xref target="RFC6749"/> all describe the
latter. No registered code fits. An AS <bcp14>SHOULD</bcp14> therefore respond with an HTTP
500 status, <bcp14>MUST NOT</bcp14> select a code that attributes the failure to the
client's request, and <bcp14>MUST NOT</bcp14> disclose which claim failed. <xref target="ISSUANCE"/>
names no code either for the case of a PDP that cannot be reached at all;
the two conditions are the same condition and should be answered together.</t>
    </section>
    <section anchor="example">
      <name>Example</name>
      <t>An authorization code request for two scopes, at a deployment that binds all
three registered claims. Only the JSON payloads are shown; as <xref target="ISSUANCE"/>
notes, the transport is a property of the deployment.</t>
      <t>The token request:</t>
      <sourcecode type="http-message"><![CDATA[
POST /token HTTP/1.1
Host: as.example
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient.example%2Fcb
&scope=files.read+files.write
]]></sourcecode>
      <t>The AS forms the evaluation of <xref target="ISSUANCE"/> and the three searches, and <bcp14>MAY</bcp14>
send them concurrently. The evaluation:</t>
      <sourcecode type="json"><![CDATA[
{
  "subject":  { "type": "user", "id": "U0405936" },
  "resource": {
    "type": "audience",
    "id": "https://api.example/files"
  },
  "context": {
    "client_id": "chatterbox",
    "acr": "urn:example:loa:2",
    "issuance": {
      "capabilities": [
        "urn:ietf:params:authzen:token-issuance"
      ]
    }
  },
  "evaluations": [
    {
      "action": {
        "name": "issue:access_token:authorization_code"
      }
    },
    { "action": { "name": "files.read"  } },
    { "action": { "name": "files.write" } }
  ],
  "options": { "evaluations_semantic": "execute_all" }
}
]]></sourcecode>
      <t>The <tt>groups</tt> search, sent to the PDP's <tt>search_resource_endpoint</tt>:</t>
      <sourcecode type="json"><![CDATA[
{
  "subject":  { "type": "user", "id": "U0405936" },
  "action":   { "name": "member" },
  "resource": { "type": "group" },
  "context": {
    "client_id": "chatterbox",
    "acr": "urn:example:loa:2",
    "audience": ["https://api.example/files"]
  }
}
]]></sourcecode>
      <sourcecode type="json"><![CDATA[
{
  "results": [
    { "type": "group", "id": "engineering" },
    { "type": "group", "id": "release-managers" }
  ]
}
]]></sourcecode>
      <t>The <tt>roles</tt> search differs only in its action and resource type:</t>
      <sourcecode type="json"><![CDATA[
{
  "subject":  { "type": "user", "id": "U0405936" },
  "action":   { "name": "assignee" },
  "resource": { "type": "role" },
  "context": {
    "client_id": "chatterbox",
    "acr": "urn:example:loa:2",
    "audience": ["https://api.example/files"]
  }
}
]]></sourcecode>
      <sourcecode type="json"><![CDATA[
{
  "results": [
    { "type": "role", "id": "deployer" }
  ]
}
]]></sourcecode>
      <t>The <tt>entitlements</tt> search is formed the same way, with action <tt>holder</tt> and
resource type <tt>entitlement</tt>, and returns no results:</t>
      <sourcecode type="json"><![CDATA[
{
  "results": []
}
]]></sourcecode>
      <t>The evaluation permits the gate and both scopes:</t>
      <sourcecode type="json"><![CDATA[
{
  "evaluations": [
    { "decision": true },
    { "decision": true },
    {
      "decision": true,
      "context": { "issuance": { "token_lifetime": 3600 } }
    }
  ]
}
]]></sourcecode>
      <t>The AS mints the access token. Its payload:</t>
      <sourcecode type="json"><![CDATA[
{
  "iss": "https://as.example",
  "sub": "U0405936",
  "aud": "https://api.example/files",
  "client_id": "chatterbox",
  "iat": 1791000000,
  "exp": 1791003600,
  "scope": "files.read files.write",
  "groups": ["engineering", "release-managers"],
  "roles": ["deployer"],
  "entitlements": []
}
]]></sourcecode>
      <t><tt>entitlements</tt> is present and empty because its search succeeded and returned
nothing (<xref target="empty"/>). Had it instead failed, the claim would be absent rather
than empty, and whether a token was issued at all would depend on how the
deployment has configured that binding (<xref target="failure"/>).</t>
      <t>Had the gate been denied, the searches would have been performed and their
results discarded, and no token would have been issued (<xref target="ordering"/>).</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Where <xref target="ISSUANCE"/> is also in use, its considerations apply in full.</t>
      <section anchor="enrichment-is-not-authorization">
        <name>Enrichment Is Not Authorization</name>
        <t>The rule of <xref target="ordering"/> is the security property this document rests on.
Section 8.1 of <xref target="AUTHZEN"/> is careful to say that a search result <bcp14>SHOULD</bcp14>, not
<bcp14>MUST</bcp14>, correspond to a permit, because a search and an evaluation may be
computed differently and may consider different variables. An AS that treated
a non-empty result set as a reason to issue would be relying on a guarantee
<xref target="AUTHZEN"/> declines to make, and would have replaced a decision with an
enumeration.</t>
        <t>The concurrency permitted by <xref target="ordering"/> makes this easier to get wrong in
an implementation than in a specification. Search results become available
before the decision does, and an implementation that assembles a token as
results arrive can find itself with a nearly complete token and no decision.
The results are inputs to claim construction alone.</t>
      </section>
      <section anchor="consistency">
        <name>No Consistency Across Calls</name>
        <t>The decision and the searches are separate requests against data that may
change between them, so a token can carry a decision made against one state
and claims computed against another. An AS keeps the window narrow by
issuing the calls concurrently (<xref target="ordering"/>) and by bounding any cache
lifetime to the lifetime of the tokens the results are rendered into.</t>
      </section>
      <section anchor="token-size">
        <name>Token Size</name>
        <t>A claim with thousands of members produces a token that may exceed the
header size limits of intermediaries on the path to the resource server, at
which point the failure moves from the AS to the network and becomes much
harder to diagnose. A deployment discovering that an enumeration is too large
to carry has learned that the claim is the wrong mechanism for that data, not
that it needs a larger token. The alternative is available and is the
ordinary AuthZEN deployment: the resource server consults the PDP directly at
request time, with the resource in hand, and asks a question whose answer is
one decision rather than an enumeration. Issuance-time claims and
request-time evaluation are complementary surfaces, and a claim that will not
fit in a token is a signal about which surface the deployment needs.</t>
      </section>
      <section anchor="privacy">
        <name>Privacy</name>
        <t>An authorization claim discloses to every party that receives the token the
complete enumeration of what the subject holds of that kind, including
memberships that have nothing to do with the audience the token is aimed at.
A group name can itself be sensitive, and a resource server needs only the
groups relevant to its own decisions.</t>
        <t><xref target="search-context"/> allows an AS to convey the issuance target so that a PDP
may scope the result set, but that input is advisory and a PDP may ignore it.
A deployment for which target scoping is a privacy requirement rather than an
optimization <bcp14>SHOULD</bcp14> bind claims whose resource type distinguishes the target,
so that the scoping is expressed where the PDP must honor it, and <bcp14>SHOULD</bcp14>
consider whether the claim belongs in the token at all.</t>
        <t>The searches themselves also disclose to the PDP that a token is being minted
for a subject, on every issuance and, where the affordance of <xref target="ordering"/> is
taken, on issuances that never complete. <xref target="ISSUANCE"/> discusses the
disclosure of authentication and access patterns to a PDP operated by another
party; binding claims multiplies the number of requests that disclosure
travels in, without adding a new category of disclosed information.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-types">
        <name>Issuance Authorization Entity Types</name>
        <t>IANA is requested to register the following in the "OAuth Token Issuance
Authorization Entity Types" registry established by <xref target="ISSUANCE"/>, whose
registration policy is Specification Required <xref target="RFC8126"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Applies to</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>group</tt></td>
              <td align="left">resource</td>
              <td align="left">A group whose members are subjects</td>
            </tr>
            <tr>
              <td align="left">
                <tt>role</tt></td>
              <td align="left">resource</td>
              <td align="left">A role assignable to subjects</td>
            </tr>
            <tr>
              <td align="left">
                <tt>entitlement</tt></td>
              <td align="left">resource</td>
              <td align="left">An entitlement held by subjects</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="iana-bindings">
        <name>Authorization Claim Bindings Registry</name>
        <t>IANA is requested to establish the "OAuth Authorization Claim Bindings"
registry, with a registration policy of Specification Required <xref target="RFC8126"/>,
recording for each authorization claim the AuthZEN Resource Search that
enumerates its members.</t>
        <t>The registry has the following fields:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Claim Name</td>
              <td align="left">The JWT claim name being bound</td>
            </tr>
            <tr>
              <td align="left">Resource Type</td>
              <td align="left">The <tt>resource.type</tt> of the search</td>
            </tr>
            <tr>
              <td align="left">Action Name</td>
              <td align="left">The <tt>action.name</tt> of the search</td>
            </tr>
            <tr>
              <td align="left">Change Controller</td>
              <td align="left">As in <xref target="RFC8126"/></td>
            </tr>
            <tr>
              <td align="left">Specification Document(s)</td>
              <td align="left">Where the binding is defined</td>
            </tr>
          </tbody>
        </table>
        <t>Registrations <bcp14>MUST</bcp14> use a Claim Name already registered in the "JSON Web Token
Claims" registry established by <xref target="RFC7519"/>, <bcp14>MUST</bcp14> use an Action Name matching
<tt>[a-z][a-z0-9_]{0,30}</tt>, and <bcp14>MUST</bcp14> use a Resource Type registered in the
registry of <xref target="iana-types"/>. The grammar is the one <xref target="ISSUANCE"/> imposes on
the names it expects to be usable as relation identifiers, and
<xref target="action-portability-note"/> gives the reason it applies here too.</t>
        <t>Initial entries:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim Name</th>
              <th align="left">Resource Type</th>
              <th align="left">Action Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>groups</tt></td>
              <td align="left">
                <tt>group</tt></td>
              <td align="left">
                <tt>member</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>roles</tt></td>
              <td align="left">
                <tt>role</tt></td>
              <td align="left">
                <tt>assignee</tt></td>
            </tr>
            <tr>
              <td align="left">
                <tt>entitlements</tt></td>
              <td align="left">
                <tt>entitlement</tt></td>
              <td align="left">
                <tt>holder</tt></td>
            </tr>
          </tbody>
        </table>
        <t>The Change Controller for all three is the IETF and the Specification
Document is this document, alongside Section 4.1.2 of <xref target="RFC7643"/> and Section
2.2.3.1 of <xref target="RFC9068"/>, which define the claims themselves.</t>
        <section anchor="action-portability-note">
          <name>Note on the Action Name Grammar</name>
          <t>Action names registered here are bounded by the same grammar <xref target="ISSUANCE"/>
applies to the short names it registers, so that the family keeps one rule
rather than two.</t>
        </section>
      </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="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7643">
          <front>
            <title>System for Cross-domain Identity Management: Core Schema</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="K. Grizzle" initials="K." surname="Grizzle"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The System for Cross-domain Identity Management (SCIM) specifications are designed to make identity management in cloud-based applications and services easier. The specification suite builds upon experience with existing schemas and deployments, placing specific emphasis on simplicity of development and integration, while applying existing authentication, authorization, and privacy models. Its intent is to reduce the cost and complexity of user management operations by providing a common user schema and extension model as well as binding documents to provide patterns for exchanging this schema using HTTP.</t>
              <t>This document provides a platform-neutral schema and extension model for representing users and groups and other resource types in JSON format. This schema is intended for exchange and use with cloud service providers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7643"/>
          <seriesInfo name="DOI" value="10.17487/RFC7643"/>
        </reference>
        <reference anchor="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </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="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="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="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="I-D.gazitt-oauth-authzen-token-exchange">
          <front>
            <title>AuthZEN Binding for OAuth 2.0 Token Exchange</title>
            <author fullname="Omri Gazitt" initials="O." surname="Gazitt">
              <organization>Independent</organization>
            </author>
            <date day="4" month="August" year="2026"/>
            <abstract>
              <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.

   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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gazitt-oauth-authzen-token-exchange-00"/>
        </reference>
      </references>
    </references>
    <?line 849?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to the participants in the OpenID AuthZEN interoperability events,
whose December 2025 identity provider scenario demonstrated AuthZEN search
operations populating token claims, and to the members of the AuthZEN Working
Group and the OAuth Working Group.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V965bbRpLm/3wKLL3TtmWSuvhearunWhdbs21JrZLXp6eP
jwokkkW0QIANgFWiS+pn2WfZJ9v44pKZAFm2Zmf7zFmdGTeLBBKZGZERX1wx
m81cX/aVP8kmp7t+/e+PnmbP22ZVVj5bNW2G75q2/CXvy6bOHlR5uemyss7+
7aeX2ely6bsue9m89nU3cfli0frLZJxj907cMu/9RdPuT7KuL1zRLOt8Q08v
2nzVzy7yX8q+nzU53TrDf37x9WzJd87u3HHdbrEpu46G6/dbuunJo5ePXblt
T7K+3XX9vTt3vr5zz+Wtz2kaZ365a8t+P3FXTfv6om12W/r2J78YTYyW2zfL
pqKpNXVHS9l1PJ53tJhP3Wu/p/uLE5fNMp4XPuTpCPYFzRUft01VLvf4JBPH
p87n7XLtLn298zRS9j6zyTJZ5OQnmn5ZX2Tf4SZ8v8nLir7n2fxr6fvVvGkv
8AMeQj+s+37bndy+jevwVXnp53bZbXxxe9E2V52/zSPcxp0XZb/eLTCokOD2
gAQT52TF2AW6OstWu6oSwk2ebdoy+47vmvBv9JS81vXQ70/qwm89/afW373N
Xx71rxf4e75sNvSYumk3dOMl79KLxw+++PKzr/Xjl5/fDR+/+OxT/fj1nS++
wsfTH19+T0x3wk9IOTpu7enzJ9nd+R2ZRJ+3F75PNquhOZbFvPb97W7rl93t
AY1n+bac3X11Z7Yq67yar/tNJeMUxM4n2b07976Y3bk7u3uXvwybxf9mdGA6
bBQ94cnD7HGzqwudkZ6UAwrLP9rIY7fhgidnZz+ePn3wiM7A7OH86LGhg7LL
66V3rqxXo22lvfxcP351994X9vHLO1/i441D9jjqM/9muc7rCxrLzWbE+ouu
b/Nl7xwNkYEeWeuJmhuieZf167zP8np4Yug8tJe+zbZVvsS6+ThkG79Z+LZb
l9tu6tqm8t2UtiAjvgE5abieRU/OwicX4cMzgvC4oic1ndczl63aZkPf+Ozs
wZMf3I6el3XLNXHePHvSZ12+77IrzAyX6C0kNjKwdEHTLbJ1gxF92WaXebXz
/LPz9bIpfDHlK8o+Kxr6oW54QBrP0wg3LbVZ9DmxAcbc0BxqR4eiavayqr4p
aAD6aZ/RxnmZfZ4VJW1kT7Jyij/yPl/knec9ySFKiqadgVXLVbmk+TavZV5Y
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
FiPJmmW+Lfu8AleRrl0T07BYpY289VfszM8n2e8Xy+3dz77VL7DgwZe2Z4Mv
ec8Ovzm4WTbxyFdHHhN2c/D9aKeH8z39y+Bv2/fky9//AbAom9396g/fOtjx
L5kxm6q52I/l/s6UO5i3G7mwz1jPTLMHJG0hphNtyj+41DIXynRLAi4iE9h8
hdv33bv72XM2irKHJkefs7n1EWnVj6f6o3sE7+aSeTz8/gi/n9lZOlVTxCYi
z3yg4BNPTQH6ff6VhZ8A7zhB+Vunmeg5N/Jfsbg7cSfZMxFCiZeRpfvNHpFZ
dtwLQFJ25AeYsVlKUlmsAZGwV+wDZZM8AG/fjawCSGzYBTRtDsqYzYQJsznQ
dc2ylJUwuj/qa2PUkEcfdvB7GB5CPEIWB0Q0FS2tDrUxwGqCW2uMprJ0HWEf
yXpWd8ychvC0pWb3MTX+CF95pMLp8RUIei2Xa4O36zx6A3U8qNZVebFrFcbT
fOQWEruMzrD5nkbyMHv8ZttDZqnvgw3rqCcEJOcLwrf0DY3EaAOCOjsFNCFl
V1Zlf3DYDLfA3LzBuyyOUn1qx9YjLW5D03JHVq5OsmRWHVw4C/WAiMUVCEuH
be6eEBxizsOPA32tcBYOEs+YllClZ7DPujYvihaHvSjJXGyhodd5dak+iDqA
P/a6BOcII8C8aGg3fcnsDW7jfYN9gG+EGtfXA3j6zoCWcAo8OOKookXycB0j
ODV7g6uAz2RkINY8pB7FQSTsABYWQUAzMxuESelkG8G3A7yr7khW6rg52Xn6
v7YvV4xAouOIvZYD2cjbQKKWcRJ0FuOURHxMjRn1iIt9xuas2+IZS6CnZAld
NnJ82H6lj+2EJRE47ElcEO+TGZAnf5IZ8I9//IPkxLIsZ/QY98lM/32SxX/h
y+G/T8a/f+LeqqrI3ia3vz2qVeIl9AHGVfaWn/7J+OnhOlYGh1/bTZ+4wddH
Jv/JscnzTXrr3bmSi9h/OMrBsMNbb9gh/Pv2N2698Wf+7d7c/BY++8jO6sfv
cetNM/r2fZ76n5jwp3M1Lk7M/feet/6nJvxZfCqr2vee8H/VNn0+jyblf+zW
398w4xvYf/DUL+ZJ2KyLP/xzn3rTD+9x65dzGNRiNfdQ3DC13+9W+ifxEZip
JrPjrV/Fo66+wPed8E1bMRsJleGtJGadO+s9HYhPeWKfiX3d5lcI2QKdLHct
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
V7R3jo4AAA==

-->

</rfc>
