<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.9 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-oauth-identity-chaining-00" category="info" submissionType="IETF" xml:lang="en">
  <front>
    <title>Identity Chaining across Trust Domains</title>

    <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
      <organization>Microsoft</organization>
      <address>
        <email>arndts@microsoft.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselmann" fullname="Pieter Kasselmann">
      <organization>Microsoft</organization>
      <address>
        <email>pieter.kasselman@microsoft.com</email>
      </address>
    </author>
    <author initials="K." surname="Burgin" fullname="Kelley Burgin">
      <organization>MITRE</organization>
      <address>
        <email>kburgin@mitre.org</email>
      </address>
    </author>
    <author initials="M." surname="Jenkins" fullname="Mike Jenkins">
      <organization>NSA-CCSS</organization>
      <address>
        <email>mjjenki@cyber.nsa.gov</email>
      </address>
    </author>
    <author initials="B." surname="Campbell" fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>

    <date year="2023" month="December" day="01"/>

    <area>sec</area>
    <workgroup>oauth</workgroup>
    

    <abstract>


<t>This specification defines a mechanism to preserve identity and call chain information across trust domains that use the OAuth 2.0 Framework.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>
<t>Applications often require access to resources that are distributed across multiple trust domains where each trust domain has its own OAuth 2.0 authorization server. As a result, developers are often faced with the situation that a protected resource is located in a different trust domain and thus protected by a different authorization server. A request may transverse multiple resource servers in multiple trust domains before completing. All protected resources involved in such a request need to know on whose behalf the request was originally initiated (i.e. the user), what authorization was granted and optionally which other resource servers were called prior to making an authorization decision. This information needs to be preserved, even when a request crosses one or more trust domains. Preserving this information is referred to as identity chaining. This document defines a mechanism for preserving identity chaining information across trust domains using a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/>.</t>

<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="identity-chaining-across-trust-domains"><name>Identity Chaining Across Trust Domains</name>

<t>This specification describes a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/> to achieve identity chaining across trust domains.</t>

<t>A client in trust domain A that needs to access a resource server in trust domain B requests an authorization grant from the authorization server for trust domain A via a token exchange. The client in trust domain A presents the received grant as an assertion to the authorization server in domain B in order to obtain an access token for the protected resource in domain B. The client in domain A may be a resource server, or it may be the authorization server itself.</t>

<section anchor="use-case"><name>Use Case</name>
<t>This section describes two use cases addressed in this specification.</t>

<section anchor="preserve-user-context-across-multi-cloud-multi-hybrid-environments"><name>Preserve User Context across Multi-cloud, Multi-Hybrid environments</name>
<t>A user attempts to access a service that is implemented as a number of on-premise and cloud-based microservices. Both the on-premise and cloud-based services are segmented by multiple trust boundaries that span one or more on-premise or cloud service environments. Every microservice can apply an authorization policy that takes the context of the original user, as well as intermediary microservices into account, irrespective of where the microservices are running and even when a microservice in one trust domain calls another service in another trust domain.</t>

</section>
<section anchor="api-security-use-case"><name>API Security Use Case</name>
<t>A home devices company provides a “Camera API” to enable access to home cameras. Partner companies use this Camera API to integrate the camera feeds into their security dashboards. Using OAuth between the partner and the Camera API, a partner can request the feed from a home camera to be displayed in their dashboard. The user has an account with the camera provider. The user may be logged in to view the partner provided dashboard, or they may authorize emergency access to the camera. The home devices company must be able to independently verify that the request originated and was authorized by a user who is authorized to view the feed of the requested home camera.</t>

</section>
</section>
<section anchor="overview"><name>Overview</name>

<t>The Identity Chaining flow outlined below describes how a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/> are used to address the use cases identified. The appendix include two additional examples that describe how this flow is used. In one example, the resource server acts as the client and in the other, the authorization server acts as the client.</t>

