<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcguinness-token-xchg-target-svc-disco-01" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Token Exchange Target Service Discovery&quot;">OAuth 2.0 Token Exchange Target Service Discovery</title>
    <seriesInfo name="Internet-Draft" value="draft-mcguinness-token-xchg-target-svc-disco-01"/>
    <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="February" day="14"/>
    <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 58?>

<t>This specification defines a method for OAuth 2.0 clients to discover the set of available target services (audiences, resources, and scopes) for a given subject token when performing OAuth 2.0 Token Exchange. The discovery endpoint accepts any subject token type registered in the OAuth Token Type Registry 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 62?>

<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 server’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 (audiences, resources, and scopes) 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 must be exchanged with narrower or transformed permissions at each hop. In these scenarios, discovery is critical because the set of available downstream services and their required permissions vary based on the subject token's context and the client's authorization. The permission narrowing at each service hop means that static configuration cannot accommodate these per-subject and per-client variations, leading to integration failures when clients attempt token exchanges for services the subject is not authorized to access.</t>
        </li>
        <li>
          <t>Cross-boundary deployments where downstream services exist in separate administrative, organizational, or cloud domains requiring strict control over token issuance and acceptance. Unlike progressive token exchange which focuses on permission transformation within a single domain, this scenario addresses the challenge of discovering available target services across distinct trust boundaries where authorization policies are independently managed. Discovery is essential here because authorization policies and available target services change dynamically across these boundaries, and static configuration cannot reflect real-time policy decisions or account for varying permissions across different administrative domains.</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>
      </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 target services 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 target services 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 target services varies by user or client. Static configurations cannot accommodate these per-subject or per-client variations.</t>
        </li>
      </ul>
    </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?>

</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 target services (audiences, resources, and scopes) 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="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 unknown parameters.</t>
          <t>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"/>.</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</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 authenticated client's permissions to determine which target services 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. When constructing the response, the authorization server <bcp14>MUST</bcp14> omit any target service objects or properties that would contain empty strings.</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

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>The authorization server <bcp14>MAY</bcp14> include HTTP cache validators (such as <tt>ETag</tt> or <tt>Last-Modified</tt> headers) and expiration times (such as <tt>Cache-Control</tt> or <tt>Expires</tt> headers) in the response to enable conditional requests by the client, as specified in <xref target="RFC7234"/>.</t>
        <section anchor="successful-response">
          <name>Successful Response</name>
          <t>If the request is valid and authorized, the authorization server returns a JSON object containing a <tt>supported_targets</tt> property with an array of available token exchange targets. Each element in the array represents a target service that the client is authorized to request in a subsequent token exchange operation.</t>
          <t>Each target service object contains the following properties:</t>
          <dl>
            <dt>audience</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>. A string value containing an absolute URI indicating an available audience value for token exchange, as defined in <xref section="2.1" sectionFormat="of" target="RFC8693"/>. Empty strings are not supported and the response <bcp14>MUST</bcp14> contain an URI. If the <tt>audience</tt> value is a URI but not a URL (e.g., a URN) and does not provide a location, the authorization server <bcp14>SHOULD</bcp14> return a <tt>resource</tt> property that contains a location.</t>
            </dd>
            <dt>resource</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>. A string value containing an absolute URI, or an array of string values each containing a URI, indicating available resource indicator values, as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>. Empty strings are not supported. If present as a string, the string <bcp14>MUST</bcp14> contain a non-empty URI. If present as an array, the array <bcp14>MUST</bcp14> contain at least one non-empty URI string and <bcp14>MUST NOT</bcp14> be empty. If no resources are available for a target service, this property <bcp14>MUST</bcp14> be omitted from the response rather than including an empty string, empty array, or null value.</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 service. Each individual scope value in the list <bcp14>MUST</bcp14> conform to the scope syntax defined in <xref section="3.3" sectionFormat="of" target="RFC6749"/>. Empty strings are not supported. If the property is present, the string <bcp14>MUST</bcp14> contain at least one non-empty scope value. If no scopes are available for a target service, this property <bcp14>MUST</bcp14> be omitted from the response rather than including an empty string. 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 service in a subsequent token exchange operation. Each string <bcp14>MUST</bcp14> be a valid absolute URI. Empty strings are not supported; array elements <bcp14>MUST</bcp14> contain non-empty URI strings. If the array would be empty or contain only empty strings, this property <bcp14>MUST</bcp14> be omitted from the response. If omitted, the client may use any token type supported by the authorization server.</t>
            </dd>
          </dl>
          <t>Extensions to this specification <bcp14>MAY</bcp14> define additional properties for the response object or for target service objects. Clients <bcp14>MUST</bcp14> ignore any properties they do not understand.</t>
          <t>Multiple target service objects for the same audience <bcp14>MAY</bcp14> be returned with different resource(s) and scopes. The combination of <tt>audience</tt> and <tt>resource</tt> (the entire set of resources, when present) <bcp14>MUST</bcp14> be unique within the <tt>supported_targets</tt> array. That is, no two objects in the <tt>supported_targets</tt> array may have both the same <tt>audience</tt> value and the same set of <tt>resource</tt> values (when comparing arrays, the order of elements does not matter, but the complete set must match).</t>
          <t>If no target services 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>
        </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:token-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="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>
        <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 target services 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:token-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 client also learns that JWT bearer tokens are supported for this target service.</t>
        </section>
      </section>
      <section anchor="step-2-discover-token-types-optional">
        <name>Step 2: Discover Token Types (Optional)</name>
        <t>If the discovery response does not include <tt>supported_token_types</tt>, or if the client needs to verify token type support, the client may query the Authorization Server Metadata of Domain B to determine which token types are supported for the target service.</t>
        <section anchor="metadata-request">
          <name>Metadata Request</name>
          <artwork><![CDATA[
GET https://as.domainB.example/.well-known/oauth-authorization-server HTTP/1.1
Host: as.domainB.example
]]></artwork>
        </section>
        <section anchor="metadata-response">
          <name>Metadata Response</name>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "issuer": "https://as.domainB.example",
  "token_endpoint": "https://as.domainB.example/token",
  "requested_token_types_supported": [
    "urn:ietf:params:oauth:token-type:jwt-bearer"
  ]
}
]]></artwork>
          <t>This confirms that Domain B supports JWT bearer tokens as a requested token type.</t>
        </section>
      </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
