<?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-mcguinness-oauth-insufficient-claims-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="OAuth Claims Challenge">OAuth 2.0 Insufficient Claims Challenge</title>
    <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-insufficient-claims-00"/>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="27"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>token exchange</keyword>
    <keyword>claims</keyword>
    <keyword>assertion</keyword>
    <keyword>bearer</keyword>
    <abstract>
      <?line 64?>

<t>This specification defines an OAuth 2.0 challenge mechanism by which
an Authorization Server or Protected Resource signals that a
credential presented by a Client is otherwise acceptable but lacks
claims required to fulfill the request. A new error code,
<tt>insufficient_claims</tt>, together with a <tt>required_claims</tt> parameter
that enumerates the missing claims, lets the recipient signal what
is needed. The same challenge is used in Token Endpoint error
responses, in Bearer authentication challenges at Protected
Resources, and (optionally) in OAuth 2.0 Protected Resource
Metadata.</t>
      <t>The challenge is intentionally decoupled from how the Client
responds. For back-channel re-issuance grants (OAuth 2.0 Token
Exchange and Refresh Token), a Client uses the <tt>requested_claims</tt>
Token Endpoint request parameter defined here. For grants that may
require end-user interaction (authorization_code, device_code,
CIBA), a Client uses an applicable front-channel claims request
mechanism, such as the OpenID Connect <tt>claims</tt> request parameter.</t>
      <t>A motivating use case is just-in-time account provisioning by a
Resource Authorization Server receiving an identity assertion under
the Identity Assertion Authorization Grant.</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-mcguinness-oauth-insufficient-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/mcguinness/draft-mcguinness-oauth-insufficient-claims"/>.</t>
    </note>
  </front>
  <middle>
    <?line 90?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth 2.0 Clients present credentials at two natural recipients: a
Token Endpoint (an assertion or subject token used to obtain an
Access Token) and a Protected Resource (an Access Token used to
invoke an operation). Either recipient may require specific claims
about the subject (an identifier, a directory attribute, a policy
attribute) that the credential does not carry, even though the
credential is cryptographically valid and structurally acceptable.</t>
      <t>There is currently no interoperable way for either recipient to
signal which claims are missing, nor for the Client to convey that
requirement to whoever issued the credential. Coordination happens
out of band per deployment pair, limiting composability across
Authorization Servers, Clients, and resources.</t>
      <t>This specification separates the challenge (universal across
recipients and grants) from the Client's response (grant-specific).
It defines:</t>
      <ol spacing="normal" type="1"><li>
          <t>An OAuth 2.0 error code, <tt>insufficient_claims</tt>, that a recipient
returns when a presented credential is otherwise acceptable but
lacks claims required to fulfill the request. Used in Token
Endpoint error responses (<xref section="5.2" sectionFormat="of" target="RFC6749"/>) and Bearer
authentication challenges at Protected Resources
(<xref section="3" sectionFormat="of" target="RFC6750"/>).</t>
        </li>
        <li>
          <t>A <tt>required_claims</tt> parameter (a JSON array of claim entries)
carried in Token Endpoint error response bodies, in JSON response
bodies accompanying Protected Resource Bearer challenges, and
(optionally) in OAuth 2.0 Protected Resource Metadata
(<xref target="RFC9728"/>).</t>
        </li>
        <li>
          <t>A <tt>requested_claims</tt> Token Endpoint request parameter that a
Client includes on a back-channel re-issuance request to obtain a
credential carrying the indicated claims. Defined for use with
the OAuth 2.0 Token Exchange (<xref target="RFC8693"/>) and Refresh Token
(<xref section="6" sectionFormat="of" target="RFC6749"/>) grants only.</t>
        </li>
        <li>
          <t>A <tt>required_claims</tt> Protected Resource Metadata parameter
(<xref target="RFC9728"/>) by which a Protected Resource advertises the claims
it may require, letting Clients request them at Access Token
issuance and reduce runtime challenges.</t>
        </li>
        <li>
          <t>A <tt>requested_claims_parameter_supported</tt> Authorization Server
Metadata parameter (<xref target="RFC8414"/>) by which an Authorization Server
advertises that it recognizes the <tt>requested_claims</tt> request
parameter at its Token Endpoint.</t>
        </li>
      </ol>
      <t>The challenge applies to credentials presented at the Token Endpoint
under any grant (see <xref target="token-endpoint"/>) and to Access Tokens
presented at Protected Resources (see <xref target="resource"/>). The Client's
response is grant-specific:</t>
      <ul spacing="normal">
        <li>
          <t>For OAuth 2.0 Token Exchange and Refresh Token grants, the Client
sends a back-channel Token Endpoint request including the
<tt>requested_claims</tt> parameter (see <xref target="request-param"/>).</t>
        </li>
        <li>
          <t>For grants that may require end-user interaction
(<tt>authorization_code</tt>, device authorization, CIBA, and similar),
the Client initiates a new authorization request and conveys its
claim requirements via an applicable front-channel claims request
mechanism, such as the OpenID Connect <tt>claims</tt> request parameter
(Section 5.5 of <xref target="OpenID.Core"/>; see <xref target="rel-oidc-claims"/>). The
<tt>requested_claims</tt> parameter defined here is not used with these
grants.</t>
        </li>
      </ul>
      <t>The mechanism is opt-in and degrades gracefully. A recipient opts
in by returning <tt>insufficient_claims</tt>; a Client that does not
recognize the error treats the response as it would any other
failure. An Authorization Server that does not recognize the
<tt>requested_claims</tt> request parameter ignores it per
<xref section="3.2" sectionFormat="of" target="RFC6749"/>; the Client may then receive a second
<tt>insufficient_claims</tt>, which per <xref target="no-loop"/> it treats as a terminal
failure. The Authorization Server remains the policy authority for
claim release and does not release any claim it would not otherwise
release.</t>
      <section anchor="why-a-new-error-code">
        <name>Why a New Error Code</name>
        <t>OAuth defines distinct error codes for distinct failure modes:
<tt>invalid_grant</tt> (<xref target="RFC6749"/>) when a token is rejected,
<tt>insufficient_scope</tt> (<xref target="RFC6750"/>) when a valid token's scope is
insufficient, and <tt>insufficient_user_authentication</tt> (<xref target="RFC9470"/>)
when a valid token's authentication context is insufficient. The
condition addressed here is parallel to <tt>insufficient_scope</tt> but
applies to claim content rather than scope, and arises at both the
Token Endpoint and the Protected Resource. A distinct error code
lets the Client distinguish a recoverable claim-negotiation failure
from a hard rejection of the credential.</t>
      </section>
      <section anchor="motivating-use-cases">
        <name>Motivating Use Cases</name>
        <section anchor="just-in-time-account-provisioning-at-a-resource-authorization-server">
          <name>Just-in-Time Account Provisioning at a Resource Authorization Server</name>
          <t>A common deployment pattern, formalized by the Identity Assertion
Authorization Grant <xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>,
conveys an identity assertion (the ID-JAG, a signed JWT) from an
Identity Provider (IdP) Authorization Server to a Resource
Authorization Server (RAS) governing a downstream resource. The
Client obtains the ID-JAG from the IdP AS via OAuth 2.0 Token
Exchange (<xref target="RFC8693"/>) and presents the ID-JAG to the RAS via the
JWT Bearer assertion grant (<xref target="RFC7523"/>).</t>
          <t>If the subject has no account at the RAS, the RAS may perform
just-in-time (JIT) provisioning from the claims; if an account
exists, the RAS may update it. Either operation requires a
sufficient set of identity claims, and the required set varies per
RAS. The mechanism defined here lets the RAS enumerate the claims
it needs in an <tt>insufficient_claims</tt> response, and the Client
forward that requirement to the IdP AS on the follow-up Token
Exchange.</t>
        </section>
        <section anchor="resource-side-claim-requirements">
          <name>Resource-Side Claim Requirements</name>
          <t>A Protected Resource may require subject claims at request time that
were not provisioned into the Access Token at issuance: for example,
an authorization service whose policy depends on attributes the
Client did not request via <tt>scope</tt>, or a downstream resource that
needs claims an upstream Authorization Server did not include. The
mechanism defined here allows the Protected Resource to challenge the
Client to obtain a richer Access Token before retrying.</t>
        </section>
        <section anchor="multi-resource-refresh-tokens">
          <name>Multi-Resource Refresh Tokens</name>
          <t>A Client holding a Refresh Token that issues Access Tokens for
multiple audiences (<xref section="6" sectionFormat="of" target="RFC6749"/>) may need different
claim sets in the Access Tokens it obtains for each audience. The
<tt>requested_claims</tt> parameter on the Refresh Token request lets the
Client request the audience-appropriate claim set for the next
Access Token without initiating a new authorization flow.</t>
        </section>
        <section anchor="other-assertion-based-grants">
          <name>Other Assertion-Based Grants</name>
          <t>Any assertion-based grant defined by <xref target="RFC7521"/>, including JWT
Bearer (<xref target="RFC7523"/>) and SAML 2.0 Bearer (<xref target="RFC7522"/>), shares the
"incoming credential carrying claims" shape with Token Exchange.
This specification's error code applies uniformly to those grants;
how the Client obtains a richer assertion is governed by the
assertion provider's protocol and is out of scope for this document.</t>
        </section>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This document uses the following terms from <xref target="RFC6749"/>: Client,
