<?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-token-xchg-target-svc-disco-02" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Token Exchange Target Service Discovery">OAuth 2.0 Token Exchange Target Service Discovery</title>
    <seriesInfo name="Internet-Draft" value="draft-mcguinness-token-xchg-target-svc-disco-02"/>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <author fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
        <uri>https://aaronparecki.com</uri>
      </address>
    </author>
    <date year="2026" month="June" day="23"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>OAuth 2.0</keyword>
    <keyword>Token Exchange</keyword>
    <keyword>Identity Chaining</keyword>
    <keyword>Resource Indicators</keyword>
    <keyword>Cross-Domain</keyword>
    <keyword>Authorization</keyword>
    <abstract>
      <?line 62?>

<t>This specification defines a method for OAuth 2.0 clients to discover the set of available Token Exchange Targets (such as audiences, resources, scopes, and token types) for a given subject token when performing OAuth 2.0 Token Exchange. The discovery endpoint accepts a subject token of any type the authorization server supports, identified by a token type URI, and returns values that are valid inputs to subsequent Token Exchange requests, supporting advanced use cases such as identity chaining and cross-domain delegation.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mcguinness.github.io/draft-mcguinness-token-xchg-target-svc-disco/draft-mcguinness-token-xchg-target-svc-disco.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mcguinness-token-xchg-target-svc-disco/"/>.
      </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-token-xchg-target-svc-disco"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth 2.0 Token Exchange <xref target="RFC8693"/> enables a client to present a token issued in one security domain to an authorization server and securely trade it for a new token issued for another domain. The exchanged token is minted with the Target Service's token requirements, including its own audience, resource indicators, and scopes, so it becomes valid and enforceable for the desired downstream service. This enables controlled cross-domain access, removes the confused-deputy problem by ensuring tokens are explicitly targeted to the correct service, and avoids requiring direct trust between the original token issuer and the Target Service.</t>
      <t>Authorization Servers may be capable of issuing tokens to multiple services for a given subject token and client, but the client must already know which values it may request. Today, this knowledge is typically provided through static configuration, proprietary APIs, or informal documentation, leading to brittle integrations and unnecessary Token Exchange failures, particularly when subjects are authorized to access only a subset of available services.</t>
      <t>This specification defines the OAuth 2.0 Token Exchange Target Service Discovery Endpoint, a standardized mechanism that enables clients to dynamically discover the set of available Token Exchange Targets (such as audiences, resources, scopes, and token types) for a given subject token. The authorization server evaluates both the subject token and the client's permissions and returns only the values the client is authorized to request.</t>
      <t>This extension is especially valuable in scenarios requiring identity chaining and cross-domain authorization:</t>
      <ul spacing="normal">
        <li>
          <t>Progressive token exchange across service boundaries, such as multi-tier microservices architectures and delegated flows where tokens are exchanged with narrower or transformed permissions at each hop. The set of downstream services a client may target, and their required permissions, varies with the subject token's context and the client's authorization, so static configuration cannot anticipate these per-subject and per-client variations and clients attempt exchanges the subject is not authorized to perform.</t>
        </li>
        <li>
          <t>Cross-boundary deployments where downstream services exist in separate administrative, organizational, or cloud domains with independently managed authorization policies. Unlike progressive token exchange, which transforms permissions within a single domain, this scenario spans distinct trust boundaries whose policies and authorized targets change dynamically, so a client must discover them at runtime rather than rely on fixed configuration.</t>
        </li>
        <li>
          <t>Single Sign-On (SSO) to API flows, such as those enabled by the Identity Assertion Authorization Grant (ID-JAG) <xref target="I-D.oauth-identity-assertion-authz-grant"/>, where a client needs to seamlessly connect to cross-domain resources and act on behalf of the user to access APIs.</t>
        </li>
        <li>
          <t>Multi-tenant Target Services that share the same authorization server and/or resource across tenants, where the tenant is identified by a claim in the issued token. In these scenarios, the resource indicator alone cannot distinguish the tenants, so discovery enables a client to learn the distinct Target Services available per tenant and to present a tenant selection to the end user.</t>
        </li>
      </ul>
      <t>This specification provides the following benefits:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Dynamic Discovery</strong>: Eliminates static configuration requirements by enabling clients to discover available Token Exchange Targets at runtime, reducing integration failures and improving developer experience.</t>
        </li>
        <li>
          <t><strong>Standardization</strong>: Provides a standardized discovery mechanism, replacing proprietary APIs and improving interoperability across OAuth 2.0 implementations.</t>
        </li>
        <li>
          <t><strong>Real-Time Authorization</strong>: Returns Token Exchange Targets based on real-time policy evaluation, client permissions, and subject token context, ensuring accurate and up-to-date authorization information. This enables per-subject and per-client results, which is essential when the set of available targets varies by user or client.</t>
        </li>
      </ul>
    </section>
    <section anchor="terminology">
      <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:</t>
      <dl>
        <dt>Target Service</dt>
        <dd>
          <t>A downstream service that a client accesses using a token obtained through OAuth 2.0 Token Exchange <xref target="RFC8693"/>. A Target Service may be multi-tenant (see <xref target="multi-tenant-target-services"/>).</t>
        </dd>
        <dt>Token Exchange Target</dt>
        <dd>
          <t>A combination of Token Exchange request parameters (an <tt>audience</tt> and, where applicable, <tt>resource</tt>, <tt>scope</tt>, and requested token type(s)) that the authorization server has authorized for a given subject token and requesting client. A Token Exchange Target is returned by the discovery endpoint as an element of the <tt>supported_targets</tt> array; it identifies how a client may obtain a token for a Target Service and does not assert that the service is reachable or operational.</t>
        </dd>
      </dl>
    </section>
    <section anchor="token-exchange-target-service-discovery-endpoint">
      <name>Token Exchange Target Service Discovery Endpoint</name>
      <t>This specification defines a new endpoint for OAuth 2.0 authorization servers that enables clients to discover the set of available Token Exchange Targets (such as audiences, resources, scopes, and token types) for a given subject token when performing OAuth 2.0 Token Exchange <xref target="RFC8693"/>.</t>
      <t>The endpoint is identified by the authorization server metadata parameter <tt>token_exchange_target_service_discovery_endpoint</tt>, as defined in <xref target="authorization-server-metadata"/>.</t>
      <section anchor="authorization-server-metadata">
        <name>Authorization Server Metadata</name>
        <t>This specification defines the following authorization server metadata <xref target="RFC8414"/> parameter to enable clients to discover the token exchange target service discovery endpoint:</t>
        <dl>
          <dt>token_exchange_target_service_discovery_endpoint</dt>
          <dd>
            <t>URL of the token exchange target service discovery endpoint. This URL <bcp14>MUST</bcp14> use the <tt>https</tt> scheme. The authorization server <bcp14>SHOULD</bcp14> publish this metadata value.</t>
          </dd>
        </dl>
        <t>The following is a non-normative example of the metadata:</t>
        <artwork><![CDATA[
{
  "issuer": "https://as.example.com",
  "token_exchange_target_service_discovery_endpoint": "https://as.example.com/target-discovery"
}
]]></artwork>
      </section>
      <section anchor="endpoint-request">
        <name>Endpoint Request</name>
        <t>The client makes a request to the token exchange target service discovery endpoint by sending an HTTP POST request to the endpoint URL. The client <bcp14>MUST</bcp14> use TLS as specified in <xref section="1.6" sectionFormat="of" target="RFC6749"/>.</t>
        <t>The endpoint URL <bcp14>MUST</bcp14> be obtained from the authorization server's metadata document <xref target="RFC8414"/> using the <tt>token_exchange_target_service_discovery_endpoint</tt> parameter. The endpoint URL is an absolute URL.</t>
        <t>The client sends the parameters using the <tt>application/x-www-form-urlencoded</tt> format per Appendix B of <xref target="RFC6749"/>. Character encoding <bcp14>MUST</bcp14> be UTF-8 as specified in Appendix B of <xref target="RFC6749"/>. If a parameter is included more than once in the request, the authorization server <bcp14>MUST</bcp14> return an error response with the error code <tt>invalid_request</tt> as described in <xref target="error-response"/>.</t>
        <section anchor="request-parameters">
          <name>Request Parameters</name>
          <t>The following parameters are used in the request:</t>
          <dl>
            <dt>subject_token</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>. The subject token used as input to discovery. The token type is indicated by the <tt>subject_token_type</tt> parameter.</t>
            </dd>
            <dt>subject_token_type</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>. A string value containing a URI, as described in <xref section="3" sectionFormat="of" target="RFC8693"/>, that indicates the type of the <tt>subject_token</tt> parameter. This identifier <bcp14>MUST</bcp14> be a valid URI, and <bcp14>SHOULD</bcp14> be registered in the "OAuth URI Registry" as established by <xref target="RFC6755"/>.</t>
            </dd>
          </dl>
          <t>The client <bcp14>MAY</bcp14> include additional parameters as defined by extensions, and the authorization server <bcp14>MUST</bcp14> ignore parameters it does not understand. The parameters of the client authentication method in use (for example, <tt>client_id</tt>, <tt>client_secret</tt>, or <tt>client_assertion</tt> and <tt>client_assertion_type</tt>) are part of that method and are not treated as unknown parameters.</t>
          <t>The authorization server identifies the requesting client in order to evaluate its permissions (<xref target="authorization-policy-enforcement"/>). Client authentication <bcp14>MAY</bcp14> be required by the authorization server. The means of client authentication are defined by the authorization server and <bcp14>MAY</bcp14> include any method supported by the authorization server, including those defined in <xref section="2.3" sectionFormat="of" target="RFC6749"/> and extensions. If client authentication is required by the authorization server but not provided in the request, the authorization server <bcp14>MUST</bcp14> return an error response with the error code <tt>invalid_client</tt> as described in <xref target="error-response"/>. A public client that does not authenticate <bcp14>MAY</bcp14> identify itself with the <tt>client_id</tt> parameter; the authorization server determines the trust it places in such an unauthenticated identifier, and <bcp14>MAY</bcp14> base its results on the subject token alone when no client identity is established.</t>
        </section>
        <section anchor="subject-token-processing">
          <name>Subject Token Processing</name>
          <t>The authorization server <bcp14>MUST</bcp14> process the <tt>subject_token</tt> parameter according to the following rules:</t>
          <ol spacing="normal" type="1"><li>
              <t>The authorization server <bcp14>MUST</bcp14> validate that the <tt>subject_token</tt> and <tt>subject_token_type</tt> parameters are not empty strings. If either parameter is an empty string, the authorization server <bcp14>MUST</bcp14> return an error response with the error code <tt>invalid_request</tt> as described in <xref target="error-response"/>.</t>
            </li>
            <li>
              <t>The authorization server <bcp14>MUST</bcp14> validate that the <tt>subject_token_type</tt> parameter is a valid URI. If the format is invalid (e.g., not a valid absolute URI or URN), the authorization server <bcp14>MUST</bcp14> return an error response with the error code <tt>invalid_request</tt> as described in <xref target="error-response"/>.</t>
            </li>
            <li>
              <t>The authorization server <bcp14>MUST</bcp14> determine whether it supports the indicated token type. This determination is an implementation decision and <bcp14>MAY</bcp14> be based on the authorization server's capabilities, the <tt>subject_token</tt> value, the authenticated client, or any combination thereof. If the <tt>subject_token_type</tt> is not supported by the authorization server for the given context, the authorization server <bcp14>MUST</bcp14> return an error response with the error code <tt>unsupported_token_type</tt> as described in <xref target="error-response"/>.</t>
            </li>
            <li>
              <t>The authorization server <bcp14>MUST</bcp14> validate the <tt>subject_token</tt> according to the rules for the indicated token type. The validation process <bcp14>MUST</bcp14> verify:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The token is properly formatted for the indicated token type</t>
                </li>
                <li>
                  <t>The token's signature (if applicable) is valid and can be verified using the appropriate cryptographic keys</t>
                </li>
                <li>
                  <t>The token was issued by a trusted issuer</t>
                </li>
                <li>
                  <t>The token has not expired</t>
                </li>
                <li>
                  <t>The token has not been revoked, where revocation status is applicable and available for the token type; a token known to be revoked <bcp14>MUST</bcp14> be rejected</t>
                </li>
                <li>
                  <t>The token is associated with the authenticated client, if client authentication is required</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the <tt>subject_token</tt> is invalid for any reason (e.g., malformed, expired, revoked, or does not match the <tt>subject_token_type</tt>), the authorization server <bcp14>MUST</bcp14> return an error response with the error code <tt>invalid_request</tt> as described in <xref target="error-response"/>.</t>
            </li>
            <li>
              <t>The authorization server <bcp14>MUST</bcp14> evaluate the <tt>subject_token</tt> in conjunction with the requesting client's permissions (the authenticated client, when client authentication is used) to determine which Token Exchange Targets are available for discovery. The specific authorization policy evaluation mechanism is implementation-specific and <bcp14>MAY</bcp14> be based on scopes, claims, resource-based access control, or other authorization models.</t>
            </li>
          </ol>
        </section>
        <section anchor="request-example">
          <name>Request Example</name>
          <t>The following is an example of a discovery request:</t>
          <artwork><![CDATA[
POST /target-discovery HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

client_id=client-A
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOi...
&subject_token=SlAV32hkKG...ACCESSTOKEN...
&subject_token_type=urn:ietf:params:oauth:token-type:access_token
]]></artwork>
        </section>
      </section>
      <section anchor="endpoint-response">
        <name>Endpoint Response</name>
        <t>The authorization server validates the request and returns a response with the discovery results. The <tt>Content-Type</tt> header of the response <bcp14>MUST</bcp14> be set to <tt>application/json</tt>.</t>
        <t>Because the response contains sensitive, per-subject and per-client authorization information, the authorization server <bcp14>SHOULD</bcp14> set <tt>Cache-Control: no-store</tt> by default. A deployment that accepts the associated risk <bcp14>MAY</bcp14> instead permit bounded private caching; in that case the cache directives <bcp14>MUST</bcp14> mark the response as private (for example, <tt>Cache-Control: private</tt>) and shared caches <bcp14>MUST NOT</bcp14> store it. The authorization server <bcp14>MAY</bcp14> include cache validators (such as <tt>ETag</tt> or <tt>Last-Modified</tt> headers) to enable conditional requests by the client, as specified in <xref target="RFC9111"/>.</t>
        <section anchor="successful-response">
          <name>Successful Response</name>
          <t>If the request is valid and authorized, the authorization server returns a JSON <xref target="RFC8259"/> object containing a <tt>supported_targets</tt> property: an array of the Token Exchange Targets (see <xref target="terminology"/>) available to the client. To perform a token exchange, the client selects one target and uses its values as the corresponding request parameters.</t>
          <t>Empty and null values are not valid property values. The authorization server <bcp14>MUST NOT</bcp14> include an optional property whose value would be <tt>null</tt>, an empty string, an empty array, or an array containing an empty string; it <bcp14>MUST</bcp14> omit the property instead. A <bcp14>REQUIRED</bcp14> property <bcp14>MUST</bcp14> have a non-empty value.</t>
          <t>Each target object contains the following properties:</t>
          <dl>
            <dt>audience</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>. The value the client uses, verbatim, as the <tt>audience</tt> parameter in a subsequent token exchange request, identifying the Target Service as defined in <xref section="2.1" sectionFormat="of" target="RFC8693"/>. Its syntax is authorization-server-defined unless constrained by a profile of this specification; the client <bcp14>MUST</bcp14> treat it as opaque and <bcp14>MUST NOT</bcp14> assume it is a URI. If the value is a URI that does not itself provide a usable location (for example, a URN), the authorization server <bcp14>SHOULD</bcp14> also return a <tt>resource</tt> property that provides one. A multi-tenant Target Service returns a distinct <tt>audience</tt> value per tenant; see <xref target="multi-tenant-target-services"/>.</t>
            </dd>
            <dt>tenant</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>. A machine-readable identifier for the tenant of a multi-tenant Target Service. The issued token represents this tenant using the claim defined by the token format and Target Service (for example, the <tt>aud_tenant</tt> claim when the Identity Assertion Authorization Grant <xref target="I-D.oauth-identity-assertion-authz-grant"/> is used); the specific claim name and encoding are outside the scope of this specification. This property is included only when the Target Service is multi-tenant and the authorization server knows the tenant identifier. It is descriptive: it lets the client correlate a Target Service with the tenant context of the resulting issued token, and is not used as a selector in the token exchange request (the <tt>audience</tt> value selects the tenant).</t>
            </dd>
            <dt>resource</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>. A single resource indicator value or an array of resource indicator values, as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>, available for this target. Each value <bcp14>MUST</bcp14> be an absolute URI and <bcp14>MUST NOT</bcp14> include a fragment component, per <xref section="2" sectionFormat="of" target="RFC8707"/>. If present as an array, the array entries correspond to repeated <tt>resource</tt> parameters in the subsequent token exchange request.</t>
            </dd>
            <dt>scope</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>. A string value containing a space-delimited list of OAuth 2.0 scope values, as defined in <xref section="3.3" sectionFormat="of" target="RFC6749"/>, that are available for this target. Each scope value <bcp14>MUST</bcp14> conform to the scope syntax defined in <xref section="3.3" sectionFormat="of" target="RFC6749"/>. If present, the value <bcp14>MUST</bcp14> contain at least one scope value. The authorization server determines which scopes to return based on its authorization policy evaluation, which is implementation-specific. The scopes returned <bcp14>SHOULD</bcp14> be those that would be authorized in a subsequent token exchange request per <xref section="2.1" sectionFormat="of" target="RFC8693"/>.</t>
            </dd>
            <dt>supported_token_types</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>. An array of strings indicating the token types that may be requested for this target in a subsequent token exchange operation. Each string <bcp14>MUST</bcp14> be a valid absolute URI. A token type identifier <bcp14>MAY</bcp14> be any URI, as permitted by <xref section="3" sectionFormat="of" target="RFC8693"/>, when that URI identifies the requested token type or token usage profile understood by the authorization server and client. For example, <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> identifies a JWT intended to be presented as a JWT bearer authorization grant as defined by <xref target="RFC7523"/>; this specification intentionally permits the RFC 7523 grant-type URI to be used in this role, which the generic <tt>urn:ietf:params:oauth:token-type:jwt</tt> identifier does not convey. If omitted, the client may use any token type supported by the authorization server.</t>
            </dd>
            <dt>display_name</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>. A human-readable name for the Target Service, suitable for display to an end user (for example, in a service picker). This value is intended for presentation only and <bcp14>MUST NOT</bcp14> be used as a token exchange parameter.</t>
            </dd>
            <dt>client_id</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>. The OAuth 2.0 client identifier that the client uses with the Target Service when presenting the issued token (see <xref target="multi-tenant-target-services"/>). This property supports multi-tenant Target Services that require a distinct client registration for each tenant. The client is expected to possess credentials for the indicated client identifier where client authentication applies. If omitted, the client uses a client identity it determines is appropriate by other means.</t>
            </dd>
          </dl>
          <t>Extensions to this specification <bcp14>MAY</bcp14> define additional properties for the response object or for target objects. Clients <bcp14>MUST</bcp14> ignore any properties they do not understand.</t>
          <t>A target is identified by its <tt>audience</tt> together with its <tt>resource</tt> set (the complete set of <tt>resource</tt> values, or their absence). This key <bcp14>MUST</bcp14> be unique within the <tt>supported_targets</tt> array: no two targets may share both the same <tt>audience</tt> and the same <tt>resource</tt> set (when comparing sets, element order does not matter, but the membership must match). Multiple targets with the same <tt>audience</tt> <bcp14>MAY</bcp14> therefore be returned only when they differ in their <tt>resource</tt> set. Because each key appears at most once, a target's <tt>scope</tt> is the aggregate set of scopes authorized for that key, rather than one of several alternative scope bundles. A multi-tenant Target Service is represented as one target per tenant, each with a distinct <tt>audience</tt> (see <xref target="multi-tenant-target-services"/>), so the <tt>audience</tt> distinguishes the tenants.</t>
          <t>If no Token Exchange Targets are available for the given subject token and client, the authorization server returns a JSON object with an empty <tt>supported_targets</tt> array: <tt>{"supported_targets": []}</tt>.</t>
          <t>Discovery results reflect authorization at the time of the request and are not a guarantee. The authorization server re-evaluates authorization when the subsequent token exchange is performed, and that exchange might still fail (for example, if policy changed, the subject token expired, or the target became unavailable in the interim). A client <bcp14>MUST</bcp14> handle errors from the token exchange request <xref target="RFC8693"/> rather than assuming a discovered target will succeed.</t>
        </section>
        <section anchor="response-example">
          <name>Response Example</name>
          <t>The following is an example of a successful discovery response:</t>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "supported_targets": [
    {
      "audience": "https://api.example.com",
      "resource": [
        "https://api.example.com/orders",
        "https://api.example.com/inventory"
      ],
      "scope": "orders.read inventory.read",
      "supported_token_types": [
        "urn:ietf:params:oauth:token-type:access_token"
      ]
    },
    {
      "audience": "https://billing.provider.example",
      "scope": "customer.read customer.write",
      "supported_token_types": [
        "urn:ietf:params:oauth:grant-type:jwt-bearer"
      ]
    },
    {
      "audience": "https://backend-audit-service.example.com",
      "scope": "audit.read audit.write",
      "supported_token_types": [
        "urn:ietf:params:oauth:token-type:access_token"
      ]
    }
  ]
}
]]></artwork>
        </section>
      </section>
      <section anchor="multi-tenant-target-services">
        <name>Multi-Tenant Target Services</name>
        <t>A Target Service may be multi-tenant, sharing the same authorization server and/or the same resource across two or more tenants, where the tenant is identified by a claim in the issued token. For example, an authorization server <tt>as.saas.example</tt> may host two tenants, <tt>dev</tt> and <tt>staging</tt>, that share the resource <tt>https://api.saas.example</tt>. Because the resource (and authorization server) is shared, the resource indicator alone cannot distinguish the tenants.</t>
        <t>To support this case without changing the OAuth 2.0 Token Exchange <xref target="RFC8693"/> request contract, the authorization server represents each tenant of a multi-tenant Target Service as a separate target object with a distinct <tt>audience</tt> value. As described for the <tt>audience</tt> property, the client uses the discovered value verbatim as the <tt>audience</tt> parameter in the subsequent token exchange request, and the authorization server resolves it to the tenant-specific audience and tenant context in the issued token. The claim that conveys the tenant in the issued token is determined by the token format and Target Service (for example, the <tt>aud_tenant</tt> claim when the Identity Assertion Authorization Grant <xref target="I-D.oauth-identity-assertion-authz-grant"/> is used) and is outside the scope of this specification.</t>
        <t>When a Target Service is multi-tenant, the authorization server <bcp14>SHOULD</bcp14> include the <tt>tenant</tt> property so that the client can correlate the Target Service with the tenant context of the resulting issued token, and <bcp14>SHOULD</bcp14> include the <tt>display_name</tt> property so that a client can present a tenant picker to an end user.</t>
        <t>If a multi-tenant Target Service requires a distinct client registration for each tenant, the authorization server <bcp14>MAY</bcp14> include the <tt>client_id</tt> property in each target object to indicate the client identifier the client uses with that tenant when presenting the issued token. The issued token is not necessarily presented through token exchange: depending on the Target Service, it may be an authorization grant, such as an ID-JAG <xref target="I-D.oauth-identity-assertion-authz-grant"/>, that the client redeems at the Target Service's authorization server (where this <tt>client_id</tt> is used for client authentication), or an access token that the client presents directly to a resource server. If a shared client registration is used across tenants, the <tt>client_id</tt> property is omitted.</t>
        <t>The following is a non-normative example of a discovery response for a multi-tenant Target Service with two tenants that share the same resource:</t>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "supported_targets": [
    {
      "audience": "urn:saas:tenant:dev",
      "tenant": "dev",
      "resource": "https://api.saas.example",
      "scope": "orders.read orders.write",
      "supported_token_types": [
        "urn:ietf:params:oauth:grant-type:jwt-bearer"
      ],
      "display_name": "SaaS Example Dev",
      "client_id": "client-dev"
    },
    {
      "audience": "urn:saas:tenant:staging",
      "tenant": "staging",
      "resource": "https://api.saas.example",
      "scope": "orders.read orders.write",
      "supported_token_types": [
        "urn:ietf:params:oauth:grant-type:jwt-bearer"
      ],
      "display_name": "SaaS Example Staging",
      "client_id": "client-staging"
    }
  ]
}
]]></artwork>
        <t>The client presents the two tenants to the end user using the <tt>display_name</tt> values (for example, "SaaS Example Dev" and "SaaS Example Staging"). Once the user selects a tenant, the client performs the token exchange using the corresponding <tt>audience</tt> value (for example, <tt>urn:saas:tenant:dev</tt>). When the resulting issued token is later presented at the Target Service, the client uses the corresponding <tt>client_id</tt>, if present and where client authentication applies.</t>
      </section>
      <section anchor="error-response">
        <name>Error Response</name>
        <t>If the request failed, the authorization server returns an error response as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>. The response <bcp14>MUST</bcp14> use the <tt>application/json</tt> media type, and the <tt>Content-Type</tt> header <bcp14>MUST</bcp14> be set to <tt>application/json</tt>. In addition to the error codes specified in <xref section="5.2" sectionFormat="of" target="RFC6749"/>, the following error codes may be returned:</t>
        <dl>
          <dt>unsupported_token_type</dt>
          <dd>
            <t>The authorization server does not support the subject token type indicated by the <tt>subject_token_type</tt> parameter.</t>
          </dd>
        </dl>
        <t>The HTTP status code is determined as specified in <xref section="5.2" sectionFormat="of" target="RFC6749"/>. In particular, when the error is <tt>invalid_client</tt> and the client attempted to authenticate via the <tt>Authorization</tt> request header field, the authorization server responds with HTTP 401 (Unauthorized) and includes a <tt>WWW-Authenticate</tt> response header field; otherwise it responds with HTTP 400 (Bad Request).</t>
        <t>When the authorization server rate-limits a client (see <xref target="information-disclosure"/>), it <bcp14>MAY</bcp14> respond with HTTP 429 (Too Many Requests) <xref target="RFC6585"/> and <bcp14>SHOULD</bcp14> include a <tt>Retry-After</tt> header field <xref target="RFC9110"/>.</t>
        <section anchor="error-response-example">
          <name>Error Response Example</name>
          <t>The following is an example of an error response:</t>
          <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "error": "invalid_request",
  "error_description": "The subject token is invalid or expired"
}
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="example">
      <name>Example</name>
      <t>This example demonstrates a complete cross-domain identity chaining workflow described in <xref target="I-D.ietf-oauth-identity-chaining"/> with the addition of the token exchange target service discovery endpoint.</t>
      <section anchor="step-1-discover-target-services">
        <name>Step 1: Discover Target Services</name>
        <t>The client begins with a subject access token issued by Domain A and calls the target service discovery endpoint to learn which Token Exchange Targets are available.</t>
        <section anchor="discovery-request">
          <name>Discovery Request</name>
          <artwork><![CDATA[
POST https://as.domainA.example/target-discovery HTTP/1.1
Host: as.domainA.example
Content-Type: application/x-www-form-urlencoded

client_id=client-A
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOi...
&subject_token=SlAV32hkKG...ACCESSTOKEN...
&subject_token_type=urn:ietf:params:oauth:token-type:access_token
]]></artwork>
        </section>
        <section anchor="discovery-response">
          <name>Discovery Response</name>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "supported_targets": [
    {
      "audience": "https://api.domainB.example",
      "resource": [
        "https://api.domainB.example/orders",
        "https://api.domainB.example/inventory"
      ],
      "scope": "orders.read inventory.read",
      "supported_token_types": [
        "urn:ietf:params:oauth:grant-type:jwt-bearer"
      ]
    }
  ]
}
]]></artwork>
          <t>From this response, the client learns that it may request a token exchange for the audience <tt>https://api.domainB.example</tt> with the resources <tt>https://api.domainB.example/orders</tt> and <tt>https://api.domainB.example/inventory</tt> and the scopes <tt>orders.read</tt> and <tt>inventory.read</tt>. The <tt>supported_token_types</tt> value tells the client that, in the subsequent token exchange, it may request a JWT to be presented to the Target Service as a <tt>jwt-bearer</tt> authorization grant <xref target="RFC7523"/>.</t>
        </section>
      </section>
      <section anchor="step-2-determine-token-types-optional">
        <name>Step 2: Determine Token Types (Optional)</name>
        <t>The discovery response's <tt>supported_token_types</tt> property indicates the token types the client may request for the target. In this example it listed <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt>, so the client proceeds directly to the token exchange. When a discovery response omits <tt>supported_token_types</tt>, the client determines the requestable token types from the Target Service's documentation or other out-of-band configuration.</t>
      </section>
      <section anchor="step-3-perform-token-exchange">
        <name>Step 3: Perform Token Exchange</name>
        <t>The client now performs a token exchange with Domain A's token endpoint, requesting a JWT for Domain B using the values discovered in the previous steps.</t>
        <section anchor="token-exchange-request">
          <name>Token Exchange Request</name>
          <artwork><![CDATA[
POST https://as.domainA.example/token HTTP/1.1
Host: as.domainA.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&client_id=client-A
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOi...
&subject_token=SlAV32hkKG...ACCESSTOKEN...
&subject_token_type=urn:ietf:params:oauth:token-type:access_token
&requested_token_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&audience=https://api.domainB.example
&resource=https://api.domainB.example/orders
&resource=https://api.domainB.example/inventory
&scope=orders.read inventory.read
]]></artwork>
        </section>
        <section anchor="token-exchange-response">
          <name>Token Exchange Response</name>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "access_token": "eyJraWQiOi...DOMAINB.JWT...",
  "issued_token_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
  "token_type": "N_A",
  "expires_in": 3600,
  "scope": "orders.read inventory.read"
}
]]></artwork>
          <t>The client now holds a Domain-B-scoped JWT token that can be used to access the Target Service, derived from Domain A's access token through the token exchange process.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="subject-token-validation">
        <name>Subject Token Validation</name>
        <t>The authorization server <bcp14>MUST</bcp14> validate the subject token as specified in <xref target="subject-token-processing"/>. In particular, it <bcp14>MUST</bcp14> verify that the token is well-formed for the indicated type, is correctly signed by a trusted issuer, has not expired, has not been revoked (where revocation status is applicable and available), and, where client authentication is required, is associated with the authenticated client. A token that fails validation <bcp14>MUST</bcp14> be rejected as described in <xref target="subject-token-processing"/>.</t>
      </section>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>The authorization server <bcp14>SHOULD</bcp14> require client authentication for the discovery endpoint to prevent unauthorized access to authorization information. The authorization server <bcp14>MUST</bcp14> support at least one of the client authentication methods defined in <xref section="2.3" sectionFormat="of" target="RFC6749"/>. If client authentication is required but not provided, the authorization server <bcp14>MUST</bcp14> return an error response with the error code <tt>invalid_client</tt> as described in <xref target="error-response"/>.</t>
      </section>
      <section anchor="authorization-policy-enforcement">
        <name>Authorization Policy Enforcement</name>
        <t>The authorization server <bcp14>MUST</bcp14> evaluate both the subject token and the client's permissions when determining which Token Exchange Targets to return. The server <bcp14>MUST</bcp14> only return targets that the client is authorized to request in a subsequent token exchange operation. The specific authorization policy evaluation mechanism is implementation-specific and <bcp14>MAY</bcp14> be based on scopes, claims, resource-based access control, attribute-based access control, or other authorization models supported by the authorization server.</t>
      </section>
      <section anchor="information-disclosure">
        <name>Information Disclosure</name>
        <t>The discovery endpoint reveals information about which Target Services are available for a given subject token and client. This information could be used by an attacker to enumerate authorization relationships. To mitigate this risk:</t>
        <ul spacing="normal">
          <li>
            <t>The authorization server <bcp14>SHOULD</bcp14> require client authentication</t>
          </li>
          <li>
            <t>The authorization server <bcp14>SHOULD</bcp14> apply rate limiting to prevent enumeration attacks</t>
          </li>
          <li>
            <t>The authorization server <bcp14>MAY</bcp14> return different results based on the authenticated client to limit information disclosure</t>
          </li>
          <li>
            <t>The authorization server <bcp14>SHOULD</bcp14> log access to the discovery endpoint for security monitoring</t>
          </li>
        </ul>
      </section>
      <section anchor="multi-tenant-information-disclosure">
        <name>Multi-Tenant Information Disclosure</name>
        <t>For multi-tenant Target Services, the <tt>tenant</tt>, <tt>display_name</tt>, and <tt>client_id</tt> properties reveal the existence of specific tenants and, where present, the per-tenant client registration topology of the authorization server. This information could be used by an attacker to enumerate tenants or client registrations. The authorization server <bcp14>MUST</bcp14> only return target objects, including their tenant and client registration properties, that the authenticated client is authorized to discover, applying the same authorization policy enforcement and information disclosure mitigations described in this section. The authorization server <bcp14>SHOULD NOT</bcp14> include a <tt>client_id</tt> value that the authenticated client is not authorized to use.</t>
      </section>
      <section anchor="token-confidentiality">
        <name>Token Confidentiality</name>
        <t>The subject token is transmitted in the request. The authorization server <bcp14>MUST</bcp14> require the use of TLS as specified in <xref section="1.6" sectionFormat="of" target="RFC6749"/> to protect the token in transit. Because the request body carries a live credential, the authorization server <bcp14>MUST NOT</bcp14> record the <tt>subject_token</tt> (or other equally sensitive request content) in logs, audit records, or error reports, and <bcp14>SHOULD</bcp14> avoid emitting it where it could be retained by intermediaries.</t>
      </section>
      <section anchor="error-handling">
        <name>Error Handling</name>
        <t>The authorization server <bcp14>MUST NOT</bcp14> provide detailed error messages that could aid an attacker in understanding the authorization server's internal state or policies. Error responses <bcp14>SHOULD</bcp14> be generic and not reveal specific information about why a request failed beyond what is necessary for the client to correct the request.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The discovery endpoint returns information about authorization relationships between subjects, clients, and Target Services. This information may be considered privacy-sensitive, as it reveals:</t>
      <ul spacing="normal">
        <li>
          <t>Which Target Services a subject is authorized to access</t>
        </li>
        <li>
          <t>The scope of permissions available for each Target Service</t>
        </li>
        <li>
          <t>The existence of authorization relationships</t>
        </li>
        <li>
          <t>For multi-tenant Target Services, the specific tenants a subject is associated with or authorized to access, as conveyed by the <tt>tenant</tt>, <tt>display_name</tt>, and <tt>client_id</tt> properties</t>
        </li>
      </ul>
      <t>To protect privacy:</t>
      <ul spacing="normal">
        <li>
          <t>The authorization server <bcp14>SHOULD</bcp14> only return information that the authenticated client is authorized to know</t>
        </li>
        <li>
          <t>The authorization server <bcp14>SHOULD</bcp14> apply the principle of least privilege when determining which Token Exchange Targets to return</t>
        </li>
        <li>
          <t>The authorization server <bcp14>SHOULD</bcp14> only disclose tenant-identifying properties (<tt>tenant</tt>, <tt>display_name</tt>, and <tt>client_id</tt>) for the tenants that both the subject and the authenticated client are authorized to access</t>
        </li>
        <li>
          <t>The authorization server <bcp14>SHOULD</bcp14> log access to the discovery endpoint in accordance with applicable privacy regulations</t>
        </li>
        <li>
          <t>The authorization server <bcp14>MAY</bcp14> provide mechanisms for subjects to control or limit the information returned by the discovery endpoint</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="oauth-authorization-server-metadata-registry">
        <name>OAuth Authorization Server Metadata Registry</name>
        <t>This specification registers the following value in the IANA "OAuth Authorization Server Metadata" registry established by <xref target="RFC8414"/>.</t>
        <t>Metadata Name: <tt>token_exchange_target_service_discovery_endpoint</tt></t>
        <t>Metadata Description: URL of the token exchange target service discovery endpoint</t>
        <t>Change Controller: IETF</t>
        <t>Specification Document(s): [[ This document ]]</t>
      </section>
      <section anchor="oauth-extensions-error-registry">
        <name>OAuth Extensions Error Registry</name>
        <t>This specification registers the following error in the IANA "OAuth Extensions Error Registry" established by <xref target="RFC6749"/>, adding a usage location for the token exchange target service discovery endpoint. The error name <tt>unsupported_token_type</tt> is also registered for other usage locations (for example, the token revocation endpoint); this registration adds a distinct usage location and does not change the existing entries.</t>
        <t>Error Name: <tt>unsupported_token_type</tt></t>
        <t>Error Usage Location: Token exchange target service discovery endpoint response</t>
        <t>Related Protocol Extension: OAuth 2.0 Token Exchange Target Service Discovery</t>
        <t>Change Controller: IETF</t>
        <t>Specification Document(s): [[ This document ]]</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749" target="https://www.rfc-editor.org/info/rfc6749" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
          <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="RFC7523" target="https://www.rfc-editor.org/info/rfc7523" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7523.xml">
          <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="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <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="RFC8707" target="https://www.rfc-editor.org/info/rfc8707" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8707.xml">
          <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="RFC8414" target="https://www.rfc-editor.org/info/rfc8414" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8414.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8693" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8693.xml">
          <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="RFC9111" target="https://www.rfc-editor.org/info/rfc9111" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9111.xml">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6585" target="https://www.rfc-editor.org/info/rfc6585" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6585.xml">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
        <reference anchor="RFC6755" target="https://www.rfc-editor.org/info/rfc6755" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6755.xml">
          <front>
            <title>An IETF URN Sub-Namespace for OAuth</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This document establishes an IETF URN Sub-namespace for use with OAuth-related specifications. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6755"/>
          <seriesInfo name="DOI" value="10.17487/RFC6755"/>
        </reference>
        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining" target="https://datatracker.ietf.org/doc/html/draft-ietf-oauth-identity-chaining-14" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-oauth-identity-chaining.xml">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="2" month="June" year="2026"/>
            <abstract>
              <t>This specification describes a mechanism for preserving identity and authorization information across trust domains that use the OAuth 2.0 Framework. A JSON Web Token (JWT) authorization grant, obtained through an intra-domain OAuth 2.0 Token Exchange, facilitates the cross-domain acquisition of an access token. The relevant identity and authorization information is chained throughout the flow by being conveyed in the respective artifacts exchanged at each step of the process. Chaining across multiple domains is achieved by using the same protocol every time a trust domain boundary is crossed.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-14"/>
        </reference>
        <reference anchor="I-D.oauth-identity-assertion-authz-grant" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-identity-assertion-authz-grant/">
          <front>
            <title>OAuth 2.0 Identity Assertion JWT Authorization Grant</title>
            <author initials="A." surname="Parecki" fullname="Aaron Parecki">
              <organization/>
            </author>
            <author initials="K." surname="McGuinness" fullname="Karl McGuinness">
              <organization/>
            </author>
            <author initials="B." surname="Campbell" fullname="Brian Campbell">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 514?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the following individuals who contributed ideas, feedback, and wording that helped shape this specification: Max Gerber</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Added optional support for multi-tenant Target Services that share an authorization server and/or resource across tenants, via the optional <tt>tenant</tt>, <tt>display_name</tt>, and <tt>client_id</tt> properties and a new Multi-Tenant Target Services section; a distinct <tt>audience</tt> per tenant selects the tenant without changing the OAuth 2.0 Token Exchange request contract.</t>
        </li>
        <li>
          <t>Added a terminology section defining "Target Service" (the downstream service) and "Token Exchange Target" (a pre-authorized combination of Token Exchange request parameters); named each response element a "target object"; and clarified that discovery returns authorized Token Exchange Targets, not an assertion that a service is reachable.</t>
        </li>
        <li>
          <t>Defined the <tt>audience</tt> property as the exact, opaque value the client uses verbatim in Token Exchange, with authorization-server-defined syntax unless profiled, and specified that the <tt>(audience, resource set)</tt> pair uniquely identifies a target whose <tt>scope</tt> is the aggregate authorized for that pair.</t>
        </li>
        <li>
          <t>Clarified requesting a JWT for use as an RFC 7523 <tt>jwt-bearer</tt> authorization grant: examples and <tt>supported_token_types</tt> use <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> as the token type value (replacing the invalid <tt>urn:ietf:params:oauth:token-type:jwt-bearer</tt>), a token type identifier must identify the requested token type or usage, and RFC 7523 is now normative.</t>
        </li>
        <li>
          <t>Aligned the <tt>resource</tt> property with RFC 8707 (absolute URI, no fragment, array entries mapping to repeated <tt>resource</tt> parameters).</t>
        </li>
        <li>
          <t>Consolidated empty-value handling into a single rule: optional properties with an empty string, empty array, or null value are omitted, and a present <tt>scope</tt> contains at least one value.</t>
        </li>
        <li>
          <t>Clarified the client identity model (client authentication parameters are not unknown parameters; public-client identification) and that the requesting client's permissions are evaluated.</t>
        </li>
        <li>
          <t>Switched the caching reference to RFC 9111 (normative): no-store by default, with bounded private caching as an opt-in and no shared-cache storage.</t>
        </li>
        <li>
          <t>Defined error behavior: registered an <tt>unsupported_token_type</tt> usage location in the OAuth Extensions Error Registry, mapped <tt>invalid_client</tt> to HTTP 401 per RFC 6749, and added HTTP 429 with <tt>Retry-After</tt> (RFC 6585, RFC 9110) for rate limiting.</t>
        </li>
        <li>
          <t>Strengthened security and privacy guidance: the subject token must not be logged, the subject-token revocation check applies where revocation status is available, and multi-tenant tenant/client information is disclosed only to authorized clients.</t>
        </li>
        <li>
          <t>Moved the Authorization Server Metadata parameter into the endpoint section so the endpoint URL is discovered before it is used.</t>
        </li>
        <li>
          <t>Editorial: replaced the obsolete RFC 7159 reference with RFC 8259, corrected the <tt>abbrev</tt> value, set IANA change controllers to IETF, added client authentication to the examples, narrowed the abstract, and made terminology and capitalization consistent.</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Changed discovery response to an object for extensibility with supported_targets param</t>
        </li>
        <li>
          <t>Updated references</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial revision</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