<figure title="Identity Chaining Flow"><artwork><![CDATA[
+-------------+                            +-------------+ +---------+
|Authorization|         +--------+         |Authorization| |Protected|
|Server       |         |Client  |         |Server       | |Resource |
|Domain A     |         |Domain A|         |Domain B     | |Domain B |
+-------------+         +--------+         +-------------+ +---------+
       |                    |                     |             |     
       |                    |----+                |             |     
       |                    |    | (A) discover   |             |     
       |                    |<---+ Authorization  |             |     
       |                    |      Server         |             |     
       |                    |      Domain B       |             |     
       |                    |                     |             |     
       |                    |                     |             |     
       | (B) exchange token |                     |             |     
       |   [RFC 8693]       |                     |             |     
       |<-------------------|                     |             |     
       |                    |                     |             |     
       | (C) <authorization |                     |             |     
       |       grant>       |                     |             |     
       | - - - - - - - - - >|                     |             |     
       |                    |                     |             |     
       |                    | (D) present         |             |     
       |                    | authorization grant |             |     
       |                    | [RFC 7521]          |             |     
       |                    | ------------------->|             |     
       |                    |                     |             |     
       |                    | (E) <access token>  |             |     
       |                    | <- - - - - - - - - -|             |     
       |                    |                     |             |     
       |                    |               (F) access          |     
       |                    | --------------------------------->|     
       |                    |                     |             |     
       |                    |                     |             |                
]]></artwork></figure>

<t>The flow illustrated in Figure 1 shows the steps the client in trust Domain A needs to perform to access a protected resource in trust domain B. In this flow, the client has a way to discover the authorization server in Domain B and a trust relationship exists between Domain A and Domain B (e.g., through federation). It includes the following:</t>

<t><list style="symbols">
  <t>(A) The client of Domain A needs to discover the authorization server of Domain B. See <xref target="authorization-server-discovery">Authorization Server Discovery</xref>.</t>
  <t>(B) The client exchanges its token at the authorization server of its own domain (Domain A) for an authorization grant that can be used at the authorization server in Domain B. See <xref target="token-exchange">Token Exchange</xref>.</t>
  <t>(C) The authorization server of Domain A processes the request and returns an authorization grant that the client can use with the authorization server of Domain B. This requires a trust relationship between Domain A and Domain B (e.g., through federation).</t>
  <t>(D) The client presents the authorization grant to the authorization server of Domain B. See <xref target="authorization-grant">Authorization Grant</xref>.</t>
  <t>(E) Authorization server of Domain B validates the authorization grant and returns an access token.</t>
  <t>(F) The client now possesses an access token to access the protected resource in Domain B.</t>
</list></t>

</section>
<section anchor="authorization-server-discovery"><name>Authorization Server Discovery</name>
<t>This specification does not define authorization server discovery. A client <bcp14>MAY</bcp14> maintain a static mapping or use other means to identify the authorization server. The <spanx style="verb">authorization_servers</spanx> property in <xref target="I-D.ietf-oauth-resource-metadata"/> <bcp14>MAY</bcp14> be used.</t>

</section>
<section anchor="token-exchange"><name>Token Exchange</name>
<t>The client performs token exchange as defined in <xref target="RFC8693"/> with the authorization server for its own domain (e.g., Domain A) in order to obtain an authorization grant that can be used with the authorization server of a different domain (e.g., Domain B) as specified in section 1.3 of <xref target="RFC6749"/>.</t>

<section anchor="request"><name>Request</name>

<t>The parameters described in section 2.1 of <xref target="RFC8693"/> apply here with the following restrictions:</t>

<dl newline="true">
  <dt>requested_token_type</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14> according to <xref target="RFC8693"/>. In the context of this specification this parameter <bcp14>SHOULD NOT</bcp14> be used. See <xref target="authorization-grant-type">Authorization grant type</xref>.</t>
  </dd>
  <dt>scope</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. Additional scopes to indicate scopes included in returned authorization grant. See <xref target="claims-transcription">Claims transcription</xref>.</t>
  </dd>
  <dt>resource</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14> if audience is not set. URI of authorization server of targeting domain (domain B).</t>
  </dd>
  <dt>audience</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14> if resource is not set. Well known/logical name of authorization server of targeting domain (domain B).</t>
  </dd>
