<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcguinness-token-xchg-target-svc-disco-00" 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-00"/>
    <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://www.okta.com</uri>
      </address>
    </author>
    <date year="2025" month="December" day="16"/>
    <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 Section 7.</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 Section 1.6 of <xref 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 as defined by <xref target="RFC3986"/>.</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 Section 2.2.</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 Section 5 of <xref target="RFC8693"/>, that indicates the type of the <tt>subject_token</tt> parameter. This identifier <bcp14>MUST</bcp14> be a valid URI, as defined in <xref target="RFC3986"/>, and <bcp14>SHOULD</bcp14> be registered in the "OAuth Token Type Registry" as defined in Section 5.1 of <xref target="RFC8693"/>.</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 Section 2.3 of <xref target="RFC6749"/>. 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 Section 2.2.</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 Section 2.2.</t>
            </li>
            <li>
              <t>The authorization server <bcp14>MUST</bcp14> validate that the <tt>subject_token_type</tt> parameter is a valid URI per the URI validation requirements specified in Section 2.1.2. 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 Section 2.2.</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 Section 2.2.</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 Section 2.2.</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 fields that would contain empty strings, as specified in Section 2.1.2.</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 response <bcp14>MUST</bcp14> use the <tt>application/json</tt> media type as specified in <xref target="RFC7159"/>. 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 Section 13 of <xref target="RFC2616"/>.</t>
        <section anchor="successful-response">
          <name>Successful Response</name>
          <t>If the request is valid and authorized, the authorization server returns a JSON 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 fields:</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 Section 2.1 of <xref 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> field 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 Section 2 of <xref target="RFC8707"/>. In JSON, URI values are represented as strings. 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 field <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 Section 3.3 of <xref 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 Section 3.3 of <xref target="RFC6749"/>. Empty strings are not supported. If the field 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 field <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 Section 2.2 of <xref 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, as defined in <xref target="RFC3986"/>. 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 field <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>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 target service array. That is, no two objects in the 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 an empty array <tt>[]</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

[
  {
    "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 Section 5.2 of <xref 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>. The HTTP status code <bcp14>MUST</bcp14> be set according to the error code, as specified below and in Section 5.2 of <xref target="RFC6749"/>. The following error codes may be returned:</t>
        <dl>
          <dt>invalid_request</dt>
          <dd>
            <t>The request is missing a required parameter, includes an invalid parameter value (such as an invalid URI format for <tt>subject_token_type</tt> or an empty string for <tt>subject_token</tt> or <tt>subject_token_type</tt>), includes a parameter more than once, or is otherwise malformed. This error code is also returned when the provided subject token is invalid, expired, revoked, or does not match the subject token type, or when another error condition occurred during token validation. The HTTP status code <bcp14>MUST</bcp14> be 400 (Bad Request).</t>
          </dd>
          <dt>invalid_client</dt>
          <dd>
            <t>Client authentication failed (e.g., unknown client, no client authentication included when required, or unsupported authentication method). This error code <bcp14>MUST</bcp14> be returned when client authentication is required by the authorization server but not provided in the request. The HTTP status code <bcp14>MUST</bcp14> be 401 (Unauthorized).</t>
          </dd>
          <dt>unauthorized_client</dt>
          <dd>
            <t>The authenticated client is not authorized to use this discovery endpoint. The HTTP status code <bcp14>MUST</bcp14> be 403 (Forbidden).</t>
          </dd>
          <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. The HTTP status code <bcp14>MUST</bcp14> be 400 (Bad Request).</t>
          </dd>
          <dt>invalid_scope</dt>
          <dd>
            <t>The request includes an invalid scope parameter. The HTTP status code <bcp14>MUST</bcp14> be 400 (Bad Request).</t>
          </dd>
          <dt>server_error</dt>
          <dd>
            <t>The authorization server encountered an unexpected condition that prevented it from fulfilling the request. The HTTP status code <bcp14>MUST</bcp14> be 500 (Internal Server Error).</t>
          </dd>
          <dt>temporarily_unavailable</dt>
          <dd>
            <t>The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server. The HTTP status code <bcp14>MUST</bcp14> be 503 (Service Unavailable).</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 using 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

[
  {
    "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 Section 2.2.</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 Section 2.3 of <xref 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 Section 2.2.</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 Section 1.6 of <xref 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 <xref target="RFC8414"/> 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="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </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">
          <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">
          <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="RFC2616" target="https://www.rfc-editor.org/info/rfc2616" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2616.xml">
          <front>
            <title>Hypertext Transfer Protocol -- HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="J. Gettys" initials="J." surname="Gettys"/>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <author fullname="H. Frystyk" initials="H." surname="Frystyk"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as "HTTP/1.1", and is an update to RFC 2068. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2616"/>
          <seriesInfo name="DOI" value="10.17487/RFC2616"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining" target="https://datatracker.ietf.org/doc/html/draft-ietf-oauth-identity-chaining-06" 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>SPIRL</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</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="12" month="September" year="2025"/>
            <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-06"/>
        </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 446?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
WgKg6P8BIa6Y5GVsAAA=

-->

</rfc>
