<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gazitt-oauth-authzen-claims-01" 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-01"/>
    <author fullname="Omri Gazitt">
      <organization>Independent</organization>
      <address>
        <email>ogazitt@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="02"/>
    <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"/>. 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"
  },
  "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="provenance">
        <name>Provenance and Freshness</name>
        <t>A claim rendered by this profile carries no indication that it was rendered
by this profile. A resource server reading <tt>groups</tt> cannot distinguish a value
the AS obtained from a PDP at issuance from one cached at session
establishment or copied from an upstream token, and those have different
revocation behavior. What the profile improves is the AS's side of it: the
value now comes from a named PDP through a specified API rather than from an
unspecified directory, database, or hook. The token records none of that.</t>
        <t>Nor is the instant at which the underlying state held establishable from the
token. An AS asserting that these were the subject's groups at 14:02 is making
two claims of different kinds in one artifact. The first, that it issued the
token, is authoritative because it issued it. The second is an account of what
a third party's state contained at a moment only the AS observed, and the AS
is the party whose caching and propagation behavior a resource server would be
trying to evaluate. Trusting an issuer does not make it a witness to its own
freshness.</t>
        <t>This document therefore defines no provenance or freshness claim. A value the
AS asserts about its own timeliness would be relied on as though it were
verifiable, and it would not be. Meeting the requirement takes an attestation
from the party that holds the state, which is a signing relationship between
that party and the resource server rather than a claim an AS can mint.</t>
        <t>The property is not created here. It holds for every authorization claim in an
<xref target="RFC9068"/> access token, and for <tt>auth_time</tt>, <tt>acr</tt>, and <tt>amr</tt> in an ID
Token, all of which are the issuer's account of an event only the issuer
observed. Where a resource server needs a decision against current state
rather than an account of past state, the surface for it is the one named in
<xref target="token-size"/>: call the PDP at request time, with the resource in hand.</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="1" month="September" 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 a Policy Decision Point
   advertises support for the profile.

   The mapping is complete for grants whose request names a single
   party, 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-01"/>
        </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 874?>

<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>
    <section numbered="false" removeInRFC="true" anchor="document-history">
      <name>Document History</name>
      <section numbered="false" anchor="since-00">
        <name>Since -00</name>
        <ul spacing="normal">
          <li>
            <t>Added <xref target="provenance"/>, stating that an enriched claim carries no indication
of its own provenance and that the instant at which the underlying state
held is not establishable from the token.</t>
          </li>
          <li>
            <t>Removed the search context's carve-out for the enforcement point capability