Authorization Server, Access Token, Token Endpoint, Protected
Resource, and error response.</t>
      <t>This document uses the following terms from <xref target="RFC8693"/>: Token
Exchange, subject token, and requested token type.</t>
      <t>This document uses the term "assertion" as defined in
<xref section="1.2" sectionFormat="of" target="RFC7521"/>: a package of information that allows
identity and security information to be shared across security
domains.</t>
      <t>This document additionally uses the following terms:</t>
      <dl>
        <dt>Issuing Authorization Server:</dt>
        <dd>
          <t>An OAuth 2.0 Authorization Server that issued, or can re-issue,
the credential the Client uses in an OAuth 2.0 request. In the
back-channel retry path (<xref target="request-param"/>), the Issuing
Authorization Server is the one the Client targets with
<tt>requested_claims</tt>. In the Protected Resource case (<xref target="resource"/>),
it is the Authorization Server that issued the Access Token
presented at the resource.</t>
        </dd>
        <dt>Processing Authorization Server:</dt>
        <dd>
          <t>The Authorization Server that receives a Token Endpoint request
from the Client and originates the <tt>insufficient_claims</tt> error
response.</t>
        </dd>
        <dt>Claim:</dt>
        <dd>
          <t>An attribute of the subject or the assertion, as defined in
<xref section="4" sectionFormat="of" target="RFC7519"/> for JWT-formatted tokens and generalized
here to any token format that carries named claims.</t>
        </dd>
      </dl>
    </section>
    <section anchor="the-insufficient-claims-challenge">
      <name>The Insufficient Claims Challenge</name>
      <t>The <tt>insufficient_claims</tt> error code (<xref target="error-code"/>) and the
<tt>required_claims</tt> response parameter (<xref target="response-param"/>) define a
common challenge that applies in two contexts:</t>
      <ul spacing="normal">
        <li>
          <t>OAuth 2.0 Token Endpoint requests under any grant that presents a
claim-bearing credential, including the Token Exchange grant
(<xref target="RFC8693"/>), assertion-based grants (<xref target="RFC7521"/>, <xref target="RFC7522"/>,
<xref target="RFC7523"/>), and the Refresh Token grant
(<xref section="6" sectionFormat="of" target="RFC6749"/>); see <xref target="token-endpoint"/>.</t>
        </li>
        <li>
          <t>Access Tokens presented at OAuth 2.0 Protected Resources; see
<xref target="resource"/>.</t>
        </li>
      </ul>
      <t>The HTTP envelope and the carrier of the structured response differ
per context, as described in <xref target="token-endpoint"/> and <xref target="resource"/>.
For Client behavior on receiving the error, see <xref target="client-remediation"/>.</t>
      <section anchor="error-code">
        <name>Error Code</name>
        <t>The error code is:</t>
        <dl>
          <dt><tt>insufficient_claims</tt>:</dt>
          <dd>
            <t>The credential presented by the Client is acceptable but does not
carry claims sufficient for the recipient to fulfill the request.</t>
          </dd>
        </dl>
      </section>
      <section anchor="response-param">
        <name>Response Parameter</name>
        <t>A recipient <bcp14>SHOULD</bcp14> include a <tt>required_claims</tt> parameter enumerating
the claims it requires.</t>
        <t>In a JSON response body, the value of <tt>required_claims</tt> is a JSON
array of claim entries. Each entry is either a JSON string or a
JSON object.</t>
        <t>A bare-string entry identifies a claim by name and indicates that
the named claim is required; any value is acceptable. For example:</t>
        <sourcecode type="json"><![CDATA[
"required_claims": ["email", "given_name", "family_name"]
]]></sourcecode>
        <t>An object entry adds an optional value constraint and has the
following members:</t>
        <ul spacing="normal">
          <li>
            <t><tt>name</tt>: <bcp14>REQUIRED</bcp14>. A JSON string identifying the claim name.</t>
          </li>
          <li>
            <t><tt>value</tt>: <bcp14>OPTIONAL</bcp14>. A JSON value the claim <bcp14>MUST</bcp14> equal.</t>
          </li>
          <li>
            <t><tt>values</tt>: <bcp14>OPTIONAL</bcp14>. A JSON array of values, one of which the
claim <bcp14>MUST</bcp14> equal.</t>
          </li>
        </ul>
        <t>An entry <bcp14>MUST NOT</bcp14> include both <tt>value</tt> and <tt>values</tt>. An entry that
includes neither is equivalent to the bare-string form. For example:</t>
        <sourcecode type="json"><![CDATA[
"required_claims": [
  "email",
  {"name": "email_verified", "value": true},
  {"name": "tenant_id", "values": ["t-123", "t-456"]}
]
]]></sourcecode>
        <t>A claim name identifies a claim as it appears in the credential
(for example, the JSON member name in a JWT). Claim names use the
<tt>scope-token</tt> syntax of <xref section="3.3" sectionFormat="of" target="RFC6749"/>: visible ASCII
characters excluding space (<tt>%x20</tt>), double-quote (<tt>%x22</tt>), and
backslash (<tt>%x5C</tt>). Claim names are case-sensitive. The order of
entries in the array is not significant.</t>
        <t>This document does not define essential/voluntary semantics; all
entries are required. Profiles needing richer expressivity <bcp14>SHOULD</bcp14>
define their own parameter rather than overload <tt>required_claims</tt>
(see <xref target="rel-oidc-claims"/>).</t>
        <t>The same JSON array shape is used wherever this document conveys a
claim list in a JSON document, namely in Token Endpoint error
response bodies (<xref section="5.2" sectionFormat="of" target="RFC6749"/>), in Protected Resource
error response bodies (<xref target="resource"/>), and in Protected Resource
Metadata documents (<xref target="prm"/>). This aligns with the
<tt>scopes_supported</tt> and <tt>claims_supported</tt> metadata conventions of
<xref target="RFC8414"/> and <xref target="OpenID.Core"/>.</t>
        <t>When the same list is carried as the <tt>requested_claims</tt> parameter
on an <tt>application/x-www-form-urlencoded</tt> Token Endpoint request
(see <xref target="request-param"/>), the JSON array value is serialized to a
JSON string and percent-encoded per <tt>application/x-www-form-urlencoded</tt>
rules. This follows the precedent of <tt>authorization_details</tt>
(<xref target="RFC9396"/>). Characters that have special meaning in JSON or in
form bodies, including <tt>[</tt>, <tt>]</tt>, <tt>"</tt>, and <tt>,</tt>, <bcp14>MUST</bcp14> be
percent-encoded.</t>
        <t>The <tt>required_claims</tt> parameter is <bcp14>OPTIONAL</bcp14>. A recipient that cannot
or does not wish to enumerate the missing claims <bcp14>MAY</bcp14> return the
error code without it. In that case the Client has no
machine-readable basis for retry and <bcp14>SHOULD</bcp14> treat the response as a
terminal failure unless out-of-band information is available.</t>
        <t>A recipient <bcp14>MUST NOT</bcp14> include in <tt>required_claims</tt> any claim name
whose semantics are not defined by a registered claims registry
(such as the JSON Web Token Claims registry), a registered profile
(such as OpenID Connect Core <xref target="OpenID.Core"/>), or prior agreement
with the population of Issuing Authorization Servers it expects to
interoperate with.</t>
        <t>Claim names in <tt>required_claims</tt> are interpreted in the context of
the (issuer, subject, audience, Client) tuple of the request, in the
same way as the <tt>scope</tt> parameter (<xref section="3.3" sectionFormat="of" target="RFC6749"/>); see
<xref target="rel-scope"/>. The Authorization Server's claim release policy, the
content and format of issued claims, and the meaning attached to a
given claim name are all scoped to that tuple.</t>
        <t>Entries forwarded from a <tt>required_claims</tt> field into a
<tt>requested_claims</tt> parameter on a retry Token Endpoint request
retain their meaning only when both of the following hold:</t>
        <ul spacing="normal">
          <li>
            <t>The audience, subject, and Client are preserved between the
original request and the retry.</t>
          </li>
          <li>
            <t>The Issuing and Processing Authorization Servers share an
understanding of the claim names and constraint values involved.</t>
          </li>
        </ul>
        <t>A recipient <bcp14>MUST NOT</bcp14> include the same claim name in more than one
entry of the array. A Client receiving duplicate entries for the
same claim name in <tt>required_claims</tt> <bcp14>MUST</bcp14> treat the value as
malformed and <bcp14>MUST NOT</bcp14> forward it as <tt>requested_claims</tt>. An
Authorization Server receiving duplicate entries for the same claim
name in <tt>requested_claims</tt> <bcp14>MUST</bcp14> treat the parameter as malformed.</t>
      </section>
      <section anchor="token-endpoint">
        <name>Returned at the Token Endpoint</name>
        <t>A Processing Authorization Server receiving a Token Endpoint request
<bcp14>MUST</bcp14> first validate the presented credential per its own acceptance
rules and the rules of the grant profile in use. If the credential
is rejected for cryptographic, audience, issuer, type, or freshness
reasons, the server <bcp14>MUST</bcp14> respond with the applicable error from
<xref section="5.2" sectionFormat="of" target="RFC6749"/> (typically <tt>invalid_grant</tt>) rather than
the error defined here.</t>
        <t>If the credential is acceptable but does not carry claims sufficient