&subject_token=SlAV32hkKG...ACCESSTOKEN...
&subject_token_type=urn:ietf:params:oauth:token-type:access_token
&requested_token_type=urn:ietf:params:oauth:token-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:token-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="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="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 provided in the request. The validation process <bcp14>MUST</bcp14> verify that:</t>
        <ul spacing="normal">
          <li>
            <t>The subject token is valid and not expired</t>
          </li>
          <li>
            <t>The subject token type matches the <tt>subject_token_type</tt> parameter</t>
          </li>
          <li>
            <t>The subject token is associated with the authenticated client (if client authentication is required)</t>
          </li>
          <li>
            <t>The subject token has not been revoked</t>
          </li>
        </ul>
        <t>If any validation fails, the authorization server <bcp14>MUST</bcp14> return an <tt>invalid_request</tt> error as described in <xref target="error-response"/>.</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 target services to return. The server <bcp14>MUST</bcp14> only return target services 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="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.</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>
      </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 target services to return</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: IESG</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="RFC7159" target="https://www.rfc-editor.org/info/rfc7159" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7159.xml">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="March" year="2014"/>
            <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="RFC" value="7159"/>
          <seriesInfo name="DOI" value="10.17487/RFC7159"/>
        </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="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="RFC7234" target="https://www.rfc-editor.org/info/rfc7234" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7234.xml">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): 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="2014"/>
            <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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7234"/>
          <seriesInfo name="DOI" value="10.17487/RFC7234"/>
        </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="I-D.ietf-oauth-identity-chaining" target="https://datatracker.ietf.org/doc/html/draft-ietf-oauth-identity-chaining-08" 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>
            <date day="9" month="February" year="2026"/>
            <abstract>
              <t>This specification defines a mechanism to preserve identity and authorization information across trust domains that use the OAuth 2.0 Framework. Discussion Venues This note is to be removed before publishing as an RFC. Discussion of this document takes place on the Web Authorization Protocol Working Group mailing list (oauth@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/oauth/. Source for this draft and an issue tracker can be found at https://github.com/oauth-wg/oauth-identity-chaining.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-08"/>
        </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="2025"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 434?>

<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>-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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

-->

</rfc>