</dl>

</section>
<section anchor="processing-rules"><name>Processing rules</name>

<t><list style="symbols">
  <t>If the request itself is not valid or if the given resource or audience are unknown, or are unacceptable based on policy, the authorization server <bcp14>MUST</bcp14> deny the request.</t>
  <t>The authorization server <bcp14>MAY</bcp14> add, remove or change claims. See <xref target="claims-transcription">Claims transcription</xref>.</t>
</list></t>

</section>
<section anchor="authorization-grant-type"><name>Authorization grant type</name>

<t>The authorization grant format and content is part of a contract between the authorization servers. To achieve a maintainable and flexible systems clients <bcp14>SHOULD NOT</bcp14> request a specific <spanx style="verb">requested_token_type</spanx> during the token exchange and <bcp14>SHOULD NOT</bcp14> require a certain format or parse the authorization grant (e.g., if the token is encoded as a JWT). The <spanx style="verb">issued_token_type</spanx> parameter in the response indicates the type and <bcp14>SHOULD</bcp14> be passed into the assertion request. This allows flexibility for authorization servers to change format and content.</t>

<t>Authorization servers <bcp14>MAY</bcp14> use an existing grant type such us <spanx style="verb">urn:ietf:params:oauth:grant-type:jwt-bearer</spanx> to indicate a JWT or <spanx style="verb">urn:ietf:params:oauth:grant-type:saml2-bearer</spanx> to indicate SAML. Other grant types <bcp14>MAY</bcp14> be used to indicate other formats.</t>

</section>
<section anchor="response"><name>Response</name>

<t>All of section 2.2 of <xref target="RFC8693"/> applies. In addition, the following applies to implementations that conform to this specification.</t>

<t><list style="symbols">
  <t>The "aud" claim in the returned authorization grant <bcp14>MUST</bcp14> identify the requested authorization server. This corresponds with <eref target="https://datatracker.ietf.org/doc/html/rfc7523#section-3">RFC 7523 Section 3, Point 3</eref> and is there to reduce missuse and to prevent clients from presenting access tokens as an authorization grant to an authorization server in a different domain.</t>
  <t>The "aud" claim included in the returned authorization grant <bcp14>MAY</bcp14> identify multiple authorization servers, provided that trust relationships exist with them (e.g. through federation). It is <bcp14>RECOMMENDED</bcp14> that the "aud" claim is restricted to a single authorization server to prevent an authorization server in one domain from presenting the client's authorization grant to an authorization server in a different trust domain. For example, this will prevent the authorization server in Domain B from presenting the authorization grant it received from the client in Domain A to the authorization server for Domain C.</t>
</list></t>

</section>
<section anchor="example"><name>Example</name>

<t>The example belows shows the message invoked by the client in trust domain A to perform token exchange with the authorization server in domain A (https://as.a.org/auth) to receive an authorization grant for the authorization server in trust domain B (https://as.b.org/auth).</t>

<figure title="Token exchange request"><artwork><![CDATA[
POST /auth/token HTTP/1.1
Host: as.a.org
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&resource=https%3A%2F%2Fas.b.org%2Fauth
&subject_token=ey...
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token
]]></artwork></figure>

<figure title="Token exchange response"><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
  "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJo
  dHRwczovL2FzLmEub3JnL2F1dGgiLCJleHAiOjE2OTUyODQwOTIsImlhdCI6MTY5N
  TI4NzY5Miwic3ViIjoiam9obl9kb2VAYS5vcmciLCJhdWQiOiJodHRwczovL2FzLm
  Iub3JnL2F1dGgifQ.304Pv9e6PnzcQPzz14z-k2ZyZvDtP5WIRkYPScwdHW4",
  "token_type":"Bearer",
  "expires_in":60
}
]]></artwork></figure>