to fulfill the request, the Processing Authorization Server <bcp14>MAY</bcp14>
respond with <tt>insufficient_claims</tt>. The error code is returned in
the <tt>error</tt> parameter of the Token Endpoint error response,
formatted per <xref section="5.2" sectionFormat="of" target="RFC6749"/> with HTTP status code 400.</t>
        <t>Example error response:</t>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "insufficient_claims",
  "error_description": "The presented credential is missing required claims.",
  "required_claims": ["email", "given_name", "family_name"]
}
]]></sourcecode>
      </section>
      <section anchor="resource">
        <name>Returned at the Protected Resource</name>
        <t>When a Protected Resource receives a request bearing an Access Token
that is otherwise valid but does not carry claims sufficient to
fulfill the request, the Protected Resource <bcp14>MAY</bcp14> return an
authentication challenge containing the <tt>insufficient_claims</tt> error
code.</t>
        <t>The challenge follows <xref section="3" sectionFormat="of" target="RFC6750"/>. The Protected
Resource <bcp14>MUST</bcp14> respond with HTTP status 403 Forbidden. The response
<bcp14>MUST</bcp14> include a <tt>WWW-Authenticate</tt> header field with the <tt>error</tt>
parameter set to <tt>insufficient_claims</tt>. The response <bcp14>MAY</bcp14> also include
the <tt>resource_metadata</tt> auth-param (<xref target="RFC9728"/>) to point the Client
at its Protected Resource Metadata document (see <xref target="prm"/>).</t>
        <t>Structured details of the challenge, including the claims the
Protected Resource requires, are conveyed in the JSON response body
rather than as additional <tt>WWW-Authenticate</tt> auth-params. This
follows the body-carrying pattern of the OAuth 2.0 Token Endpoint
error response (<xref section="5.2" sectionFormat="of" target="RFC6749"/>) and keeps the Bearer
challenge header simple.</t>
        <t>When the Protected Resource emits a response body alongside the
challenge, the body's Content-Type <bcp14>MUST</bcp14> be <tt>application/json</tt>. The
body <bcp14>SHOULD</bcp14> include a <tt>required_claims</tt> member (<xref target="response-param"/>)
enumerating the claims the Protected Resource requires. The response
<bcp14>SHOULD</bcp14> include <tt>Cache-Control: no-store</tt>.</t>
        <t>The 403 status code is consistent with <tt>insufficient_scope</tt>
(<xref section="3.1" sectionFormat="of" target="RFC6750"/>): the Access Token authenticates the
Client and subject but does not authorize this request because of
insufficient claim content. The 401 Unauthorized status code is not
used because the failure is not authentication of the Client or the
token.</t>
        <t>Example challenge (line breaks in the <tt>WWW-Authenticate</tt> header are
shown for readability):</t>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 403 Forbidden
WWW-Authenticate: Bearer error="insufficient_claims",
                  resource_metadata="https://api.example.com/.well-known/oauth-protected-resource"
Content-Type: application/json
Cache-Control: no-store

{
  "error": "insufficient_claims",
  "error_description": "The Access Token is missing required claims.",
  "required_claims": ["email", "department"]
}
]]></sourcecode>
        <t>A Protected Resource that cannot emit a JSON body <bcp14>MAY</bcp14> convey only
the <tt>WWW-Authenticate</tt> header. The Client then has no
machine-readable claim list to echo on retry, and <bcp14>SHOULD</bcp14> treat the
response as a terminal failure unless out-of-band information (such
as Protected Resource Metadata, <xref target="prm"/>) is available.</t>
        <t>If the resource request was unauthenticated (no Access Token
presented), the Protected Resource <bcp14>MUST</bcp14> use the existing error
semantics of <xref section="3" sectionFormat="of" target="RFC6750"/> (no <tt>error</tt> parameter or
<tt>error="invalid_token"</tt>), not <tt>insufficient_claims</tt>. The error
defined here is only applicable when the presented Access Token is
otherwise acceptable.</t>
      </section>
    </section>
    <section anchor="client-remediation">
      <name>Client Remediation</name>
      <t>A Client that receives an <tt>insufficient_claims</tt> response or
challenge, and that supports the mechanism defined in this document,
obtains a new credential carrying the claims listed in the
<tt>required_claims</tt> field. The Client then retries the original
request with the new credential. The retry mechanism depends on how
the original credential was obtained:</t>
      <ul spacing="normal">
        <li>
          <t>When the original credential was obtained via OAuth 2.0 Token
Exchange (<xref target="RFC8693"/>) or from a Refresh Token
(<xref section="6" sectionFormat="of" target="RFC6749"/>), the Client sends a back-channel Token
Endpoint request including the <tt>requested_claims</tt> parameter
(<xref target="request-param"/>).</t>
        </li>
        <li>
          <t>When the original credential was obtained via an interactive
authorization flow (the <tt>authorization_code</tt> grant, the device
authorization grant, the CIBA grant, or any other grant that may
involve end-user interaction), the Client initiates a new
authorization request and conveys its claim requirements using an
applicable front-channel claims request mechanism, such as the
OpenID Connect <tt>claims</tt> request parameter (Section 5.5 of
<xref target="OpenID.Core"/>); see <xref target="interactive-grants"/>.</t>
        </li>
        <li>
          <t>When the original credential was a pre-issued assertion presented
under a JWT Bearer (<xref target="RFC7523"/>) or SAML Bearer (<xref target="RFC7522"/>)
grant, the Client obtains a richer assertion from the assertion
provider using whatever mechanism that provider supports, then
presents the new assertion in a fresh assertion-grant request;
see <xref target="rel-assertion-grants"/>.</t>
        </li>
      </ul>
      <section anchor="request-param">
        <name>Back-Channel Token Endpoint Request Parameter</name>
        <t>This document extends the Token Endpoint request (<xref section="3.2" sectionFormat="of" target="RFC6749"/>) with the following parameter:</t>
        <dl>
          <dt><tt>requested_claims</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. A JSON array of claim entries that the Client is
requesting be included in the issued token. The array shape,
including the bare-string and constraint-object entry forms, and
the claim-name syntax match the <tt>required_claims</tt> parameter
defined in <xref target="response-param"/>. When included in a Token Endpoint
request, the JSON array is serialized to a JSON string and
percent-encoded as the value of the <tt>requested_claims</tt> form
parameter. The <tt>requested_claims</tt> parameter <bcp14>MUST NOT</bcp14> appear more
than once in a single Token Endpoint request. A Client <bcp14>SHOULD NOT</bcp14>
include the same claim name in more than one entry of the array.
An Authorization Server receiving duplicate entries for the same
claim name <bcp14>MUST</bcp14> treat the parameter as malformed.</t>
          </dd>
        </dl>
        <t>The <tt>requested_claims</tt> parameter is defined for use with the OAuth
2.0 Token Exchange grant (<xref target="RFC8693"/>) and the OAuth 2.0 Refresh
Token grant (<xref section="6" sectionFormat="of" target="RFC6749"/>). These grants are back-channel
re-issuance flows in which the Client already holds a credential
that the Authorization Server can use to determine eligibility for
the requested claims, without a fresh end-user interaction. The
parameter <bcp14>MUST NOT</bcp14> be used with grants that may require end-user
interaction, including the <tt>authorization_code</tt> grant, the
<tt>urn:ietf:params:oauth:grant-type:device_code</tt> grant, and the
<tt>urn:openid:params:grant-type:ciba</tt> grant; see <xref target="interactive-grants"/>.</t>
        <t>When sending a request that carries <tt>requested_claims</tt>, the Client
<bcp14>MUST</bcp14> identify the same audience or resource as the original request
that produced the <tt>insufficient_claims</tt> response or challenge. For
Token Exchange (<xref target="RFC8693"/>), the Client uses the <tt>audience</tt> and/or
<tt>resource</tt> request parameters defined by that specification. For
Refresh Token requests, the Client uses the <tt>resource</tt> parameter
defined by Resource Indicators (<xref target="RFC8707"/>).</t>
        <t>The Authorization Server's release policy is scoped to the indicated
audience or resource. Changing the audience or resource may cause a
different policy to apply; see <xref target="rel-scope"/> and
<xref target="rel-resource-indicators"/>.</t>
        <t>A Client <bcp14>MUST</bcp14> ensure that the <tt>requested_claims</tt> value it sends is
a well-formed JSON array of claim entries conforming to the syntax
defined in <xref target="response-param"/>, and <bcp14>MUST NOT</bcp14> forward malformed input
received in a <tt>required_claims</tt> field from a recipient.</t>
        <t>A Client <bcp14>SHOULD</bcp14> forward the value received in <tt>required_claims</tt>
verbatim as the value of <tt>requested_claims</tt>, percent-encoded for
the <tt>application/x-www-form-urlencoded</tt> body. A Client <bcp14>MAY</bcp14> include
additional entries (bare claim names or constraint objects) in the
array based on local knowledge of the target resource.</t>
        <section anchor="use-with-token-exchange">
          <name>Use with Token Exchange</name>
          <t>Under the OAuth 2.0 Token Exchange grant (<xref target="RFC8693"/>), the Client
sends a new request to the Issuing Authorization Server. The Client
selects the <tt>subject_token</tt> and <tt>subject_token_type</tt> based on its
established credential relationship with the Issuing Authorization
Server. This is typically the same <tt>subject_token</tt> the Client
originally exchanged at that Authorization Server.</t>
          <t>The following example uses the ID-JAG token type from the Identity