RSNB7rD/9EiH6j0/NOApncWXGBit7QvdYzgnQMuGxa++4K4sIz9i7SU4In4E
4iV2g3SIF/XnU+qH5+qP+QnJVZG8YsIfzqcOF7SAM86qhufkGZufXQ7V3Peh
Jp4b0TlO0G1JjsOWS5OcivdPj0/pmR8LLDUKvaD0wxOUM3kdX1Hx1FYfGc9o
lfnv+K/4gr7+P52G8HeA/+dYOXJOClJ1TnlG5/KmyzKi8q2/3dXx2MCJl90j
fmfWf5qPf5ikr9Lj42N+JsDn7y6zi39/cDa/+ekHeODiyZNnl5dXr3569rL7
8U0rZM2dlsUHLO6pppeYKXGDWq+CMbDUgwTTpIMv+MdNVgsj+8g/sVE0Nwna
+OL0sKMoM8Z4FlBa4Pz8G7DBEWDhYzNJNDZgXxR/FmaKgpXLiX8b8i16UzY2
8EXxSeHSRk+SydzET5hwzoHhxlVdlLCvMeYtXiewbzRCXQqjxLmlFoXmcEKl
TKsbcQyABE0k/1NS/TAdtExvSSbDrEBkj9jchvGwGIS9RrgeScJPsQaAALlI
ypsQTEllB2s4kRo7kqfQG4SZMZiiNuVZZGxMKqA9g7q8iY977g5epGBVUXrR
yNGzq2Q2Il/Vz0lVxy+KKekmiifVkR/gKnLrtNN6GdVQlZO3QwtS/mY9wJcr
oo3rVeaRwvPrANUDtclFzjfgiCOMP12+eikBhrOH6IQpGBEDx2tX+JvVwHp9
TmEDjIUrlfTGdCmBwc/k+XTkZwkVHmiwYkHDtVYtckmrngeSM+oqquGRwFDC
OXUV+SQkpzzRepOSkYx05XbKA0D9GdnPOEa+yjL7vpjhDGjdvPy6TUFAJHTO
tKhYqi9Xh+EMWXZ53xWrbIrMZYTzUypFw6a3XxDYxX6SM/DPLXyPUhVoOQUS
LUVydH4haOQF6op3P9I78+TWSAySB9VA5TNMKhfAh7jTjBfLgCl5TzSw34pG
MBC8A8aTHKIZMAbALoZ6kl5eiucZyLXgg8vWGoFD6/dTR5paFM2EjKrPY3ka
xBhAPwYMq9aw3Q9+qUIQWteRVnkmWgzmfKsTNkGwXKcayG2G3h/5kKCDII82
HiUsslgmsCFWqRTPgF+vFlSQRm4S30HCoNWvG85GcSmKqxQeWVVElpnaNCEj
TrZ5TkQMJVlVWC3dSxVy6EXLsImuQMaIhYv+dGSPedmcXA8ZeJMuFfdRtEvi
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

-->

</rfc>