</section>
</section>
<section anchor="authorization-grant"><name>Authorization Grant</name>

<t>The client presents the authorization grant it received from the authorization server in its own domain and presents it to the authorization server in the domain of the resources server it wants to access as defined in the "Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants" <xref target="RFC7521"/>.</t>

<section anchor="request-1"><name>Request</name>

<t>If the authorization grant is in the form of a JWT bearer token, the client <bcp14>SHOULD</bcp14> use the "JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants" as defined in <xref target="RFC7523"/>. Otherwise, the client <bcp14>SHOULD</bcp14> request an access token using the "Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants" as defined in <xref target="RFC7521"/> (Section 4.1). For the purpose of this specification the following descriptions apply:</t>

<dl newline="true">
  <dt>grant_type</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. In context of this specification clients <bcp14>SHOULD</bcp14> use the type identifier returned by the token exchange (<spanx style="verb">issued_token_type</spanx> response). See <xref target="authorization-grant-type">authorization grant type</xref> for more details.</t>
  </dd>
  <dt>assertion</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Authorization grant returned by the token exchange (<spanx style="verb">access_token</spanx> response).</t>
  </dd>
  <dt>scope</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>.</t>
  </dd>
</dl>

<t>The client <bcp14>MAY</bcp14> indicate the audience it is trying to access through the <spanx style="verb">scope</spanx> parameter or the <spanx style="verb">resource</spanx> parameter defined in <xref target="RFC8707"/>.</t>

</section>
<section anchor="processing-rules-1"><name>Processing rules</name>

<t>All of Section 5.2 <xref target="RFC7521"/> applies, in addition to the following processing rules:</t>

<t><list style="symbols">
  <t>The "aud" claim <bcp14>MUST</bcp14> identify the Authorization Server as a valid intended audience of the assertion using either the token endpoint as described Section 3 <xref target="RFC7523"/> or the issuer identifier as defined in Section 2 of <xref target="RFC8414"/>.</t>
  <t>The authorization server <bcp14>SHOULD</bcp14> deny the request if it is not able to identify the subject.</t>
  <t>Due to policy the request <bcp14>MAY</bcp14> be denied (for instance if the federation from domain A is not allowed).</t>
</list></t>

</section>
<section anchor="response-1"><name>Response</name>

<t>The authorization server responds with an access token as described in section 5.1 of <xref target="RFC6749"/>.</t>

</section>
<section anchor="example-1"><name>Example</name>

<t>The example belows shows how the client in trust domain A presents an authorization grant to the authorization server in trust domain B (https://as.b.org/auth) to receive an access token for a protected resource in trust domain B.</t>

<figure title="Assertion request"><artwork><![CDATA[
POST /auth/token HTTP/1.1
Host: as.b.org
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&assertion=ey...
]]></artwork></figure>

<figure title="Assertion response"><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
  "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJo
  dHRwczovL2FzLmIub3JnL2F1dGgiLCJleHAiOjE2OTUyODQwOTIsImlhdCI6MTY5N
  TI4NzY5Miwic3ViIjoiam9obi5kb2UuMTIzIiwiYXVkIjoiaHR0cHM6Ly9iLm9yZy
  9hcGkifQ.CJBuv6sr6Snj9in5T8f7g1uB61Ql8btJiR0IXv5oeJg",
  "token_type":"Bearer",
  "expires_in":60
}
]]></artwork></figure>

</section>
</section>
<section anchor="claims-transcription"><name>Claims transcription</name>

<t>Authorization servers <bcp14>MAY</bcp14> transcribe claims when either producing authorization grants in the token exchange flow or access tokens in the assertion flow.</t>