Assertion Authorization Grant
(<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>); any
<tt>requested_token_type</tt> registered with IANA may be used. The
<tt>audience</tt> value matches the Processing Authorization Server that
issued the original <tt>insufficient_claims</tt> response.</t>
          <sourcecode type="http"><![CDATA[
POST /oauth2/token HTTP/1.1
Host: issuer.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aid-jag
&subject_token=eyJhbGciOi...
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aid_token
&audience=https%3A%2F%2Fapi.example.com%2F
&requested_claims=%5B%22email%22%2C%22given_name%22%2C%22family_name%22%5D
]]></sourcecode>
          <t>The <tt>requested_claims</tt> value above is the URL-encoded form of the
JSON array <tt>["email","given_name","family_name"]</tt>.</t>
        </section>
        <section anchor="use-with-refresh-token">
          <name>Use with Refresh Token</name>
          <t>A Client holding a Refresh Token (<xref section="6" sectionFormat="of" target="RFC6749"/>) <bcp14>MAY</bcp14>
include <tt>requested_claims</tt> on a Refresh Token request to obtain a
re-issued Access Token (and, where applicable, ID Token) carrying
the indicated claims. This is particularly useful for multi-resource
Refresh Tokens, where a single Refresh Token issues Access Tokens
for several audiences and the claim set required differs per
audience.</t>
          <t>Example request:</t>
          <sourcecode type="http"><![CDATA[
POST /oauth2/token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&refresh_token=8xLOxBtZp8...
&resource=https%3A%2F%2Fapi.example.com%2F
&requested_claims=%5B%22email%22%2C%22department%22%5D
]]></sourcecode>
          <t>The <tt>requested_claims</tt> value above is the URL-encoded form of the
JSON array <tt>["email","department"]</tt>.</t>
          <t>The Authorization Server applies its normal Refresh Token policy,
including any policy that would have applied had the Client
requested those claims at the original authorization.</t>
          <t>An Authorization Server that would require fresh end-user consent
or re-authentication to release a requested claim has two options.
It <bcp14>MAY</bcp14> decline that claim and issue a token without it.
Alternatively, it <bcp14>MAY</bcp14> respond with an OpenID Connect error such as
<tt>consent_required</tt> or <tt>interaction_required</tt> (Section 3.1.2.6 of
<xref target="OpenID.Core"/>), prompting the Client to initiate a new
authorization request (see <xref target="interactive-grants"/>).</t>
        </section>
      </section>
      <section anchor="interactive-grants">
        <name>Interactive Grants</name>
        <t>For grants that may require end-user interaction (the
<tt>authorization_code</tt> grant, the device authorization grant, the
CIBA grant, and similar), a Client responding to
<tt>insufficient_claims</tt> <bcp14>SHOULD</bcp14> initiate a new authorization request
and convey its claim requirements using an applicable front-channel
claims request mechanism, such as the OpenID Connect <tt>claims</tt> request
parameter (Section 5.5 of <xref target="OpenID.Core"/>); see <xref target="rel-oidc-claims"/>.</t>
        <t>This separation lets the Authorization Server apply consent, user
authentication, or interaction policies appropriate to the new claim
release, rather than requiring those policies to be expressed as a
back-channel side effect.</t>
      </section>
      <section anchor="authorization-server-behavior">
        <name>Authorization Server Behavior</name>
        <t>An Authorization Server that supports the <tt>requested_claims</tt> request
parameter on Token Exchange or Refresh Token requests <bcp14>SHOULD</bcp14> include
each requested claim in the issued token, subject to its own policy.
In particular, the Authorization Server:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST NOT</bcp14> release a claim it would not otherwise release under its
configured policy for the subject, the audience, and the
requesting Client. Receipt of <tt>requested_claims</tt> is not
authorization to bypass consent, privacy, or release controls.</t>
          </li>
          <li>
            <t><bcp14>MUST NOT</bcp14> treat <tt>requested_claims</tt> as a complete enumeration of the
claims that should be issued. The Authorization Server <bcp14>MAY</bcp14> include
additional claims it would normally include.</t>
          </li>
          <li>
            <t><bcp14>MAY</bcp14> decline to include any specific requested claim. Declining to
include a claim is not, by itself, a reason to fail the request.</t>
          </li>
          <li>
            <t><bcp14>SHOULD NOT</bcp14> fail the request because of an unrecognized claim name
in <tt>requested_claims</tt>.</t>
          </li>
          <li>
            <t>When an entry includes a <tt>value</tt> or <tt>values</tt> constraint, the
Authorization Server <bcp14>MUST NOT</bcp14> include the claim in the issued
token with a value that does not satisfy the constraint. The
Authorization Server <bcp14>MAY</bcp14> decline to include the claim entirely if
it cannot satisfy the constraint.</t>
          </li>
          <li>
            <t>An Authorization Server that does not support constraint entries
<bcp14>MUST NOT</bcp14> ignore the <tt>value</tt> or <tt>values</tt> members and treat the
entry as the bare-string form. It <bcp14>MUST</bcp14> either decline the
constrained claim or reject the request with <tt>invalid_request</tt>.</t>
          </li>
        </ul>
        <t>Issuance of a token in response to a <tt>requested_claims</tt> request is
not an assertion by the Authorization Server that all requested
claims were honored. A Client that needs to verify a specific claim
is present in the re-issued token before retrying inspects the
issued token using the mechanisms applicable to its format.</t>
      </section>
      <section anchor="no-loop">
        <name>No Loop Guarantee</name>
        <t>This specification does not oblige an Issuing Authorization Server
to satisfy a <tt>requested_claims</tt> request, nor a recipient (Processing
Authorization Server or Protected Resource) to accept a re-issued
credential whose claims still fall short. For the purposes of this
section, the "logical exchange" is the workflow that produced the
original <tt>insufficient_claims</tt> response or challenge, whether
returned from a Token Endpoint or a Protected Resource. A Client
<bcp14>SHOULD</bcp14> issue at most one retry per logical exchange, and <bcp14>MUST</bcp14> treat
any subsequent <tt>insufficient_claims</tt> for the same logical exchange
as a terminal failure, even if it enumerates a different
<tt>required_claims</tt> value.</t>
      </section>
    </section>
    <section anchor="discovery">
      <name>Discovery</name>
      <t>This section defines two static-metadata mechanisms that complement
the runtime challenge. Protected Resources advertise the claims they
may require so that Clients can request them at issuance time.
Authorization Servers advertise support for the <tt>requested_claims</tt>
request parameter so that Clients can use it proactively. Both
mechanisms are optional and degrade gracefully when absent.</t>
      <section anchor="prm">
        <name>Protected Resource Metadata</name>
        <t>A Protected Resource <bcp14>MAY</bcp14> advertise the set of claims it may require
in its OAuth 2.0 Protected Resource Metadata document
(<xref target="RFC9728"/>) using the following metadata parameter:</t>
        <dl>
          <dt><tt>required_claims</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. A JSON array of claim entries with the shape defined in
<xref target="response-param"/>, enumerating claims the Protected Resource may
require in Access Tokens. Entries <bcp14>MAY</bcp14> be bare claim names or
constraint objects, though deployments commonly advertise bare
names only.</t>
          </dd>
        </dl>
        <t>Example metadata fragment:</t>
        <sourcecode type="json"><![CDATA[
{
  "resource": "https://api.example.com/",
  "authorization_servers": ["https://as.example.com/"],
  "scopes_supported": ["read", "write"],
  "required_claims": ["email", "given_name", "family_name"]
}
]]></sourcecode>
        <t>The advertised set is advisory and represents a maximal or typical
set of claims the resource may require across its operations. A
Client that obtains an Access Token carrying these claims will, in
the common case, avoid an <tt>insufficient_claims</tt> challenge.</t>
        <t>The Protected Resource <bcp14>MAY</bcp14> still return <tt>insufficient_claims</tt> for
operations whose requirements depend on request path, parameters,
subject state, or policy. The Protected Resource is not obliged to
require every advertised claim for every operation.</t>
        <t>Clients <bcp14>SHOULD</bcp14> treat the advertised list as a hint for Access Token
acquisition. Clients <bcp14>SHOULD NOT</bcp14> depend on it as a complete or
stable contract.</t>
        <t>As with <tt>required_claims</tt> in error responses and challenges, and
<tt>requested_claims</tt> in Token Endpoint requests, claim names in the
metadata are interpreted in the context of the (issuer, subject,
audience, Client) tuple of any Access Token that will be presented
at the resource; see <xref target="rel-scope"/>. For Authorization Server-side
advertising of <tt>requested_claims</tt> support, see <xref target="as-metadata"/>.</t>
      </section>
      <section anchor="as-metadata">
        <name>Authorization Server Metadata</name>
        <t>An Authorization Server that supports the <tt>requested_claims</tt> request
parameter defined in <xref target="request-param"/> <bcp14>SHOULD</bcp14> advertise that support
in its OAuth 2.0 Authorization Server Metadata (<xref target="RFC8414"/>) using
the following metadata parameter:</t>
        <dl>
          <dt><tt>requested_claims_parameter_supported</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. Boolean value indicating whether the Authorization Server
supports the <tt>requested_claims</tt> Token Endpoint request parameter
defined in this document. If omitted, the default value is <tt>false</tt>.</t>
          </dd>
        </dl>
        <t>A Client <bcp14>MAY</bcp14> consult this metadata to determine whether to send