declaration, and the declaration itself from the example, neither of which
<xref target="ISSUANCE"/> defines any longer.</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V9+Zbbxpnv//UUuPSd2JZJavHeip3paLGViSVFLV+fTE6O
GiSKTUQgwABgt+iW8izzLPNk9/t9S1UBZNuaOzNnztWZcdgkUNu3rzWbzVxf
9pU/ySanu379r4+eZs/bZlVWPls1bYbvmrb8Oe/Lps4eVHm56bKyzv7w08vs
dLn0XZe9bF77upu4fLFo/WUyzrF3J26Z9/6iafcnWdcXrmiWdb6h2Ys2X/Wz
i/znsu9nTU6vzvCfn309W/Kbszt3XbdbbMquo+H6/ZZeevLo5WNXbtuTrG93
XX/vzp2v79xzeetzWsaZX+7ast9P3FXTvr5om92Wvv3JL0YLo+32zbKpaGlN
3dFWdh2P5x1t5lP32u/p/eLEZbOM14UPeTqCfUFrxcdtU5XLPT7JwvGp83m7
XLtLX+88jZS9z2qyTDY5+YmWX9YX2Xd4Cd9v8rKi73k1/1z6fjVv2gv8gEno
h3Xfb7uT27fxHL4qL/3cHruNL24v2uaq87d5hNt486Ls17sFBhUQ3B6AYOKc
7BinQE9n2WpXVQK4ybNNW2bf8VsT/o1myWvdD/3+pC781tN/av3d2/plqn++
wN/zZbOhaeqm3dCLl3xKLx4/+OLLz77Wj19+fjd8/OKzT/Xj13e++AofT398
+T0h3QnPkGJ0PNrT50+yu/M7sog+by98nxxWQ2ssi3nt+9vd1i+72wMYz/Jt
Obv76s5sVdZ5NV/3m0rGKQidT7J7d+59QQg6u3uXvwyHxf9mRDAdDopmePIw
e9zs6kJXpJRyAGH5Rwd57DU88OTs7MfTpw8eEQ3MHs6Pkg0Ryi6vl965sl6N
jpXO8nP9+NXde1/Yxy/vfImPNw7Zg9Rn/s1yndcXNJabzQj1F13f5sveORoi
Azyy1hM0NwTzLuvXeZ/l9ZBiiB7aS99m2ypfYt9MDtnGbxa+7dbltpu6tql8
N6UjyAhvAE4armfWkzPzyYX58IrAPK5opqbzSnPZqm029I3Pzh48+cHtaL6s
W64J8+bZkz7r8n2XXWFleERfIbaRAaULWm6RrRuM6Ms2u8yrneefna+XTeGL
KT9R9lnR0A91wwPSeJ5GuGmrzaLPCQ0w5obWUDsiiqrZy676pqAB6Kd9Rgfn
ZfV5VpR0kD3xyin+yPt8kXeezyQHKymadgZULVflktbbvJZ1YUt/pxXz7Dxm
XndXtISyO1idCw/m3WvaebPKOlpAvwZUGHSlbBCDjva173rainMv1/QM8fEd
9pJtRXjwRrMXvmt27ZKgwPyPKZCmwE+K1UoB7pBSIX14BdtduyXIMuAWJXDK
5zTWcDUMQzpHOhnhtdOs8ESrtBBAMlcOTJjZ7SqCl6exgKQArL7McJYjbP3f
d3T2nRPsHb1cewCUiIqeJ/oC4GlHBBTFRjoO0B6Os2UsU+ZJsghIQ1Lm0u87
3s+GwL6gk91uqxLP08uEDs1VPc0W+0NoKS7xqvyb3rfEi8qfaQ+yA1+35XLN
YFjseoYbhjNGQCeyLCE8gUIur5r6oisLLzTQbLbEtGkBq5ZoABIzwvRwPrxi
o82FDWzKoqiI2XxAyN23TbFb8pLd9bVy6XfvCA34y+ze/N780/ldGqJbtuVC
BxxCNO97+mnXA0K1O0pTH52efYyVb5q62jMz8TdxiIXfN0IbRHiVvyCuXWQR
LJj+os1rPjBfrQxIJ/rLmD1lwp4ckGXAn3IgieC8LpKwwb8hKsWEhJ/QMQiJ
GPoDNundOc/TnU+zcx7+XJDxPJ3gPD0XJaWEu9FXcuCQkHTgeRc5HKsTnSH4
RUnk29KCq4oeab3Hszg24YYE1J+Y/BMmZ9DCloTZYWxlj4FvzbNTIuAzUoO2
u4rAVV+EjQkHAi8S9pLwqcnVmlBXTrqTKXvwFdL4/kZnR/ADurq+mU+yl8qX
Dlitjab8uc42TYdlR0Zb4kUnayB4gMYil8X7Q16b/a0pa2G4YGzblrSonB4E
LdTAfbelBwiQOTMAopMaY2Jnwh6FdNZNVRjN2Fo+7Ea0LWrjHASjugzgxyvt
ws4Y5v4NSdtqL2N363zLvLE7xm1d6/tdK2InYCYPkpPKRzKEkQJ8R87fvrVj
B3/a+hbqA3FW+S1nGp5n38lf4VmceZ6dC5mc62PTw5kxo6LEOQBiS8wVoRQH
+BB1aABb6Y9GOJA5xunxCiQEYZcqHpv8tZdPy6alVWwb6KGkExHUPAHUt/mi
8lFutruK+Q0QeNVUFWnJIFos8EAM0BAQN0wvtKQPPsh+WgOf9PSvPyjKS2aQ
74YwtdXmqVRcsaJD22mZZAgiPiM2JZDqd1syxxRexCgawbarRhaevnelAksP
TjCv1NPg/TKlKArxSRLlV8zaoR9mV82uKiCTaHOis2DKqFjlWDiLDb9aYQqs
sHYebCBX4ut7EtBG4mF10EYaQ4ctTC0ww55oSXZp8sThETr/K5qK4Idx8np/
le/n2fW16b2DczyXtZ1nZKsZtGUX0PwK+YoGkOOieSpBl4bYODHS4QaJGTa7
izVhJnOyuDEXll2qvBK1SjeVqlysQNCfolXJtIJU9AU44lhlUD1A1YZ1LgxX
dLIr4cNjXoj10wqdqkezxa6shiAmDt+pGgVptIQAjCyya5Lvox4IUpNpySLE
ITh3Jk/S6kFOqn4tIThWquAIX8WfsldoE7SmwHaIXEjfIVQTE/vvojdBjDQt
zdL1gryqjxNMOphmt271AzKndfG5MGoBZdzzh88FuAP6MnmVV63Pi71pc/Nb
t7AEpWLPwkDVZ9L0wH3IzCfrjvj7mJMqOEnK5W27x/QmQIFd4KAMYdF4YEOo
mM0zrHAg8jamUeuqWCl4XbO1Ifsnk0OPzF2VdMitqLuCKfPsESkVezkDWz1h
DKQxc0lwsAD0Y9qjsKoHDKGSQc6QxuNPTFF8HHTA6w9aX/HrUHzejTkvVN1o
3gMoKYmaKsA7C2BJFEl3VD1laiBspL0nzx7ouHLE2Gq3wwHVjqby8XSYcw3w
h7XsLtvVYr8W9wd6LADBBAgVoSs322pv2jhrQzjiBWEfCyrwlWmw2IDs4Iwq
MsgwFlQLQ180tK6aaOA02ggbyCDo/JhHNDmopeNDJHucaHrDJ6V7rpuRKAIf
NaWQ2RHO29hpln10fU2ozSj47t3Hc1rco2gp4ITKjhC7gCicZz8FzY5XQ3At
BZ33w0k7ZQo0PviVyAoo1fS2DqimNC1XYEdTtcAUYL0Z6BvWeI6wdXrrslnm
C1Ii2/0Ikqx/FZ3J7eQnF1+v+SiDPaX8jqRmxsI/h+yqWY0Shi8iUs8pQDyx
DAZKiAzGsDR/SLbKN2W1n2I/7+dB4e32gK6pL8rjg0biArfiKdNDEGQDFyP4
ymMzfZ2hDDJ/IUxGlN8/0pS7/MKL0IeshGOzyyY//Hj2cjKV/82ePuPPLx79
6ccnLx49xOez70//+MfwwekTZ98/+/GPD+On+OaDZz/88OjpQ3mZvs0GX7nJ
D6d/nsgOJ8+ev3zy7OnpHydHyLVlJQRiEfDakp4IhOqc2SGs4v/+wfN//7e7
nxHJ/C8ye+7dvfs1Har88dXdLz+jP0jWqkXA4JY/QbmOGAIdG1uMxGuW+bbs
8wpYRbJ2TUjDbJUO8tZfcDJ/Pcl+u1hu7372rX6BDQ++tDMbfMlndvjNwcty
iEe+OjJNOM3B96OTHq739M+Dv+3cky9/+zuoRdns7le/+9bBjn/JiNlUzcV+
zPd3JtyBvN3IhX3GcmaaPSBuCzadSFP+waWWuUCmW5LiIjyBzVe4fd+9u589
Z6Moe2h89DmbWx+RVP14qj+6R/BuLhnHw++P8PuZ0dKpmiK2EJnzgSqfmDVV
0O/zr8z8RPGOC5S/dZmJnHMj/xWzuxN3kj0TJpR4GZm73+wRmWXHvQDEZUd+
gBmbpcSVxRoQDnvFPlA2yYPi7buRVQCODbuAls1BGbOZsGA2B7quWZayE9bu
j/raWGvIow87+D1MH0I8QjYHjWgqUlodamMFqwlurbE2laX7COdI1rO6Y+Y0
hKcjNbuPofF7+MojFE6P70C013K5NvV2nUdvoI4H0boqL3atqvG0HnmF2C5r
Zzh8TyN5mD1+s+3Bs9T3wYZ1lBOiJOcL0m/pGxqJtQ0w6uwUqgkJu7Iq+wNi
M70F5uYN3mVxlOqsHVuPtLkNLcsd2bk6yZJVdXDhLNQDIhZXACwR29w9IXWI
MQ8/DuS1qrNwkHjWaUmr9Kzss6zNi6IFsRclmYstJPQ6ry7VB1EH5Y+9LsE5
whpgXjR0mr5k9Aa28bnBPsA3Ao3r64F6+s4ULcEUeHDEUUWb5OE61uDU7A2u
AqbJiEAseUg8ioNI0AEoLIyAVmY2CIPSyTECbwf6rrojWajj5eTk6f/avlyx
BhIdR+y1HPBGPgZitawnQWaxnpKwj6kho5K42Gdszrot5lhCe0q20GUjx4ed
VzptJyiJwGFP7IJwn8yAPPmTzIB//OMfxCeWZTmjadwnM/33SRb/hS+H/z4Z
//6Je6uiInubvP72qFSJj9AHGFfZW579k/Hs4TkWBodf20ufuMHXRxb/ybHF
80v66t25govQfzjKwbDDV284Ifz79ldevfFn/u3e3PwWPvvIaPXj93j1phV9
+z6z/icW/OlcjYsTc/+956v/qQV/FmdlUfveC/6fOqbP59Gk/I+9+tsbVnwD
+g9m/WKehM26+MN/76w3/fAer345h0EtVnMPwQ1T+/1epX8SH4GZajw7vvpV
JHX1Bb7vgm86itmIqQxfJTbr3FnviSA+5YV9JvZ1m18hZAvtZLlrIVZFH+vo
0eweQps55EZq97voRWDpvOeROr8h27aEN4++WPUIWPUnQzfUyKQvV46n+Vx9
A3NZIU1biuZhzs8dn2GqLEzNxVZitmyR98v1PHsE/9YCKpsLfgI420mCgYFZ
PNc2dag9imSTqRMllKNzxzzvdSNTZxzXYA+SWtks+UQp/r1pB9cfBNWAbeof
QhyQneG1mhepq4wePB3pkbLGRK2yMAo0EflxaP7GEN3MWVCFbAJSzsuL2nt8
hhaPUMsshuY02K2eYl6Qao7hbFwaraL/iy7jNOSiUZ9OYtJ0Lk+b4FZLz9RC
5aLJXJWdaEGJ5t8lKQW0et8SSTr2+A8jRxF2zYUPKl42OSXN2I+9L76+IFAy
ak/cihRxNUc5kmmezS4Nn+RwPuUFY15no0LBwrfRf/TlhD2V8+x7PslBwI6d
uW1bQn3Ng2oasyvU10R0tMrLVrVMBXzL0Q7xfSN4t/F5TYtf7SpVCWOgAeu7
8mRb5KIuhoyGY8reOCpFWLx8LZ68FExqZ7qvyMaEu91bZs7w9Sk7NsU8IOjo
crM0uiNOCbcvfQWoCVe5r+ENNknJRCnKnj4u6TPpbOVqz4ZqhF4e/YBMJY70
bJtDw0YxXsffAITm0gqe94REoz/+wEcdCQnjitcMYwb1v7SYDZ5DdJcOaFGV
3ZpPgmyMMq/zWbQPThxrrKDut2SkK9rOwXLO8Y1SNgBPf7u3xOLD/9ObIRpu
H/mThU35CTH8M/0kgxrdyxNDX8DwC/7beMNb514A7fVYV2VLnLltriSzQY1o
81GEpQnvsohsCec+Ag1t5/TJg4hu2EuIJafcJI0jc2BCsNF2TZBlIZBwDXql
Z7+nOmA3m7w9Hv8D/47gdynnIR75l3z281/xnzuzr1/99frO9NM7784TAQjb
VT34RYyEnLNJfHLuyKhdlW+M9Abz0xHAJJEFsLtIpoYQ+Ta7desRE8GHbB5z
8CnAWOOHpE0RxIgE1g14kfmUwcI4PUQeo7H4PNK0DrjfQhKa8QPNAKnUy9tJ
iA5ChYZIfTqC7yTfwav8mxymPTG8BMU47cQwCKdED2AUXfEJCJgQU8k9QT0s
5pLEe7PriMd1eVmoC1fHxp9TGog96vIXBlmDl3AyxsD/jUBzfVEJD9WYLp85
HzkseRpKdLRphN3QERUidhzqISQpaxW8D/WPyKFptCSux44Dc+CsfdPuzc3C
Pknk9eRdKQFgliHwLMtgNJD4O5I8GahqHh6IoiHomjuFHll5Xyzy5WsJpl2S
kV0Ip3sY/SEP1AuVq6axTP9mbSNxnvAq2UM7kMKJqyGyO94paU6dC44uC+zE
E1XPgQwqGkvyduCjOEEiyhw641QJq0ZuaInoA+TaUJzqQcYoj0hMYsB5ayjK
XhSgxsIDiDa8eVpikJWdstHJVMYDxlpUVEdnXgiRqjMpukWC165TWnTmuUX0
wJRQDQRCF4AqoMzvdiBx81fJsnsiJcTqx0CC86Ul7goxbooinJB9DhtDcW8A
62yxIyW8dogYgzb2iVYAqZp3TQ3pn9GxF+pIpYOmzerRzUfI8sPpn7O86hqe
P3g/h6poCN0a1KEmsDrnbNUJPpjaP5KaoHPOaiFwV5Y0EReC45GfbEh1LA4c
VryhGBbJxB5IXHSJIFCx/oezZ08z5NlznYKVMARhz9o/cteEPCzZFHbA4wbx
D+Ecamm8UNMGCgd/Itp7jNSdYMLIYqZGQ6ZDH+bCxhQRlWSsbFg84Kv55+KW
DCqc8ASNadACRhE/UTbP9c9z1pERCzf9jgNWCx/9kcy195YhaIJahJBLoh+j
cPRJHOFcNB7LnZLvyuJcNl/BH946JYCBFmGHA9By8mOjdK4g0zQYtrQ/DHkv
IdPqpSbYaGDTEGVDUK8EoH1ZQDXgeLulDYxzpNxBjpREg9tdEMX2RHThp7kd
pNHGLTmit7rTNHslXPAndd3Psi1ZBLCOUmVqyrKq2oVICxbvSU46eQiJqbDc
hC7yJUlA2u5MYBkDD0kC8UK+6UOaC3IZsCp4QSxvkEA+UmTMhJNtR20/RMH/
IxFt3fN0nMEHvAqh8tT0k3zqJG0KQIL7eq9hBPW4bKFx1ZJ44EaKwiGUj433
YcfQZmkliW5ikLoRwG/IgVfUYHOYaFHtfizAiNu5ofafUl2q3KYxQWN4EtEY
2xM2AmzLgWYjZxMeJ4qXtUPhKZlfOxDj/SxhKWT8DZnKwBYcEalhAyOi0rH6
SUR8gmTMw8a6KFHRRd207CPKFFqWbiSx1sC2NPMPqgsLcuXpknZtfEBR+Fwf
Po9sRpOOYza9CsskD/EX3FCsXbPgKwp2FLD3S0Zi4+5faA1vs5fQH99m/4ej
qUfsOJi5SGSDvUWHTiYOyif6ltHrLYMn5DZJuVE3TByRM9U8oLfC2Fhp1eRm
HjMk8Il4g4Afkq/4AYAfcUUOacEY/LXfh6GEdUtwWF1sUdH2vaTx1CoxxUBH
rqImQbBRjeE0sTD6GGM0m6PkspajYUeR+k4OY2peK9YfGkm8Lcz/PyFmTsCs
+yRpVJBfTk0CVr6YHObgT+zIZB5fhHenE2hL1TEfouRcuq5qeEaE+bpG8qo3
OQqvoP/zNKWPucqBC0UCj6k7klq9Orb6ENPWHLTwc0J/IT+v7DglVvxMolgj
clpvd+LJldQ/TgrjHM/AQQSjRimXSupcpEIEcFl22BmPdiSfKuh+jvNvkEST
+PlY8wYhARFKOThJlAh5n4xZGBaPCXtwyGPrGnUZWSYNWDFNqa8i49oXAS0X
nshlVVa9pe0rCjHwwwhBRCTzcwzfioO0uIM1bLw/49UeVc2DUGQw02Oix2fs
YxUmlxRRBKWVEzDc0AQVq/NiB49SlyCmqe508t3YPFUWKDjESKnlZXzkmx2c
OLA5TRY9qgspRTgjstHKm5jA9v3Ll8/PwhpHIoDNTkDQcvWFbaL4wgfyc+fC
jF/Z1l55nfGc1h+9ZTwELZETNPochRRs4fckjW4Lzd6+vHtbBrsdhZfszl5B
scUl20XIAgTDQpBB5djX87u/LsfyRccIL1kGtlZoAcRGoZdybclqVS5LyaVD
LvbzR8+x3ZCSF4fDocdiv91227T8gxu6KU+fPzHLVDJx8J4dTzwRsw5/4VCF
FAU/LB2ciSAxYTUDx4XdweCkDS/o1WlCV5aXkuQ+31fjIDFZ8HvtVnlZdUFk
4i/E+9+BzyjHSI1Hsl7hfEvjCYY/jn9LU99VxON0l5wxznn6qW3blxBx6Why
yJpmqdtk2+yZxrVIowghLudu3Tod8hSipmrHdnBaHKdRpkEOTIAuGx8jxtIT
rR3WAeZRymmRAuuMcPU9qbOYf4HBBqvCei+FMs+ZA52nVqMJca7SOx/I0Vd0
eADQubg7hvm4ctYR7Jwdamt2umbYE1K3YSUIMf/HTsOS+tPyOEACP7pQvRgM
g0EqUOQkyHD2eX0YoWB138kq1L3LTpdWZYdFuOFHVXCS6EA+Lz0LR6Rmaaf4
nARCkeIJwsAWpFBTgOuYspfEVaYWzFQzIYl0lit+nB9Tpb8JaVovNaWJeY2W
+7VaOtmXoY5IXbJc2SDSnqTSEqafpH5drfdTZ9pTD39X1TSvs6p8zb4MpHLn
RZlEBw3BhSVLvPZkCFdZCQtx1rIEw8X9totmCv1iuUu+Apg6fBEmMDMIjmMJ
i4AgEcXhOirohqZ4RAeOFoFmqmoIFJZ7x7xCff6sAhPEaSJ8PElmkXWHEgIt
T9zVdayXQOWC6i9qtBWFwg3hzXopyXESNBym3BnPIHFEmibHuR0BizPArppU
NbLkfRUFY3Wgt8yqZBvQDl2Ik3K5RCmhDsWvkHS+RB2iFjnVpS+CkG3LThLv
RJZ0fXA9WECaxEnBCjVECeGR5+hjwHspf2AlFGGARqlLHzSS5oUoFV42FdSs
RLCFDD6i1w7ZXlgDJ4I58cRo1YE6UavmAi8w3/eEtpxU0K2tbozVEvYqaRlV
diUGBEJ3alPw1BJBgyetDgz8NK2JsxyLKdAoMWM/HQn/abB5c7aHQQ/nLlhk
QWk324tVqsSQnWpBeW0mtAjWxL8FBg5jOvqTEiuKzSWeTaVkpytNyxI3+RYa
JNF9f+WljE+LBh+Dk7+wkopGj0WTDOh4NESnDj6Zl1Epld3mJUhXk1ijukMN
wDJTchLmKthTqKkT4M5N4lYRHWFcY8LcQ11J9KKTUefDSu+ktJmbJijQkzrC
5bJRDiw0QvoxU9WohHmqmtRQ0UqLw6E3QtGf8dkUoQCt8m9OHO87AusAxPzT
OUhoFsYcxoyiRcZKAaxW8Cop0hSOYC9Os/P/3foVUjOIA2yrfI+PjEVayr1t
y03e7s/dYMKkrgz6E4cwJCV2vSPeOQNJsfe7yhe+Ej8RHWPXofODOepOY2rJ
qNfBTp2QCdCEFuhcT8Z7BLsVVGf3kpDAioP9GriX4leOVeVtCQs9X7ZNF4r9
JC9qsXep+JkilLcceCal10Yp1uHN1O2CJdZGIlnoDkLCeEWbYi5Xph4wMI6Z
4GdsgmLCqkUfGhYzI2Cs80vP5rSa5Aelv05QDAxPg0LZKl+0gIU0fVj5XpiL
9PEIteB0atofI9rVwiWYszS8RMk6Z/yNXhiVfEOnbx0I3UmgdGYpFiIQpurT
ik7v+tBRpQrdVPYp6Rjm9ZST5L4UxgtEbkUJy1tio1stkoPq7EDp1V73o4LU
VpJ4xLUYvxLPrwtcJASuUx7D3FesiqOeC39ZslHIUCj7E2Z5dv6exRYzwaM8
AIIDvAP9Y5SBcAkRv8ZG17JqOAjWWJAARcYMJUWgqGhh5VpPbOnhbMJvuU+G
d6IjCMhDTtphK4mhY6IMjmkCwKUAgGtZioaRuplyF5DSnO91gk2pg/sIUqro
EivocB2kEUpkTiLcpWXSEWFKq4vYfkdwQ7h6OpXIPvaw/lB2nOtBsg60PNvo
38E3zMKt9RIvMAYkUkH5U6wt/fsurwSqIz962buhzA/Gkhh3A+bFdSAwftkF
xZTPJrFLTOKBoSquKRMZDdk2FhZV7Zwmo50vvS+kuBDh/R3XfPTq92SLFl0D
fLHbsiqUONDMXWsopEeyaQjRijDOVGwRXgeLdmtd1DlWC4zkudkAhIGcF1l4
U4sctQMVTSJug5WiC5K1M0lPwL9BdgP70k9GCYLDXlBBdV14U54R60P4rEQH
AoS04Rwc9DCwBbETXNqxhLJN0uOh0ndOi+iD87C/Kq3Wa5tflLUm1xUbiaVs
fS/+1dh1x2Js7qPr6/iKVFOepqoVQh+tJLBF/7lQY1D6+QFTOi3RSmWTI/Gi
GYDg/GMCS303yo8QbmQP5nwUMkkNY01btskksVDWYSydc9u8imxn8YlOVw1C
oPMU7d/isIMIRAjcXaCdVR+LqbWBCfdOsewXK7hUNyTTUMXiCMUvVhQ0z87I
WIZOmndLJRwyiX6sS3Tbyvg/4uDSBOOrfH9fOEt7aZghPkejYCebZpVPAvtx
FfJkeEB9wnIu6kzdbPu96uSkmfRQw+FC278zp+pA+/7Q7DGUuIHEO80hl74m
dRM9NBoWBnyd+aZiINBK6nguxbRcwiniBOW4leEGRJHYjUlcXHPJcFALHI9U
+YhexJklrDttkBtS+KpccBAC4vbHWrAENdq7yrsR8x7ZG+LZkfBgbO+Bjh2B
pM0Z0jnzxcaXdLvq17S6tWKefZ8X8QDSAAJnqJDh5ELiKHi0DDw9JqJYELMo
i973bJL2FHIS+Fc5PRGZNRnvqShlmDWKhev5BHbs88hNrj9I+ASYhEVE9Gs/
0B0ZN+eJsntv7MdObEYyrEBaJA1PZIMim4bNFNhwCHHadhB1UQSjc3LntJwY
IlbjhzjHTE662eak12XntX/Tv2LiP489ceAVJ1wmtnWpC8Nj2CAnZoGRHkTc
ZQqedS7j8YqsN4G2WiNOW1Yu2Vuw4w0F0hURo4RPNeoW6toQzZSHdOWw/YqJ
SXSxES1TEinYXMHiBn06kNEncUR4yrR1Eq+F3dyl2MnC7rokIHEEjGk4IpE9
AWwXu5wzID33NuuJlJdZV+fbbt2EKJy4x0PG+FSck147FeZFIbaGaAGFBDad
TYZ0AlM+gI4sFwEoeUnj9pm5I/gsgnfDIStis6iiBWPYXERYiVJpta80UtfP
PHxjfUo/J9bNh9WaoEVEg5H0uIpTYXGEvIyBWgE8IuBBFYdQFuXo3cchroAD
OTyLTVnMkmMPisGqEsWllCZDwoboPQLJWKwKt8NTtBlNW5flWeXvwF+oiarq
xu8aZ30vd7WpSyQKK8T9huwlBJV6ydYdey7F2jfpRWPKwrirHGSNmNCsw1pW
MXMbdCMRBfZAc52TaNMGTdI5JY6JjVzUMe7Fwtz6DWk0ZsxqU3CVifP1Pj2A
AIEkCHXlz16S2LLHshBi9nVRSQzH1gYOelSySlxK26SIK1S7hhl5guR23VSf
GTRr2uSVqpkN54BKJ85gSqiKdtU2YGIoHCJMG5oiwDidXPjeARDGGmOyEDWZ
S07CRZRdmIntRK0pcZ3CPpn/ipbBZxF0iVu3TCO4dcsUwIDcgj2DR1DWQUyO
dUpLCoUE5Qw8yfmeWmJ3oodwwg9RyelYPUH+VBJ4HWbVmRFMpyMKFA5GW825
oYEVbTgrv5BzUOTyYjn7ehytSivDdc+cm8QP1ewWAmKnAf7YB/PQaxA6QkFv
s5zZLGUNTiJrfdS2RKlKIrPb0JDBYu5shPC30hND4z9q+bet5MJxIZEoxV2s
Pce7i710jiTGcXIQ4DaufaAFwXHYmWnHOfcxdUaDuZYxnbELIQhXl4wPqcdl
QcABdWzijGk/yDauNDiZ9FiRyJCdNycrd7FvAumhWiKRpMEndRJoQ2X6xA0w
thIKaf5JYy38Or8sG2nmcqRDghmfGrpPgsHcezeJ3KFYAoBHg0dYSooDJ6MY
skWslvtgWi1Id1nR7nc1EzJUb9RMrIMqiiASYdqVedPMg2Y5YhjHSgGD8c1a
fd5hKJEp7cVOn1DLRuzRG91FeZEq3VyySGOFKF5eG0KE0mKmCpEo7O1SVGCv
iLjCEp7PxSU8ijxmxKJsTcP9vJaguSlPjPExpiMGo4iaUHogKfnw17BKNfQ5
SMZQEVVVsl0TXEijUjhWNnzLepR0MBBfG02jlYDct+qgQ/gwSZ8PMWmpRRla
RqowLcHJLfskbyskdLF12HUo+ROeh7wjeXAdnXnieCI2Ms8esDgYlOGGlGTt
3kdag0ems0PIcddp8d71NZgFkpMIPxFDESV3HNTkubsDjUfXVJUrzwFg7Wga
/k5zGAct/niFwUBDf0yW9w9paah0OGhsEhOo0CIs32r/k+zHF08PuoK1+VWn
y6g5ehkEfKwfERq13qxKLkXRoYe/dfVkvyurRHR2tbhvvHQQGiR00RqMoY1s
LpLoHE7R6E+w0rrQcJAgwNJU44HRE14U5g4QL0XS4AxLrSS2M5UM7dA+9B1z
Rs4WV9dv2gQxsyaI7r2aIGY/qWJKZ1GzrwJ5EQohTTU0pV5ftV9BP9za7iqR
yphduephB1rZVGz7G0gruBZchk38QnJZKc65mEwmYmScDEbjHDOjg6ez0hZy
Wt9xn3ehKksoYIKD4thiQ7EIW3mjupZpbAk0LMyF7p/qBHkpSRxJpZF1WRYT
VUVybMm+CDIPCdB1SCE4qKE60QwX7JCLlJf9jnOa4Xy9qNE9MfblFWa9NNfn
jb15WY9iSyc3FUXKKzZRaVMb2fARaEOI8rvstBuSrwqt0JeStIbmotl1482m
ZZRTwWoTCRZs3UEJ7DXWlqR7d7t2hRqSkTlCAmpXD18KaXhGmFGAaEr/sF19
Goy0hsxokhA8O2FbsnAWxRoUk6a6x8pgSW05eC5I8HFRrVk7sb4suDMVE5Fv
U+Gij6OZejPJ5EFtuLWQPN4k0yXhJWbej9i4+kHTF1D4jBA8n9K4Q4+qHUEV
S1Lm6b3vANoEXpoJ81GKJx/TmLAOWVVOf7hvKTVB1GDIFzfYb0i+l4y9wzgO
3nseTbhgv/3KK4oRIdWS/ZYh7/X9XtYf3mYPG62mGxpr9zWxDQFkO4ShrvIW
9vFwfHExSQAw6aVaykqkT3UgnHEvWNZrVI8tR54XUYKX4X2xXNjHrspbyHMf
OCzUHIfXnlmKcerPzUsW2vuxbAidKzCS1IzNs6dNWlDIAYBVGas+VWGJkkoz
Q4IDHfnO7vM7d4JTIDjNO06PZo5WqFxPIv/Yp2pflvd8fNsxlZPQsmq4zxhE
gOqADKFhu2ppC8yKDmbWXCrjHNyqbCDND90CKk3vO9V0gRuF9rkI9QhSKG0U
yg3Lgg4cxJrlygmBSwE467Wjog0s1NwXvNIrze+H27Q/olDK9Ry0SCeNOFIg
yrUC2TOzDzmats33VQMDhXVb9Ny8Py5Pc6r88K4RJWQDTrILWY72e+MASTWp
ZmtaWy5s4US6luG+nxmBokMn1OfPCI635TEgzW3SJtz3TQfu3s21Nt49EPE7
e8n3MeXSqw9HdPvN7OrqagZ+Ptu1lV4P4xyb2q/Air4Z5u/id/cb/Pebs231
pnr2e/+vf/rTnxd/Pvvipzdniyen7jd0WJwD8WrXlt/w5UT/9OnpP917TP8n
uGjLwhcL9xsGyDd858oc+ton8vGqLXsv/YNerpNSVA4VRC48qu6MlhTDz2K1
U6vgIL4hD2wGGbdipcZh9aj/1hGnuSb9aKICcHJCalo2wcHQxwkurkCL2LLA
Xz/e+ezO519/+sUkY51qYsKQfrvmHkrhPcuQnkzle3nfLnLKt6Ud0W0+C9yX
JENqIVkcUU70lQxAejzYz6J5YwPny5bX2dYnOuIJoevJvThi3HNHT/6FX7vW
C5wmog+E2fg7sAGMKQ0mxPKWAMfJIarYVVDv+H/fyaqu04HjgBEDJvToez3M
ODLBw/TsX3k/zdb2cj3Y3CtLPMbb/o1fEr98RYROb7t3Ec1CAxFrWZOUkGjg
9WZd/78Ea8Jus3S/ojYdw6w4Li998l+NKfa7oSwhyS9g6l+BWHagw8NQxSdi
2Xjl4UjS3kgJHtzwNOrsSPrMCLzEEdtuItgwgKr2ozFPrToopXO52Gd5TDIf
FD/9N8LU2pX8MlSx9P8vgcoLD0cioo1R+AA6w15Aoe7bTLWgF/ANGKIiCbRi
i5e6GNWsDfoJ2Z1B43yGA+Am2xksMRE41oWut7oP9m6jm4ZoFgdjHuWwOBBx
Vk7krsYEz2/6xbjy6PepfZ9gh7DnvA7IBP78yhxg9N2nX5By+c748hgicDOV
Wqg+6Kwq9aSq9BzslOYcyLGggDC+gXIGxCGksfsV2SeI/wt4Pilz7Pnul1/f
vcP/RK692YYvsVlZASA0lDVZKkn4IZEATBIpI5oe4TQicpi58PMByeWHFK8H
KDXC+JiCKt48Dk9ZgQ0XJwyyczRny9LE3JEYlSSiwCdbk/qKXbJGP02TV4JW
veCZxXRykguHYayCb3jRC3JeNK1KnWMykJhhcHLoxYNpvGotnR7NkxRUbV11
COwiTQ0LD7TFFYNiaE+T4LDv0kRVfihm4qkGWLahtCi0fgy3T+heRmPovsa3
TZCNYVexwnmAu4PEnO2S7hKDIjLO9rFKMgBwOXiNNXCWPLiF1OpfQ2TmSUf2
Yz/0TWjTkJ31M4kLjM24dInBqBi3Y+y4idE8Sfs4qEKVlGkPD7/WkB+9QNBy
luFMhiU5TaobpOOHcMm056WF9SXtIWGoktzgkPm5g3crRPTQ6YOexu92fkm4
j3P3F5XvBlnJHPVBE7UkOShNw4pNhuJtKVex8kdy+7jTU8hwGd19Fe9egptU
iSQiUuvZcy7RCg1HxTrXkDcRS9ut3iy2e4XXdgBh64o96NhFFrB6jMraaeiH
GYr1b1H3oQWEtc4idu8R2pBLJLP8ElftIuCXdGAJG4BzNmasHEzUZ5ZvE6Pa
eZdU9nG16JLTjCWlDgmLlsSF6NJes8d7M3mVTuMVjS9HUZpfLhVENYXQ1dNG
aFZCSdmpJO484NI9bkMWokwCkWEMMeU40m1We7qGC5UsjZT9sXpl295pk5i0
WEqTgmV7OAvJfEvQhJMabTxEbThiKLUaUnMUaMSe0uRQI4HX3uvFc1d00MSH
a5qD/mex50TZkBXNux9UnA55nkXs2cWopcESbHMhiKY20f9rUO0DXBR96Wup
rKTpHtPja0QCkZIYfkoa0YYhFhYK0aT/pFwGMmWZ4CVSnfJ4aY8bvXosdbnV
ZpOxlaTGgZM0TI0iW2pYuDpIY6ccweijL5O/5tS74AfrPN8C7kKuCPNodjtu
yzASSZBtB5a2Se8akXuCmdvEfnGtRyxOOqyp/1pDZX1SNEK0i6PtTGicniEr
B5fhcVsgzsxwEiHHjV5yv6zuSsqdxL0nmet5coEX1zumBQWyAber4zPJdcCD
y4Bx9e+wU9KS7/WpQ6FXLg18W1s3kJ8Lt/qkV2eSnc2UI10Zwwlz9Dykh6g6
q134OAkotEvquc7vygIUavHRSWlrF3rk7mcnd+5Jahbfh8fuzHBBSpRSr9mh
WNZSe6yXJsheuZPpNOCp9QyztUnWj1awS3QlqoT2tLbCtsYp2nZH+2zRQuTy
XuB8W4QOUnI4mkamely2aQQDzbvJaM0kkaQnnJ45BQCPZZWNmounNSJbYk4D
PDyS2WEi1/Vap9iEfv+0oXYnLa/0eg2IfYsGcx03Su4gPmqxS6z4wa2MhRyU
cEVPe9JCO3IZjlgE/qN5K6eaKgKIBByx60+s3gKsjxWCbqBGaM3ZQRWx427C
ZZ7W2l+F9JoFbf4H7we5yNYjrreYLGyfTmSvi1VKeWtdDuJdrQznQXtF+Buk
qifeOWJCymmuLwYKt4n+QqZkHpK7NFmGTUbVa4IOqjkhS1HL5D4qFAHIKjm6
zZlEx663keBnWjB3eO8SRuAWE68ACe4vvmytWDXftOdaQ/LkoXupb5HJwpTB
OXzWIJjR7MMupR3WUgc0IU85owtrIXGI3pKXkIh2k9fW614k+6iPeTL3Nu96
g5+wIIkNSxKjcUHwFC1CxTmleaon1jzXmzRK0ziPNZulc6J1aOdWaTV5hrj7
9QfJuFEa6wDNrsvB4WjNVrSjNYFRFTStSGOVTFBrkrLIKMIMWoEPCYTUAtpP
mbdJggqKow6aaHV6RxfxN21CxLG7NAC2YUkXaAQmggxSE8aj2QFrOXqJ+ma3
XLt1LqVGSCjJL+pGekSliZeaSRJEBefUxWxoAKZpJE0a/TpEx4P5W6EnrNm+
0QpXSIoiHzJx4t3xkjICO8vkhOEWz9GaWwZEl96CC3I3lT7T3nY493BDqJVa
x82dHCV5ve67C6hkBa44+ffEKTUdcPtpkh0iwiM0n3fA5kAwI9JILadwy6fm
BGg5PnsAeXD5Pm1H31p1Kpst6Ckq9BSqJ6yBUK6p8TjwFbtPYosdY6AowNA+
KCU7ZYQ0h/E7AZMpuuVlvtwfC1DytBaC7UQMgh0m/Dy0zAjatYR1zV5K0U8l
fqq1KKe1YnPoI1MtrIHektwJr+IjLf0FITQRruYuTpaCUynZ64LUaq1slG7X
XNzAlt4C2KTVkXbix1mmsVqnmlbaQ89EbtpeJ9wbae0Y30nbIEuWk/vqL33k
30kzw1AxyBo7V18ea/4mVchCfpxzmradi8U3eF3aw0maeYoMyUVtOrP2Y9Mo
MOPHQNwP8d8hqrUJF0lpumMZDUOhpffs2uZCpeTapyvxb+CF5Dbyaa2hZBxy
z7hwgasmkge3TJpQp3njmvWUFlSox1B1hGBYwzomPOFLKeA4CykJMexmcApI
l3aedFrBYq0MQ7F/gDfzoLip2AHniDPNce9qHiUUl8r00ubVCG98mbemrwqb
1S1oL5oke8s8C6rJbNmTXesFJ9ioJtZJN3mx7vkmtP39eKOfwJx7hujFeuu0
yif4JkSChKWgxe+l58ZI05CRjg6i3Laj9mTv0cwXjeQJGhSgXMTGE3CGPjl9
enrgCCU+F25fHmZVPZJGwMg9gG3P2YdAUHSE4aHKkJsil0lb0oUI83DdhWLS
5BmGVw3FpnQ3TznJjt6LwT629GIfa3zIz2qoJzTKP0t9aHYpbSG5QF/dvfeF
3qmhDVdP432Hb7OHnB+01fSn43dpoAFrIF56X/moULXpVUn2dBdv2Th4le81
kNCi9FFvRm+NLtpIXx5ehWCXGiSvc9fgwVGP7hp6YWetgE5uHjoK6wCSFLa/
NMPEQBRCgdkxmCFv61dhNnXiadDMT+2idERCs/qoCtM4RZhzPJMrPiXZV672
tFbfeibrfHyFC/el6Rh3HnOLmhvxJdzY8hTCVZrz/uGnl2nreOGJkhao2YWy
UkVLiYQPu0oMunXxW5pBmkwz7Ah9+MYDcXYiyYiQr+I7Dk+70OxEzlryCAcg
eajW+Ucd0iZ/GieEAlessTxfAhOh3En+mgQWkmOJueIhbcu4xrCLvtwb+4u8
AQ2cPsdlzNNksnpwPFxaBy3q+CUtSabd6NovBsjBIt2RNG1hlO9EwbdbZBLz
bxh54ltgoEWxZzLceiEFnFY7Txbbwq6TqtRsSVu6y7WkAvMZctW0qmGGPDbc
UBq0UQ2klPGGV4FhAw/vk5r0PdKVPbpu+S65c0hRa4yeA8T7n790CAd+iNms
arBhjfQyBcSTRy8fB5/JAMed4bg8mrikphykuGDfqwXkPpvfTXJM9aqcpLmU
s0uWh3cwm4tHiCXqYKlmxZYIoiHxTt/0vL+z+4k+uAnuZL2kd7GMr5mBcGLO
E4sOtNXJ4cVHLrkPmB9cIyEyYGsoYklaeqztbnoNcXC/N3R5SPVkMuppm4Qv
GW6j4Stgl6jcq3xxwSB31yeiJfnim8mKdE0/4ahPXr8Oi5Gup+U252xkOaln
W18/eRgkQHKhh5T7SO7y1Im8fkgGG6ti9+7c+zwLFyFoR2A0CfW4QBDBrY1c
LwNZOGx95sKddp11lxB7jINHemGQNsTs1wfXYNlgPzUte6e/Y3XCMFSErP6W
8W9S5mS4+j2dP2mBR45LC9TLul0tv5kg+2QidwqecXO02Z07x8/4VnbKJe7X
10lo553UxA19KYiCW7bt8ciOVNyYNbgdRpHiPQDvEyHAReKQuuWocHcQKlAX
C+3hhVbnJ/JP7c4POW5+6WdQqS0n2if3uot3KpaI0cwIJedtUnmqIVf70qzn
sA7Ni4m3AZkbk2uHjlwshqgdmAwSpf8vKnZQkyiXAAA=

-->

</rfc>