<t><list style="symbols">
  <t><strong>Transcribing the subject identifier</strong>: Subject identifier can differ between the parties involved. For instance: A user is known at domain A by "johndoe@a.org" but in domain B by "doe.john@b.org". The mapping from one identifier to the other <bcp14>MAY</bcp14> either happen in the token exchange step and the updated identifer is reflected in returned authorization grant or in the assertion step where the updated identifier would be reflected in the access token. To support this both authorization servers <bcp14>MAY</bcp14> add, change or remove claims as described above.</t>
  <t><strong>Selective disclosure</strong>: Authorization servers <bcp14>MAY</bcp14> remove or hide certain claims due to privacy requirements or reduced trust towards the targeting trust domain. To hide and enclose claims <xref target="I-D.ietf-oauth-selective-disclosure-jwt"/> <bcp14>MAY</bcp14> be used.</t>
  <t><strong>Controlling scope</strong>: Clients <bcp14>MAY</bcp14> use the scope parameter to control transcribed claims (e.g. downscoping). Authorization Servers <bcp14>SHOULD</bcp14> verify that requested scopes are not higher priveleged than the scopes of presented subject_token.</t>
  <t><strong>Including authorization grant claims</strong>: The authorization server performing the assertion flow <bcp14>MAY</bcp14> leverage claims from the presented authorization grant and include them in the returned access token. The populated claims <bcp14>SHOULD</bcp14> be namespaced or validated to prevent the injection of invalid claims.</t>
</list></t>

<t>The representation of transcribed claims and their format is not defined in this specification.</t>

</section>
</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>To be added.</t>

</section>
<section anchor="Security"><name>Security Considerations</name>

<section anchor="client-authentication"><name>Client Authentication</name>
<t>Authorization Servers <bcp14>SHOULD</bcp14> follow the OAuth 2.0 Security Best Current Practice <xref target="I-D.ietf-oauth-security-topics"/> for client authentication.</t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC6749' target='https://www.rfc-editor.org/info/rfc6749'>
  <front>
    <title>The OAuth 2.0 Authorization Framework</title>
    <author fullname='D. Hardt' initials='D.' role='editor' surname='Hardt'/>
    <date month='October' year='2012'/>
    <abstract>
      <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6749'/>
  <seriesInfo name='DOI' value='10.17487/RFC6749'/>
</reference>

<reference anchor='RFC8693' target='https://www.rfc-editor.org/info/rfc8693'>
  <front>
    <title>OAuth 2.0 Token Exchange</title>
    <author fullname='M. Jones' initials='M.' surname='Jones'/>
    <author fullname='A. Nadalin' initials='A.' surname='Nadalin'/>
    <author fullname='B. Campbell' initials='B.' role='editor' surname='Campbell'/>
    <author fullname='J. Bradley' initials='J.' surname='Bradley'/>
    <author fullname='C. Mortimore' initials='C.' surname='Mortimore'/>
    <date month='January' year='2020'/>
    <abstract>
      <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8693'/>
  <seriesInfo name='DOI' value='10.17487/RFC8693'/>
</reference>

<reference anchor='RFC7521' target='https://www.rfc-editor.org/info/rfc7521'>
  <front>
    <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
    <author fullname='B. Campbell' initials='B.' surname='Campbell'/>
    <author fullname='C. Mortimore' initials='C.' surname='Mortimore'/>
    <author fullname='M. Jones' initials='M.' surname='Jones'/>
    <author fullname='Y. Goland' initials='Y.' surname='Goland'/>
    <date month='May' year='2015'/>
    <abstract>
      <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
      <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
      <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7521'/>
  <seriesInfo name='DOI' value='10.17487/RFC7521'/>
</reference>

<reference anchor='RFC7523' target='https://www.rfc-editor.org/info/rfc7523'>
  <front>
    <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
    <author fullname='M. Jones' initials='M.' surname='Jones'/>
    <author fullname='B. Campbell' initials='B.' surname='Campbell'/>
    <author fullname='C. Mortimore' initials='C.' surname='Mortimore'/>
    <date month='May' year='2015'/>
    <abstract>
      <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7523'/>
  <seriesInfo name='DOI' value='10.17487/RFC7523'/>