<tt>requested_claims</tt> on a Token Exchange or Refresh Token request.
This includes proactively including the parameter on a first attempt
where the Client expects specific claims will be needed.</t>
        <t>A Client <bcp14>MUST NOT</bcp14> rely on the absence or <tt>false</tt> value of this
metadata to predict an Authorization Server's behavior on
<tt>requested_claims</tt>. An Authorization Server that does not advertise
support <bcp14>MAY</bcp14> still honor the parameter, consistent with
<xref section="3.2" sectionFormat="of" target="RFC6749"/>.</t>
        <t>This metadata parameter advertises support for the Token Endpoint
request parameter only. It does not advertise support for the
<tt>insufficient_claims</tt> error code in error responses. Recipients
return that error code per their own policy regardless of metadata.</t>
        <t>For Protected Resource-side advertising of required claims, see
<xref target="prm"/>.</t>
      </section>
    </section>
    <section anchor="end-to-end-examples">
      <name>End-to-End Examples</name>
      <t>The two diagrams below illustrate the principal flows. For a full
worked example with concrete actors, decoded JWT payloads, and
complete HTTP messages, see <xref target="worked-example"/>.</t>
      <section anchor="token-exchange-retry">
        <name>Token Exchange Retry</name>
        <t>The following non-normative example illustrates the Token Endpoint
flow using the Identity Assertion Authorization Grant profile
(<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>), where the
Processing Authorization Server is the Resource Authorization Server
(RAS) and the Issuing Authorization Server is the Identity Provider
(IdP) Authorization Server.</t>
        <artwork type="ascii-art"><![CDATA[
Client                IdP AS              RAS
   |                    |                  |
   |  TokenExchange     |                  |
   |  (subject=ID Token)|                  |
   |------------------->|                  |
   |                    |                  |
   |  ID-JAG (minimal)  |                  |
   |<-------------------|                  |
   |                    |                  |
   |  JWT Bearer (assertion=ID-JAG)        |
   |-------------------------------------->|
   |                    |                  |
   |     400 insufficient_claims           |
   |     required_claims: ["email",        |
   |                       "given_name",   |
   |                       "family_name"]  |
   |<--------------------------------------|
   |                    |                  |
   |  TokenExchange     |                  |
   |  +requested_claims |                  |
   |------------------->|                  |
   |                    |                  |
   |  ID-JAG with       |                  |
   |  requested claims  |                  |
   |<-------------------|                  |
   |                    |                  |
   |  JWT Bearer (assertion=ID-JAG)        |
   |-------------------------------------->|
   |                    |                  |
   |              200 OK { access_token }  |
   |<--------------------------------------|
]]></artwork>
      </section>
      <section anchor="protected-resource-challenge">
        <name>Protected Resource Challenge</name>
        <t>The following non-normative example illustrates a Protected Resource
returning <tt>insufficient_claims</tt> and the Client obtaining a richer
Access Token via Token Exchange before retrying.</t>
        <artwork type="ascii-art"><![CDATA[
Client                  AS                Resource
   |                    |                    |
   |  GET /api/foo                           |
   |  Authorization: Bearer AT1              |
   |---------------------------------------->|
   |                    |                    |
   |  403 Forbidden                          |
   |  WWW-Authenticate: Bearer               |
   |    error="insufficient_claims"          |
   |  Body: {"required_claims":              |
   |         ["email", "department"]}        |
   |<----------------------------------------|
   |                    |                    |
   |  TokenExchange     |                    |
   |  audience=api.example.com               |
   |  +requested_claims |                    |
   |------------------->|                    |
   |                    |                    |
   |  AT2 (carries      |                    |
   |  email, department)|                    |
   |<-------------------|                    |
   |                    |                    |
   |  GET /api/foo                           |
   |  Authorization: Bearer AT2              |
   |---------------------------------------->|
   |                    |                    |
   |              200 OK { result }          |
   |<----------------------------------------|
]]></artwork>
      </section>
    </section>
    <section anchor="relationship-to-other-specifications">
      <name>Relationship to Other Specifications</name>
      <section anchor="identity-assertion-authorization-grant">
        <name>Identity Assertion Authorization Grant</name>
        <t><xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/> defines the
<tt>urn:ietf:params:oauth:token-type:id-jag</tt> token type and the role of
the Resource Authorization Server in a cross-domain identity
assertion flow. The Client mints an ID-JAG via OAuth 2.0 Token
Exchange (<xref target="RFC8693"/>) at the IdP AS and presents the ID-JAG to the
RAS via the JWT Bearer assertion grant (<xref target="RFC7523"/>). With the
mechanism defined here, specific claim requirements at the RAS
become a deployment-time decision negotiated at runtime via the
<tt>required_claims</tt>/<tt>requested_claims</tt> pair, with the Issuing
Authorization Server retaining policy authority over release.</t>
      </section>
      <section anchor="rel-assertion-grants">
        <name>Assertion-Based Grants</name>
        <t><xref target="RFC7521"/> defines the framework for assertion-based OAuth 2.0
grants. <xref target="RFC7522"/> and <xref target="RFC7523"/> define specific profiles for
SAML 2.0 and JWT assertions respectively. The <tt>insufficient_claims</tt>
error code defined here applies uniformly to Token Endpoint requests
using any of these grants.</t>
        <t>The <tt>requested_claims</tt> request parameter (<xref target="request-param"/>) is
defined for Token Exchange and Refresh Token grants and is not used
with JWT Bearer or SAML Bearer requests directly. The assertion
presented in those grants is obtained out of band, and obtaining a
richer assertion is governed by the assertion provider's protocol.</t>
        <t>Where the assertion provider is itself an OAuth 2.0 Authorization
Server, a Client receiving <tt>insufficient_claims</tt> would typically
obtain a richer assertion via Token Exchange or via an interactive
flow using the OpenID Connect <tt>claims</tt> request parameter. The Client
then presents the new assertion in a fresh JWT Bearer or SAML
Bearer request.</t>
      </section>
      <section anchor="rel-scope">
        <name>OAuth 2.0 <tt>scope</tt> Parameter</name>
        <t>The <tt>scope</tt> parameter (<xref section="3.3" sectionFormat="of" target="RFC6749"/>) is a coarse,
Authorization Server-specific authorization request signal. In some
deployment profiles, including OpenID Connect, specific scope values
(for example, <tt>profile</tt>, <tt>email</tt>) imply the issuance of specific
claims. This document does not redefine that mapping.</t>
        <t>The mechanism defined here is finer-grained than <tt>scope</tt>: a
recipient names individual claims directly in <tt>required_claims</tt>,
independent of any scope-to-claim mapping the issuing Authorization
Server may apply. The Client can forward a precise requirement as
<tt>requested_claims</tt> without knowing that mapping.</t>
        <t>Both <tt>required_claims</tt> and <tt>requested_claims</tt> share with <tt>scope</tt>
the property that values are interpreted in the context of the
(issuer, subject, audience, Client) tuple of the request. A claim
name has no globally registered semantics that override an
Authorization Server's local release policy. The same name may
carry different content, format, or release rules at different
Authorization Servers, for different subjects, audiences, or
Clients.</t>
        <t>A Client forwarding claim names between a recipient (in
<tt>required_claims</tt>) and an Issuing Authorization Server (in
<tt>requested_claims</tt>) is relying on those two parties having a shared
understanding of the listed names, typically through registered
claims or profile alignment.</t>
        <t><tt>requested_claims</tt> complements <tt>scope</tt> rather than replacing it. A
Client retrying at the Token Endpoint <bcp14>MAY</bcp14> include both parameters in
the same request. The Authorization Server applies its scope
semantics as it otherwise would, and additionally takes
<tt>requested_claims</tt> into account.</t>
      </section>
      <section anchor="rel-resource-indicators">
        <name>OAuth 2.0 Resource Indicators</name>
        <t><xref target="RFC8707"/> allows a Client to specify the resource (the <tt>resource</tt>
parameter) at which the requested token will be used. The
Authorization Server may use that signal, together with the
<tt>audience</tt> parameter, to determine the audience of the issued token
and to apply audience-specific claim release policy. Two
consequences follow:</t>
        <ol spacing="normal" type="1"><li>
            <t>Claims releasable to one audience may not be releasable to
another. A retry under <xref target="request-param"/> that changes the
<tt>audience</tt> or <tt>resource</tt> value from the original request may
obtain a token under different policy. The Authorization Server
may include or omit different claims, and the recipient that
returned <tt>insufficient_claims</tt> may not accept the re-issued
token. For this reason <xref target="request-param"/> requires the Client to
preserve the original <tt>audience</tt> and, where applicable,
<tt>resource</tt> on retry.</t>
          </li>
          <li>
            <t>A Processing Authorization Server or Protected Resource that
returns <tt>insufficient_claims</tt> does so for a specific audience. A
<tt>required_claims</tt> value that is meaningful for one audience may
be meaningless, or trigger different release policy, for
another.</t>
          </li>
        </ol>
      </section>
      <section anchor="rel-oidc-claims">
        <name>OpenID Connect <tt>claims</tt> Request Parameter</name>
        <t>OpenID Connect Core 1.0 (<xref target="OpenID.Core"/>, Section 5.5) defines a