</reference>

<reference anchor='RFC8707' target='https://www.rfc-editor.org/info/rfc8707'>
  <front>
    <title>Resource Indicators for OAuth 2.0</title>
    <author fullname='B. Campbell' initials='B.' surname='Campbell'/>
    <author fullname='J. Bradley' initials='J.' surname='Bradley'/>
    <author fullname='H. Tschofenig' initials='H.' surname='Tschofenig'/>
    <date month='February' year='2020'/>
    <abstract>
      <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8707'/>
  <seriesInfo name='DOI' value='10.17487/RFC8707'/>
</reference>

<reference anchor='RFC8414' target='https://www.rfc-editor.org/info/rfc8414'>
  <front>
    <title>OAuth 2.0 Authorization Server Metadata</title>
    <author fullname='M. Jones' initials='M.' surname='Jones'/>
    <author fullname='N. Sakimura' initials='N.' surname='Sakimura'/>
    <author fullname='J. Bradley' initials='J.' surname='Bradley'/>
    <date month='June' year='2018'/>
    <abstract>
      <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8414'/>
  <seriesInfo name='DOI' value='10.17487/RFC8414'/>
</reference>

<reference anchor='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 title='Informative References'>




<reference anchor='I-D.ietf-oauth-selective-disclosure-jwt' target='https://datatracker.ietf.org/doc/html/draft-ietf-oauth-selective-disclosure-jwt-06'>
   <front>
      <title>Selective Disclosure for JWTs (SD-JWT)</title>
      <author fullname='Daniel Fett' initials='D.' surname='Fett'>
         <organization>Authlete</organization>
      </author>
      <author fullname='Kristina Yasuda' initials='K.' surname='Yasuda'>
         <organization>Microsoft</organization>
      </author>
      <author fullname='Brian Campbell' initials='B.' surname='Campbell'>
         <organization>Ping Identity</organization>
      </author>
      <date day='23' month='October' year='2023'/>
      <abstract>
	 <t>   This specification defines a mechanism for selective disclosure of
   individual elements of a JSON object used as the payload of a JSON
   Web Signature (JWS) structure.  It encompasses various applications,
   including but not limited to the selective disclosure of JSON Web
   Token (JWT) claims.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-oauth-selective-disclosure-jwt-06'/>
   
</reference>


<reference anchor='I-D.ietf-oauth-security-topics' target='https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics-24'>
   <front>
      <title>OAuth 2.0 Security Best Current Practice</title>
      <author fullname='Torsten Lodderstedt' initials='T.' surname='Lodderstedt'>
         <organization>SPRIND</organization>
      </author>
      <author fullname='John Bradley' initials='J.' surname='Bradley'>
         <organization>Yubico</organization>
      </author>
      <author fullname='Andrey Labunets' initials='A.' surname='Labunets'>
         <organization>Independent Researcher</organization>
      </author>
      <author fullname='Daniel Fett' initials='D.' surname='Fett'>
         <organization>Authlete</organization>
      </author>
      <date day='23' month='October' year='2023'/>
      <abstract>
	 <t>   This document describes best current security practice for OAuth 2.0.
   It updates and extends the OAuth 2.0 Security Threat Model to
   incorporate practical experiences gathered since OAuth 2.0 was
   published and covers new threats relevant due to the broader
   application of OAuth 2.0.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-oauth-security-topics-24'/>
   
</reference>