<tt>claims</tt> request parameter at the OIDC Authorization Endpoint and
Token Endpoint, carrying a JSON object that requests individual
claims for the ID Token and UserInfo responses with optional
essential/voluntary semantics and value constraints.</t>
        <t>This document defers to the OIDC <tt>claims</tt> parameter for any response
to <tt>insufficient_claims</tt> that requires a new authorization request,
including the <tt>authorization_code</tt> grant, the device authorization
grant, the CIBA grant, and similar interactive flows. In these
cases:</t>
        <ul spacing="normal">
          <li>
            <t>The Client <bcp14>SHOULD</bcp14> initiate a new authorization request to the
Authorization Server and include a <tt>claims</tt> parameter reflecting
the entries enumerated in the <tt>required_claims</tt> field of the
<tt>insufficient_claims</tt> response or challenge. Mapping constraint
entries to OIDC <tt>claims</tt> syntax is deployment-specific and only
possible where the Authorization Server supports the corresponding
OIDC claim request semantics.</t>
          </li>
          <li>
            <t>The Authorization Server applies its normal interactive-flow
policy: it <bcp14>MAY</bcp14> prompt the end user for consent, perform additional
authentication, or otherwise involve the user before releasing
newly requested claims. This is the natural place to handle such
policy, which the back-channel <tt>requested_claims</tt> parameter
(<xref target="request-param"/>) cannot accommodate.</t>
          </li>
          <li>
            <t>On completion of the new authorization request, the Client obtains
an Access Token (and, where applicable, ID Token) carrying the
requested claims, and retries the original request.</t>
          </li>
        </ul>
        <t>The <tt>requested_claims</tt> parameter defined in this document is not a
substitute for the OIDC <tt>claims</tt> parameter for interactive grants;
the two parameters target different stages of the OAuth 2.0 flow
and different deployment patterns:</t>
        <ul spacing="normal">
          <li>
            <t>OIDC <tt>claims</tt> is presented at an Authorization or
backchannel-authentication request, where end-user consent and
authentication can be evaluated. It supports essential/voluntary
claims and value constraints.</t>
          </li>
          <li>
            <t><tt>requested_claims</tt> is presented at the Token Endpoint as part of
a back-channel re-issuance request (Token Exchange or Refresh
Token), where no end-user interaction occurs. It is a hint to the
Authorization Server about which claims should be included in the
issued token, with optional <tt>value</tt> or <tt>values</tt> constraints.</t>
          </li>
        </ul>
        <t>An Authorization Server <bcp14>MAY</bcp14> support both <tt>claims</tt> (on its OIDC
endpoints) and <tt>requested_claims</tt> (on Token Exchange and Refresh
Token requests at its Token Endpoint). This document does not define
an interaction between them.</t>
      </section>
      <section anchor="oauth-20-bearer-token-usage-and-step-up-authentication">
        <name>OAuth 2.0 Bearer Token Usage and Step-Up Authentication</name>
        <t><xref target="RFC6750"/> defines the Bearer authentication scheme used at the
Protected Resource and the <tt>insufficient_scope</tt> error returned when
the Access Token's scope is insufficient. <xref target="RFC9470"/> defines
<tt>insufficient_user_authentication</tt> returned when the authentication
context behind the Access Token is insufficient. The mechanism in
<xref target="resource"/> of this document follows the same challenge pattern
but addresses claim content rather than scope or authentication
context.</t>
      </section>
      <section anchor="oauth-20-rich-authorization-requests">
        <name>OAuth 2.0 Rich Authorization Requests</name>
        <t><xref target="RFC9396"/> carries structured request objects
(<tt>authorization_details</tt>) as JSON. The claim-entry syntax in this
document is intentionally much narrower: it can name claims and, when
needed, request equality against one value or one of a set of values.
Profiles needing richer authorization semantics, schema references,
or non-claim constraints <bcp14>SHOULD</bcp14> define their own parameter rather
than overload <tt>required_claims</tt>.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="disclosure-of-claim-requirements">
        <name>Disclosure of Claim Requirements</name>
        <t>The <tt>required_claims</tt> parameter, whether in an error response body
or in Protected Resource Metadata, discloses to the Client the set
of claims the recipient intends to consume. This is generally
low-sensitivity information, comparable to the OAuth <tt>scope</tt>
parameter, but operators <bcp14>SHOULD</bcp14> confirm that disclosing the list to
any Client capable of reaching the Token Endpoint or Protected
Resource is acceptable.</t>
        <t>When <tt>required_claims</tt> entries include <tt>value</tt> or <tt>values</tt>
constraints, those constraints disclose more deployment-specific
policy than bare claim names: they reveal specific tenant
identifiers, role names, or other policy attributes that the
recipient evaluates. Operators <bcp14>SHOULD</bcp14> consider whether disclosing
these values to any Client capable of reaching the endpoint is
acceptable. Where the constraint values themselves are sensitive,
deployments <bcp14>SHOULD</bcp14> use bare claim names and validate values out of
band.</t>
      </section>
      <section anchor="disclosure-of-issued-claims">
        <name>Disclosure of Issued Claims</name>
        <t>When an Authorization Server includes additional claims in a
re-issued token in response to <tt>requested_claims</tt>, those claims may
be readable by the Client (for example, a JWT-formatted token can
be parsed by anyone holding the token). Authorization Servers <bcp14>SHOULD</bcp14>
apply the same release policy as for any other token issued to the
same subject, audience, and Client.</t>
        <t>In deployments where the intended consumer of the issued token is
the recipient only and the Client is treated as a transport, the
security guidance from <xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>
on audience scoping and (where supported) encryption of the token
applies.</t>
        <t>The Authorization Server is the policy authority for release.
Receipt of a <tt>requested_claims</tt> parameter from a Client <bcp14>MUST NOT</bcp14> be
treated as user consent, subject release authorization, or any other
form of override of the Authorization Server's configured policy. An
Authorization Server that finds that satisfying <tt>requested_claims</tt>
would violate policy <bcp14>MUST</bcp14> decline the affected claims and <bcp14>MAY</bcp14>
decline the request.</t>
      </section>
      <section anchor="untrusted-input">
        <name>Untrusted Input</name>
        <t>A recipient constructing a <tt>required_claims</tt> field, and an
Authorization Server consuming a <tt>requested_claims</tt> parameter, <bcp14>MUST</bcp14>
treat the value as untrusted input until validated. Implementations
<bcp14>MUST</bcp14> validate that each entry in the array conforms to the syntax
constraints stated in this document, including claim-name syntax,
mutual exclusion of <tt>value</tt> and <tt>values</tt>, and the absence of
duplicate claim names. Implementations <bcp14>MUST NOT</bcp14> pass the value into
log formatters, database queries, or claim release rules without
proper escaping or parameterization.</t>
      </section>
      <section anchor="replay-and-caching">
        <name>Replay and Caching</name>
        <t>The <tt>insufficient_claims</tt> error response (at the Token Endpoint or
Protected Resource) and the <tt>required_claims</tt> parameter it carries
have no authentication state, no nonce, and no expiration, and <bcp14>MUST
NOT</bcp14> be used to make any access decision. They serve only to guide
the Client's next request. Responses carrying <tt>required_claims</tt>
          <bcp14>SHOULD</bcp14> be returned with <tt>Cache-Control: no-store</tt>.</t>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <t>A recipient returning <tt>insufficient_claims</tt> invites the Client to
perform an additional Token Endpoint request against an
Authorization Server. Implementations on all sides <bcp14>SHOULD</bcp14> apply
standard rate limiting to protect their endpoints. As noted in
<xref target="no-loop"/> and <xref target="resource"/>, Clients <bcp14>SHOULD NOT</bcp14> retry indefinitely.</t>
      </section>
      <section anchor="trust-between-recipient-and-issuing-authorization-server">
        <name>Trust Between Recipient and Issuing Authorization Server</name>
        <t>This specification does not establish trust between a recipient
(Processing Authorization Server or Protected Resource) and the
Issuing Authorization Server. The Client mediates between them and
can add, remove, or modify the claim list it received in
<tt>required_claims</tt> before forwarding it as <tt>requested_claims</tt>. For
this reason <tt>requested_claims</tt> is advisory.</t>
        <t>The Issuing Authorization Server <bcp14>SHOULD</bcp14> evaluate the request against
the Client's identity, the requested audience, and its local release
policy. The Issuing Authorization Server <bcp14>MUST NOT</bcp14> infer a recipient
requirement from <tt>requested_claims</tt> alone. It <bcp14>MUST NOT</bcp14> treat the
parameter's presence as authorization to release any claim.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The mechanism in this document is designed to reduce, not increase,
claim disclosure relative to a static policy. Without
<tt>required_claims</tt>, an Issuing Authorization Server that wishes to
interoperate with multiple recipients must either include claims
speculatively (releasing data that may not be needed) or omit them
and break the downstream operation. With <tt>required_claims</tt>, an
Authorization Server can release claims only when a specific
exchange requires them, subject to its own policy.</t>
      <t>Operators of recipients (Processing Authorization Servers and
Protected Resources) <bcp14>SHOULD</bcp14> request the minimum set of claims
necessary, and <bcp14>SHOULD NOT</bcp14> enumerate claims they do not consume.</t>
      <t>Operators of Issuing Authorization Servers <bcp14>SHOULD</bcp14> apply consent,
contractual, or regulatory release controls before honoring any
specific entry in <tt>requested_claims</tt>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="oauth-extensions-error-registry">
        <name>OAuth Extensions Error Registry</name>
        <t>IANA is requested to add the following entry to the "OAuth Extensions
Error" registry established by <xref section="11.4" sectionFormat="of" target="RFC6749"/>.</t>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t><tt>insufficient_claims</tt></t>
          </dd>
          <dt>Usage Location:</dt>
          <dd>
            <t>Token Endpoint Error Response, Resource Access Error Response</t>
          </dd>
          <dt>Protocol Extension:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>Indicates that the credential presented by the Client is acceptable
but does not carry claims sufficient for the recipient to fulfill
the request. Returned in OAuth 2.0 Token Endpoint error responses
and in OAuth 2.0 Bearer authentication challenges at Protected
Resources.</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-parameters-registry">
        <name>OAuth Parameters Registry</name>
        <t>IANA is requested to add the following entries to the "OAuth
Parameters" registry established by <xref section="11.2" sectionFormat="of" target="RFC6749"/>.</t>
        <section anchor="requiredclaims">
          <name>required_claims</name>
          <dl>
            <dt>Name:</dt>
            <dd>
              <t><tt>required_claims</tt></t>
            </dd>
            <dt>Parameter Usage Location:</dt>
            <dd>
              <t>token response</t>
            </dd>
            <dt>Change Controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Specification Document(s):</dt>
            <dd>
              <t>This document</t>
            </dd>
            <dt>Notes:</dt>
            <dd>
              <t>The <tt>required_claims</tt> parameter appears in the JSON error response
body of OAuth 2.0 Token Endpoint error responses
(<xref section="5.2" sectionFormat="of" target="RFC6749"/>) and in the JSON error response body
of Protected Resources returning <tt>insufficient_claims</tt> (<xref target="resource"/>).</t>
            </dd>
          </dl>
        </section>
        <section anchor="requestedclaims">
          <name>requested_claims</name>
          <dl>
            <dt>Name:</dt>
            <dd>
              <t><tt>requested_claims</tt></t>
            </dd>
            <dt>Parameter Usage Location:</dt>
            <dd>
              <t>token request</t>
            </dd>
            <dt>Change Controller:</dt>
            <dd>
              <t>IETF</t>
            </dd>
            <dt>Specification Document(s):</dt>
            <dd>
              <t>This document</t>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="oauth-protected-resource-metadata-registry">
        <name>OAuth Protected Resource Metadata Registry</name>
        <t>IANA is requested to add the following entry to the "OAuth Protected
Resource Metadata" registry established by <xref section="7.1" sectionFormat="of" target="RFC9728"/>.</t>
        <dl>
          <dt>Metadata Name:</dt>
          <dd>
            <t><tt>required_claims</tt></t>
          </dd>
          <dt>Metadata Description:</dt>
          <dd>
            <t>A JSON array of claim entries (bare claim names or constraint
objects) enumerating claims the Protected Resource may require in
Access Tokens, advisory and not necessarily a complete or stable
contract; see <xref target="prm"/>.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-authorization-server-metadata-registry">
        <name>OAuth Authorization Server Metadata Registry</name>
        <t>IANA is requested to add the following entry to the "OAuth
Authorization Server Metadata" registry established by
<xref section="7.1" sectionFormat="of" target="RFC8414"/>.</t>
        <dl>
          <dt>Metadata Name:</dt>
          <dd>
            <t><tt>requested_claims_parameter_supported</tt></t>
          </dd>
          <dt>Metadata Description:</dt>
          <dd>
            <t>Boolean value indicating whether the Authorization Server supports
the <tt>requested_claims</tt> Token Endpoint request parameter defined in
this document; see <xref target="as-metadata"/>.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="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="RFC6750">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </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="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC8707">
          <front>
            <title>Resource Indicators for OAuth 2.0</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8707"/>
          <seriesInfo name="DOI" value="10.17487/RFC8707"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7522">
          <front>
            <title>Security Assertion Markup Language (SAML) 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a Security Assertion Markup Language (SAML) 2.0 Bearer Assertion as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7522"/>
          <seriesInfo name="DOI" value="10.17487/RFC7522"/>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
        <reference anchor="RFC9470">
          <front>
            <title>OAuth 2.0 Step Up Authentication Challenge Protocol</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>It is not uncommon for resource servers to require different authentication strengths or recentness according to the characteristics of a request. This document introduces a mechanism that resource servers can use to signal to a client that the authentication event associated with the access token of the current request does not meet its authentication requirements and, further, how to meet them. This document also codifies a mechanism for a client to request that an authorization server achieve a specific authentication strength or recentness when processing an authorization request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9470"/>
          <seriesInfo name="DOI" value="10.17487/RFC9470"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-assertion-authz-grant">
          <front>
            <title>Identity Assertion JWT Authorization Grant</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Karl McGuinness" initials="K." surname="McGuinness">
              <organization>Independent</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="21" month="May" year="2026"/>
            <abstract>
              <t>   This specification provides a mechanism for an application to use an
   identity assertion to obtain an access token for a third-party API by
   coordinating through an identity provider that the downstream
   Resource Authorization Server already trusts for single sign-on
   (SSO), using Token Exchange [RFC8693] and JWT Profile for OAuth 2.0
   Authorization Grants [RFC7523].  This pattern is informally referred
   to as Cross-App Access (XAA).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-assertion-authz-grant-04"/>
        </reference>
        <reference anchor="OpenID.Core" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0 incorporating errata set 2</title>
            <author initials="N." surname="Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1304?>

<section anchor="worked-example">
      <name>Worked End-to-End Example</name>
      <t>This appendix is non-normative. It walks through a complete
just-in-time (JIT) provisioning flow using the Identity Assertion
Authorization Grant (<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>)
profile, the Token Exchange retry path of <xref target="request-param"/>, and the
Protected Resource Metadata advertisement of <xref target="prm"/>. HTTP messages
are shown in full; JWT contents are shown as decoded payloads for
readability.</t>
      <section anchor="actors">
        <name>Actors</name>
        <ul spacing="normal">
          <li>
            <t><strong>End user:</strong> Alice, an employee of Example Corp.</t>
          </li>
          <li>
            <t><strong>Client:</strong> Acme Tools (<tt>client_id=acme-tools</tt>), an enterprise SaaS
application that uses Alice's IdP session to access a downstream
API on her behalf.</t>
          </li>
          <li>
            <t><strong>Identity Provider Authorization Server (IdP AS):</strong>
              <tt>https://idp.example.com/</tt>. This is the Issuing Authorization
Server in the terminology of <xref target="request-param"/>.</t>
          </li>
          <li>
            <t><strong>Resource Authorization Server (RAS):</strong>
              <tt>https://ras.example.com/</tt>. This is the Processing Authorization
Server.</t>
          </li>
          <li>
            <t><strong>Downstream resource:</strong> <tt>https://api.example.com/</tt>.</t>
          </li>
        </ul>
        <t>The RAS performs JIT account provisioning when the subject is
unknown to it. Its policy requires <tt>email</tt>, <tt>given_name</tt>, and
<tt>family_name</tt> to provision a new account.</t>
      </section>
      <section anchor="step-1-client-obtains-an-id-jag-from-the-idp-as">
        <name>Step 1: Client obtains an ID-JAG from the IdP AS</name>
        <t>The Client has authenticated Alice via OpenID Connect at the IdP and
holds her ID Token. The Client sends a Token Exchange request to the
IdP AS for an ID-JAG bound to the RAS's audience. In this first
attempt, the Client does not yet know which claims the RAS requires
and sends no <tt>requested_claims</tt>.</t>
        <sourcecode type="http"><![CDATA[
POST /oauth2/token HTTP/1.1
Host: idp.example.com
Authorization: Basic YWNtZS10b29sczpzM2NyZXQ=
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aid-jag
&subject_token=eyJhbGciOiJSUzI1NiIs...
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aid_token
&audience=https%3A%2F%2Fras.example.com%2F
]]></sourcecode>
        <t>The IdP AS validates the ID Token, applies its default release
policy for this Client and audience, and issues an ID-JAG with
minimal content. Decoded payload:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://idp.example.com/",
  "sub": "alice-uuid-12345",
  "aud": "https://ras.example.com/",
  "client_id": "acme-tools",
  "exp": 1748190000,
  "iat": 1748189700
}
]]></sourcecode>
        <t>The Token Exchange response:</t>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "issued_token_type": "urn:ietf:params:oauth:token-type:id-jag",
  "access_token": "eyJhbGciOiJSUzI1NiIs...",
  "token_type": "N_A",
  "expires_in": 300
}
]]></sourcecode>
        <t>The <tt>access_token</tt> field carries the ID-JAG by convention of
<xref target="RFC8693"/>.</t>
      </section>
      <section anchor="step-2-client-presents-the-id-jag-to-the-ras">
        <name>Step 2: Client presents the ID-JAG to the RAS</name>
        <t>The Client presents the ID-JAG to the RAS using the JWT Bearer
assertion grant (<xref target="RFC7523"/>). The ID-JAG carries the audience
identifier of the RAS in its <tt>aud</tt> claim, so no separate <tt>audience</tt>
form parameter is needed.</t>
        <sourcecode type="http"><![CDATA[
POST /oauth2/token HTTP/1.1
Host: ras.example.com
Authorization: Basic YWNtZS10b29sczpzM2NyZXQ=
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&assertion=eyJhbGciOiJSUzI1NiIs...
]]></sourcecode>
      </section>
      <section anchor="step-3-ras-returns-insufficientclaims">
        <name>Step 3: RAS returns <tt>insufficient_claims</tt></name>
        <t>The RAS validates the ID-JAG (signature, issuer, audience, freshness)