<reference anchor='I-D.ietf-oauth-resource-metadata' target='https://datatracker.ietf.org/doc/html/draft-ietf-oauth-resource-metadata-01'>
   <front>
      <title>OAuth 2.0 Protected Resource Metadata</title>
      <author fullname='Michael B. Jones' initials='M. B.' surname='Jones'>
         <organization>Self-Issued Consulting</organization>
      </author>
      <author fullname='Phil Hunt' initials='P.' surname='Hunt'>
         <organization>Independent Identity, Inc.</organization>
      </author>
      <author fullname='Aaron Parecki' initials='A.' surname='Parecki'>
         <organization>Okta</organization>
      </author>
      <date day='20' month='October' year='2023'/>
      <abstract>
	 <t>   This specification defines a metadata format that an OAuth 2.0 client
   or authorization server can use to obtain the information needed to
   interact with an OAuth 2.0 protected resource.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-oauth-resource-metadata-01'/>
   
</reference>




    </references>


<section anchor="examples"><name>Examples</name>

<t>This section contains two examples, demonstrating how this specification may be used in different environments with specific requirements. The first example shows the resource server acting as the client and the second example shows the authorization server acting as the client.</t>

<section anchor="resource-server-acting-as-client"><name>Resource server acting as client</name>

<t>Resources servers may act as clients if the following is true:</t>

<t><list style="symbols">
  <t>Authorization Server B is reachable by the resource server by network and is able to perform the appropiate client authentication (if required).</t>
  <t>The resource server has the ability to determine the authorization server of the protected resource outside its trust domain.</t>
</list></t>

<t>The flow would look like this:</t>

<figure title="Resource server acting as client"><artwork><![CDATA[
+-------------+          +--------+         +-------------+ +---------+
|Authorization|          |Resource|         |Authorization| |Protected|
|Server       |          |Server  |         |Server       | |Resource |
|Domain A     |          |Domain A|         |Domain B     | |Domain B |
+-------------+          +--------+         +-------------+ +---------+
       |                     |                     |             |     
       |                     |   (A) request protected resource  |     
       |                     |      metadata                     |     
       |                     | --------------------------------->|     
       |                     | <- - - - - - - - - - - - - - - - -|     
       |                     |                     |             |     
       | (C) exchange token  |                     |             |     
       |   [RFC 8693]        |                     |             |     
       |<--------------------|                     |             |     
       |                     |                     |             |     
       | (D) <authorization  |                     |             |     
       |        grant>       |                     |             |     
       | - - - - - - - - - ->|                     |             |     
       |                     |                     |             |     
       |                     | (E) present         |             |     
       |                     |  authorization      |             |     
       |                     |  grant [RFC 7521]   |             |     
       |                     | ------------------->|             |     
       |                     |                     |             |     
       |                     | (F) <access token>  |             |     
       |                     | <- - - - - - - - - -|             |     
       |                     |                     |             |     
       |                     |               (G) access          |     
       |                     | --------------------------------->|     
       |                     |                     |             |     
       |                     |                     |             |     
]]></artwork></figure>

<t>The flow contains the following steps:</t>

<t>(A) The resource server of domain A needs to access protected resource in Domain B. It requires an access token to do so which it does not possess. In this example <xref target="I-D.ietf-oauth-resource-metadata"/> is used to receive information about the authorization server which protects the resource in domain B. This step <bcp14>MAY</bcp14> be skipped if discovery is not needed and other means of discovery <bcp14>MAY</bcp14> be used. The protected resource returns its metadata along with the authorization server information.</t>

<t>(B) Now, after the resource server has identified the authorization server for Domain B, the resource server requests an authorization grant for the authorization server in Domain B from its own authorization server (Domain A). This happens via the token exchange protocol.</t>

<t>(C) If successful, the authorization server returns an authorization grant to the resource server.</t>

<t>(D) The resource server presents the authorization grant to the authorization server of Domain B.</t>

<t>(E) The authorization server of Domain B uses claims from the authorization grant to identify the user and its access. If access is granted an access token is returned.</t>

<t>(F) The resource server uses the access token to access the protected resource at Domain B.</t>

</section>
<section anchor="authorization-server-acting-as-client"><name>Authorization server acting as client</name>

<t>Authorization servers may act as clients too. This can be necessary because of following reasons:</t>