and accepts it. It then attempts to resolve <tt>sub=alice-uuid-12345</tt>
to a local account; no match. To JIT-provision Alice, it needs
<tt>email</tt>, <tt>given_name</tt>, and <tt>family_name</tt>. The ID-JAG carries none of
these, so the RAS challenges the Client:</t>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "insufficient_claims",
  "error_description":
    "Cannot provision user; missing required claims.",
  "required_claims": ["email", "given_name", "family_name"]
}
]]></sourcecode>
      </section>
      <section anchor="step-4-client-retries-the-token-exchange-with-requestedclaims">
        <name>Step 4: Client retries the Token Exchange with <tt>requested_claims</tt></name>
        <t>The Client extracts the <tt>required_claims</tt> JSON array from the
response body, percent-encodes the array as the <tt>requested_claims</tt>
form value, and sends a new Token Exchange request to the IdP AS
with the same <tt>audience</tt> and the original ID Token as the subject
token:</t>
        <sourcecode type="http"><![CDATA[
POST /oauth2/token HTTP/1.1
Host: idp.example.com
Authorization: Basic YWNtZS10b29sczpzM2NyZXQ=
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aid-jag
&subject_token=eyJhbGciOiJSUzI1NiIs...
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aid_token
&audience=https%3A%2F%2Fras.example.com%2F
&requested_claims=%5B%22email%22%2C%22given_name%22%2C%22family_name%22%5D
]]></sourcecode>
        <t>The <tt>requested_claims</tt> value above is the URL-encoded form of the
JSON array <tt>["email","given_name","family_name"]</tt> returned in the
RAS's <tt>required_claims</tt> field, forwarded verbatim.</t>
      </section>
      <section anchor="step-5-idp-as-issues-an-enriched-id-jag">
        <name>Step 5: IdP AS issues an enriched ID-JAG</name>
        <t>The IdP AS checks that Alice has consented to share these claims
with Acme Tools (or that the deployment's policy otherwise permits
release). It then issues an ID-JAG that includes the requested
claims. Decoded payload:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://idp.example.com/",
  "sub": "alice-uuid-12345",
  "aud": "https://ras.example.com/",
  "client_id": "acme-tools",
  "exp": 1748190600,
  "iat": 1748190300,
  "email": "alice@example.com",
  "given_name": "Alice",
  "family_name": "Carter"
}
]]></sourcecode>
      </section>
      <section anchor="step-6-client-re-presents-the-enriched-id-jag-to-the-ras">
        <name>Step 6: Client re-presents the enriched ID-JAG to the RAS</name>
        <t>The Client repeats the JWT Bearer request from Step 2, this time
using the enriched ID-JAG returned in Step 5.</t>
        <sourcecode type="http"><![CDATA[
POST /oauth2/token HTTP/1.1
Host: ras.example.com
Authorization: Basic YWNtZS10b29sczpzM2NyZXQ=
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&assertion=eyJhbGciOiJSUzI1NiIs...
]]></sourcecode>
      </section>
      <section anchor="step-7-ras-provisions-alices-account-and-issues-an-access-token">
        <name>Step 7: RAS provisions Alice's account and issues an Access Token</name>
        <t>The RAS:</t>
        <ol spacing="normal" type="1"><li>
            <t>Validates the enriched ID-JAG.</t>
          </li>
          <li>
            <t>Confirms no existing account for <tt>sub=alice-uuid-12345</tt>.</t>
          </li>
          <li>
            <t>Creates a local account using <tt>email</tt>, <tt>given_name</tt>, and
<tt>family_name</tt>.</t>
          </li>
          <li>
            <t>Issues an Access Token for the downstream API.</t>
          </li>
        </ol>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "access_token": "eyJhbGciOiJSUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 3600
}
]]></sourcecode>
      </section>
      <section anchor="step-8-client-calls-the-downstream-api">
        <name>Step 8: Client calls the downstream API</name>
        <sourcecode type="http"><![CDATA[
GET /v1/projects HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
]]></sourcecode>
        <t>The downstream API validates the Access Token, finds Alice's now-
provisioned account, and returns her project list.</t>
      </section>
      <section anchor="avoiding-the-round-trip-with-protected-resource-metadata">
        <name>Avoiding the Round Trip with Protected Resource Metadata</name>
        <t>If the RAS publishes its claim requirements via Protected Resource
Metadata (<xref target="prm"/>), the Client can include <tt>requested_claims</tt> on its
very first Token Exchange request and skip Steps 3 and 4 entirely.</t>
        <t>Example PRM document at
<tt>https://ras.example.com/.well-known/oauth-protected-resource</tt>:</t>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "resource": "https://ras.example.com/",
  "authorization_servers": ["https://idp.example.com/"],
  "required_claims": ["email", "given_name", "family_name"]
}
]]></sourcecode>
        <t>A Client that fetches this metadata at startup includes
<tt>requested_claims=%5B%22email%22%2C%22given_name%22%2C%22family_name%22%5D</tt>
(the URL-encoded form of <tt>["email","given_name","family_name"]</tt>)
in Step 1, and the IdP AS issues the enriched ID-JAG on the first
attempt. The remainder of the flow proceeds directly to Step 7.</t>
      </section>
      <section anchor="authorization-server-metadata-discovery">
        <name>Authorization Server Metadata Discovery</name>
        <t>A Client that consults the IdP AS's metadata can also confirm support
for the <tt>requested_claims</tt> parameter before sending it, avoiding
wasted requests against an Authorization Server that does not
recognize the parameter. Example IdP AS metadata fragment at
<tt>https://idp.example.com/.well-known/oauth-authorization-server</tt>:</t>
        <sourcecode type="json"><![CDATA[
{
  "issuer": "https://idp.example.com/",
  "token_endpoint": "https://idp.example.com/oauth2/token",
  "grant_types_supported": [
    "authorization_code",
    "refresh_token",
    "urn:ietf:params:oauth:grant-type:token-exchange"
  ],
  "requested_claims_parameter_supported": true
}
]]></sourcecode>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author thanks the OAuth working group participants who raised
the underlying interoperability gap in the Identity Assertion
Authorization Grant draft.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
Zb3YIG/EwNUnaNtecXyUXezk/SP9tGUz8l1+YzGvprV7z398/WZvwv+1L17S
36+e/eOPp6+ePcW/X//x5Pvv3R9Grnj9x5c/fv/U/+XvfPLy+fNnL57yzfCt
jb4ye89P/rTH4mPv5Q9vTl++OPl+j2kqeA2KoABw5zl7J0BXIPdOa8DWWAD/
ZF/y4yc//K9/P3wIePXfJB0FLDH+gEkm8AE1e34a+iHlI8D6BjVuQCiSdiWi
ybroshIlLaAAnGLF0VhjPvtnhMyfj+3fzBfrw4d/K1/gC0dfKsyiLwlmw28G
NzMQE18lHuOgGX3fg3S835M/RZ8V7sGXf/N3JRCpnR5++Xd/ayS+4w7DBbdZ
bpNfCuzbllWiwM47FryfJLXOScQzJz3n1ySRNsAnF4cIZr9gd6x2Hve0jUkc
Y9Uol3BpsVUxGWz8kfggu+fodg+xR/ldUQUuiEPngmD2d4wBpmzxLgPZifqe
JjXVIslY9BpvLaCLTbLn4quJSIgLLiXA5i40y5pcC4P9g5FauOyJMfgdg0IN
8hQ/p07z2BzHUbdxpw4HMkmPWWSVBjZydRUG3DpgnbQt1kX9M1zo7LQS12gv
ZAI6BZp4lygm+h5R1s3lneDW5IYLhgXoglHAlhK3Wg2bDGW57iilKFGmw37k
fsZXLzp92C7IDfQNuHvgUXdWmzGwB7x228mNeqNEgSdXGMqttIcaNtAL1zKP
bYoLjExraCFpQ3BWkQ0JmlR8QSinH6vXQIlUVBlHbJMesVnrye2hIzYSCSgm
QcmYMtk44pb4c16BMUSeAFiDFF+0oKsb4QB8EwOG45hgVoLe5oJrJHIRoFtz
dFnwbgEJ6xiAJ/Rpip9cxEP1xyh25hyuUYBIv3VoLzDCVDj2hoRaO7Ia0WpQ
Bl/X6udqKfAxCHr08KC1/cgNLelM+0xd+VNMxY1Vs0kc5uiHVWg5Y2PHwSSt
Y7ZeKyTVMlARJ4QXXqf0lmsiZmO2BTTV2d8PSlGgJbYGIuLcFmVuaVHaoucO
4ur/45s3P4CpfpWXqOnprhkDG0cckteSLz06sNVi0EMthymkEmhOw9egJ8Tb
wOiRUPc8v8yuiposFZ9s5eIAE4HNgq6eop2+ZM8gvQ5YD97TbD98EmA4v2tA
AAViXpJMlG+NZXSGYae2n8npohicjKCeFRtQrBpLYXpPMnGDXuiVgvsHR30f
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

-->

</rfc>