<t><list style="symbols">
  <t>Resource servers may not have knowledge of authorization servers.</t>
  <t>Resource servers may not have network access to other authorization servers.</t>
  <t>A strict access control on resources outside the trust domain is required and enforced by authorization servers.</t>
  <t>Authorization servers require client authentication. Managing clients for resource servers outside of the trust domain is not intended.</t>
</list></t>

<t>The flow when authorization servers act as client would look like this:</t>

<figure title="Authorization server acting as client"><artwork><![CDATA[
+--------+          +-------------+         +-------------+ +---------+
|Resource|          |Authorization|         |Authorization| |Protected|
|Server  |          |Server       |         |Server       | |Resource |
|Domain A|          |Domain A     |         |Domain B     | |Domain B |
+--------+          +-------------+         +-------------+ +---------+
    |                      |                       |             |     
    | (A) request or       |                       |             |  
    | exchange token for   |                       |             |     
    | protected resource   |                       |             |     
    | in domain B.         |                       |             |     
    | -------------------->|                       |             |     
    |                      |                       |             |     
    |                      |----+                  |             |     
    |                      |    | (B) determine    |             |     
    |                      |<---+ authorization    |             |     
    |                      |      server B         |             |     
    |                      |                       |             |     
    |                      |                       |             |     
    |                      |----+                  |             |     
    |                      |    | (C) issue        |             |     
    |                      |<---+ authorization    |             |     
    |                      |      grant ("internal |             |     
    |                      |      token exchange") |             |     
    |                      |                       |             |     
    |                      |                       |             |     
    |                      | (D) present           |             |     
    |                      |   authorization grant |             |     
    |                      |   [RFC 7521]          |             |     
    |                      | --------------------->|             |     
    |                      |                       |             |     
    |                      | (E) <access token>    |             |     
    |                      | <- - - - - - - - - - -|             |     
    |                      |                       |             |     
    |  (F) <access token>  |                       |             |     
    | <- - - - - - - - - - |                       |             |     
    |                      |                       |             |     
    |                      |           (G) access  |             |     
    | ---------------------------------------------------------->|     
    |                      |                       |             |     
    |                      |                       |             |     
]]></artwork></figure>

<t>The flow contains the following steps:</t>

<t>(A) The resource server of Domain A requests a token for the protected resource in Domain B from the authorization server in Domain A. This specification does not cover this step. A profile of Token Exchange <xref target="RFC8693"/> may be used.</t>

<t>(B) The authorization server (of Domain A) determines the authorization server (of Domain B). This could have been passed by the client, is statically maintained or dynamically resolved.</t>

<t>(C) Once the authorization server is determined an authorization grant is issued internally. This reflects to <xref target="token-exchange">Token exchange</xref> of this specification and can be seen as an "internal token exchange".</t>

<t>(D) The issued authorization grant is presented to the authorization server of Domain B. This presentation happens between the authorization servers and authorization server A may be required to perform client authentication while doing so.</t>

<t>(E) The authorization server of Domain B returns an access token for access to the protected resource in Domain B to the authorization server in Domain A.</t>

<t>(F) The authorization server of Domain A returns that access token to the resource server in Domain A.</t>

<t>(G) The resource server in Domain A uses the received access token to access the protected resource in Domain B.</t>

</section>
</section>
<section numbered="false" anchor="Acknowledgements"><name>Acknowledgements</name>

<t><contact fullname="Joe Jubinski"/>, <contact fullname="Justin Richer"/></t>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
      <organization>SGNL</organization>
      <address>
        <email>atuls@sgnl.ai</email>
      </address>
    </contact>
    <contact initials="G." surname="Fletcher" fullname="George Fletcher">
      <organization>Capital One</organization>
      <address>
        <email>george.fletcher@capitalone.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
      <organization>EY</organization>
      <address>
        <email>rifaat.shekh-yusef@ca.ey.com</email>
      </address>
    </contact>
    <contact initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization></organization>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
v70FD1v/D2LPeSWnbgAA

-->

</rfc>

