<?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.7.1 (Ruby 3.1.3) -->


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

]>


<rfc ipr="trust200902" docName="draft-schwenkschuster-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></organization>
      <address>
        <email>kelley.burgin@gmail.com</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="October" day="23"/>

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

    <abstract>


<?line 59?>

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


<?line 63?>

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

<?line -18?>

</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' anchor="sec-normative-references">



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

<reference anchor="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">
  <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">
  <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">
  <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">
  <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">
  <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">
  <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' anchor="sec-informative-references">




<reference anchor="I-D.ietf-oauth-selective-disclosure-jwt">
   <front>
      <title>Selective Disclosure for JWTs (SD-JWT)</title>
      <author fullname="Daniel Fett" initials="D." surname="Fett">
         <organization>yes.com</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="30" month="June" 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-05"/>
   
</reference>


<reference anchor="I-D.ietf-oauth-security-topics">
   <front>
      <title>OAuth 2.0 Security Best Current Practice</title>
      <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt">
         <organization>yes.com</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="5" month="June" 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-23"/>
   
</reference>


<reference anchor="I-D.ietf-oauth-resource-metadata">
   <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>


<?line 316?>

<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:
H4sIAAAAAAAAA9U97VIbSZL/+ynqcOwueJEMGNtjxYzXAowNawwDeGa9ExPj
UndJatPq1vUHsmxzsQ9yF3HPco+yT3L5UVX9LWFgdmaZCRu1qrOysrLyO8ud
TsdJUhl6v8ggClVPpHGmHH8a029JurWx8XRjy3Fl2hN+OIycJBtM/CTxozCd
T2H8wYvzfUfGSvZEolxnNuqJSGbp2HG8yA3lBIZ4sRymncQdz1R4AX8BWBV3
aFTH91SY+um8446lH/rhqLOx4TjwJEDY+kuxq78U0o2jJBHniJrYiybwOHHk
YBCry54TyBBmV6FzMeuJn3527glPpgBma2Nrq7OB/4tOh54JPxFDPwiUB4sS
gAhASn1XBsFcDObi4yTYioeu8IcijFIx8i8BKKIbxT2nI3hV/Tj0UnFWXpUj
RBQDEkc+IhoNU3igAMugJySOT55PzDddN5pYYCe+grfFX2WSqGAiw3ABoCmN
7V6YsS0g/6pgfXOxk8UjP8zfvqDH3QE9fj7Ch6XXjvwLJQ5hSUhZjcSbs35n
d/fsLIcy+fABhzx35wNAJUxkdxRdWhg7sS9DsSsn0wHMZqCc4AaaLc1BDVw9
7vkUBhh+IJxcYLLYH8D2FOmeZoE4z4Jk7A/kaCYDZSY4e/nmdYHeMC55nozC
oCt9+/ZLBUOV2A9U6o7z/dqVUz+VgTgOVQ5hRGO7Qz32ucuD4JiUKHbqD6UE
Thiri3HnXZaooYH64l0OLKZR3YRGzXEUwOuqeQnUK9h5BewN7BQNVeiP8vfH
9FU3tV/B3n3ship1nDCKkX0vVQ+Gn+7vPn6y/bQn7onjPrCs2OpuiD7xrv8J
RkWh2I9hslkUX/Dwbx4/fVgefh5dqFC8+AhnMhwpHvXk0dYmjuoD18VlMGIY
xYW3dwMf9pDmxL10eVIQMRU0XsYyTBMLnXA4PDt+I35UA43C6uGP52viJI7g
sKo7mOabJxtPcJpTlURZ7CpxEHr4ZhQnZeh6+Pbm9iJCnqn4Ek7tkUolSBXp
OCgh7V4AjIPOXhdO61ALOzivysUvO56fuEGUZLHqfJilvaahbhajXEyjqe8m
DSNivYbORE8PMzodEHBykKSxdIExzscg55Kpcv2hoY+nhj6ymBQThdvrJxOR
RmIK0HAxwpw/IiQKREGCWdiVIY1ZCJN+EB4LYZGO4QwAW8MvqkAwyyRdwdhN
fM+DIwvC+QAOd+RlLsJ0+tNpoHFMBIgy2PxY/WfmxwqmcxVOFwmzZD0baB0B
hGQRAaJc4zXJgtSfAr+UEZzBEVZCSXdc+gIOViL8FCadhQW8ZWmjiTZxF5gf
CAdYwAzrQMpLFURTBbyDmDDSQ+kCJjMfwCAhEj/NGARjDISOUuABGGMWg7oo
iGDpWhnBkoZDQBV4u4QnbkgKWqYAAlRVcXgLzkRIBYAmcg4gZZjAc9goSyeL
Cb+SIBotRBwoYAMlQGbBdynIa4APPFJfFQK5jIJLXlSSAdWlRSRU8Bj28yKM
ZgJQnY0jwGegxjIYEtnMwBnsDawINBWpZrABUp8Itep3VZeGAsvFa+sAQlYJ
gC+P8PAjawDxoik+JkCzsQ8IRfB+XF/9DPkEWR/em8Y+iAVAdSIvyP4IK5N4
cLjQGOoKOmzFY4KrJLYdKHu+vHUBXIMrVmGBIMS4QDNQLbBeMUEalwjfBSFI
EBCJtDoTfIwVMEHMZEWGNsfYmFUaP7DJsgnySpMcQAk4zaepwVguBLKEiIT8
MYA9o4HRsFWziM+ftf65umLJfcfKhSdA1XV11QWZg5KfhArSIBGvAYlMgoYD
SanAMgLGiGLYs5Wjt2fnK+v8t3hzTL+fvvj+7cHpiz38/exV//Vr+4ujR5y9
On77ei//LX9z9/jo6MWbPX4ZnorSI2flqP8OvsFVrByfnB8cv+m/XsFzk5b2
DKUMs5MPTB3DVhFrJ46nEheEIJ+1nd2T//vfzW1Y+n/A2rc2N58CcfnDN5tP
tuEDMh/PFoV0GPAj0HPuyOlUyZjEEEp+tneSdeSoZIwCEmUoEPL+T0iZn3vi
24E73dx+ph/ggksPDc1KD4lm9Se1l5mIDY8aprHULD2vULqMb/9d6bOhe+Hh
t38J4IyIzuY3f3nmkMaq+SP9Jn+kWe/yFiW/09NBcsMd+6poA7gVt6sskhyn
L1yeEFm1qKv6rO6sBNQqXFaFbe3FHSMSk7qoJVkuhnE0IcHfpO2IHBVMLn0J
E6dEWqVJi9JQtSNPQhAJxLrIVT7qMZ5fMmZ2K2B1rdgAMLsu+ANkiyJlEg1S
1ui5bYPYEfJj1Wgj5JCquFusUb2DbKgReR1Vip+a79uxTcE+HbKYfAv6eFcm
SrOycitMnM4iMvZciWpLeh7MmbD8SWvMTyDvGQ2mEHgsdsG3Ux9Tw1pHaG90
wCbOQEXyh1fzQex74M9f+nEUksQGjkN9D75dqibTtMxbpLdcxayHGhJtFHyN
hCQMCLMJeKt45KKwA3s88WEFZOfitJ2BxBWwM82gQO3uRNqSW/CKGU0COlEj
PSdYZxUrahBloSdj3xiwyRRYoKjzC5PAI5rDLqtIh654ATs2LyELewH8BGb0
vH50phEY13OeNJUXijnb1VsQsdFlDC0iMcn8GXjlZE2gupkoz5eVOekr2gJY
GZjEPpgguPXo4yBYtrkRePktJFSchSxbgJpFm6i0Jp/pUzqfaJrhIWTzrTDS
PCqO1rzXPzkAb41dqpy5+2IcTRQa8oQVWrUynOP5uwQZiCzzz3/89y6I2lgi
hH/+43+Q4VQoB0HRLSEgLg1DQ03GaQhYMDTca/aKgCNzUPgaUhVkSsoE4vfF
kEQmURWe+rg+jbUnk/EgkmCfdGEFSDmW+wOVzpQKWXLoudlXUIUJ19H3MJjJ
0FqeOArnZLkqi2vRtgZ4WNNAzs3hRpwsKiyL6EiOtWBkVsg9IA1L0zQuvKHl
URCNRhp4BMJazUor0e95+ZwkztBaIQCGz+F8wDwjFQKb5zuTI8DzNm73hI4m
bCjuKu2Lp6YqRCUIZwnOmT80R6fgmujTYpwLdDYsLtozo1WCb4PCqPBdcZlE
+qjk9MCDwiawOD6+RC6Hd9hSrdshwwA9qSxFgwVmV/gxl9Zguv1ezQ6UBFmi
/RZWI8at08qFrZGhrzS3oY0aev5H2Cc3yDxFughe9dm7Ax0vUfBrEWuIQDSg
Q0ik8ulUAsQDFjD6pXW9EWUjRbpojmiZyUvFtfFxYC9yvV2t1t+GPf0v+HH+
3Cn+/Fks+KkOzT//2flSIvKX+js55OrQLyfG1PjifNHRLD0yf0fvbvFRZegX
G08DMHvGHqmAMc/rj3YMGPv5SyttGha1iDa11RR+Gh9WnvKnxWAaN+/rwfAf
q/01lLhuxPT9ejDfEjblc3dDbIQo7fPNwZT2+eZgFj79lcCs7qxZr0Gb6TfD
5ieQeQKl6s83x+bbTv3nt6TN7pr4tizzbo4NeVfPboFNp/bfs9+QNo0vrO6t
Gd/yNmCa3OIbgCGORDX8c/HpV4Np4MlnvyGJXyBPFrzqZzcC822dmzq/3aLK
P6v7a8bE/TowDTvVuG+/L1lc+GGz6XNPUH3Ad3+q28H7YNz96YqtZDb0giDD
dJjOruz7owwszk0KZ7JNBhb3tGTb2XiQtWRsHGuqYoyAl8IOzdGaclSL7Exr
fa4XZyO/CdyHOQK1mn9RSMlqUzRCpZ4pVgEnz8b+FBSWjxE04xnadeAL9u1V
1R11EZU4ykZj8ETAOyMQa4BtaqxrpswwCgBvIHDPce6TjVKIQYEvUafU8pXk
rwF5zpQSPzUmV/c0oPnPq/dKcDoMp2Nmmq91CbmdEnJGd3OOjxW49uTasDLJ
QL15q2Zxa+T1tIQlydlAx3qg/ZlFkxQ2US+97ILBUgnTjsFeL22Xl7aEnBi/
jJA5VVLyWHH3Y5VmcdgaXLVerqYeLgg9MevNL99JChjq1G3SzJ435ksiwl5p
f0uh2sYlLYjPLmNB8ldrfEdwNTKgbfpLIItLGfhYdNSOY3VnCuqLp9kvrRmz
plNKGFLwtRJFzmVTeyzZrpqiC4vPXWM2I4KJsTSK04jN1LUHE3PQGvWj/juB
U3P8G2Qvll3BkynW/mBgB7mNo3gTJUMSJToAMG/dR44LvC999YvO5r5HCoDY
TjF7LD5/XlZEcXVFOOpTzPSplMMUuY/1QVJJL6C7z5TxeNY8oLL4JA0pUl8W
P3wcciHUkki4jkxaeoyL1QSN84NwlZYZdG5fJwc2uw8RBC0WK5B0xpVTriB/
WClPJcaQUsyzl7KWBspWd9NCMTEoimlTJNkuwCokZOs09unlBLTT595lMpWu
unJsOO0X2pxfsFzR6QmT56NIZexRPj0qzqd1dSU8XjsC9MiuRuSZScs7TRJF
bwyg0ixWOvgVyhY4OiV04QzlIS76MtGxSkRImUdaaxNJWaKgKqqjoJHbDaSP
3ItFIbAXVCABiLn0uFN6jEiZ0wJ4mcwu1kjKzIPTwJUsKBQSBfDfnh4QR7Vw
WirjERWQWD4zthJOZCBWJiqWzNiJfsQkBVaShA+CaIRFnFRMd/PJOVdFGpQY
LAtUglL4oFybwukygwoJeUq08SiqGc0RRsPBUIlCniFhTLFs/owye5pSDJqz
SjZtsyC2SEl3EI/zImZdwLXVTEDhJj1vHQZPoktOM7HM4k2/GWPcq2mRnNH5
3DemcqmYhNNpeNZCStth5J9lEZV/SjctpTiaVgVYn+fpa2k1DOdpAPwwAJMY
PyRzkAiwMJbfSfHYWjPJHnTxvkmGvBdeFnMZjqrJfZirApIq2IQLGggZTC8Z
C21knDQlY5k0WupqZuJZgDbAP5Fn0plYG6lVn58kWQXJXDTpODVm5kBGKisz
2EDA0UW8sVhJ6lyusZ1sAsBwGFt5EmVwoonrB+iIkYXctEMorDSR6tuOpQSN
LyG3ZpRxZZ8GyZ5zFpeVZYl4D3Kuh1q9R6tOeqTce7lE7X2YpZ2BgpMWvy+J
TaIibsdyEImcBFuNQM76RyCfj8lqybFLioZEaTzbN0yGxCpJvTtACpBnwP+5
Rtxq0og+ZqdBU5nMx3pFL+oxNLFJhOvySrYLotC4sg0Ze+FoIbICYmuFZUPO
SO16hSVSyWLL01pttpuPubiY+RO8R1LyJjj1ENO2NP7hujiJgCfFw59Xx2k6
TXoPHqDFhiLiAgDh5nWjePTAi9wH43QSPIiHLkK4pynZebjGeRtifK6lipWX
uZidhgOkM/tcDXtJ7o+WEpQb1Z4Gl8Pk9nZiKkKafY/aN7kLWDe2us1Uz1X6
cvIDy1nq2+qDxhO5nudW2e2rOWoJHzprdU1YLLWHDJJitVXuTJZWk1iLTSf9
BGrZFiSLm7GAkpjB0xq8ulW5M/un5JZ7VCorEPsgNApZQx/5liphGdtrBXCa
kG3C0U/zKiRb/5RHq6wfvcjXRcmsB+5qmfOC0WcFrdfCueOkEB+bAKvLkaJ6
3gtObTcFy7wCEnmYrKQdF7sfxVIme8Bl0pV0qPGVNT6xRIjW8rBocfCsUm1W
nGiQT8QZWufkGIQZPXnAS3l1fn7yYLO76byKkrQnDHbOLuuxzjm1RMm8lv3B
x85sNusgNTpZHGj97TiELGnq7+Aw/+FhH6UX/MXKB34h9QN/5woIPpSDQs4f
jXn5Ha0CBvxhax/+N2vBX7ET649JNvgAMpDtg+/UvNvtVh5eBxWeXaPCIpBf
dspR2fPyrmv5j1FZHGdIKLY2NsTxXxeQ7kMShc4uWHWqg4PiKOiBqd1x8ck6
/pakUQzc+9kRIGIK+Kz0VtT8cDx46frH/uHB208Hm2/8g+QgPH3k7h48PriY
/u2H3cOnXRg0dR8e4aAIYHivTmfup+jy9db+p9eTF9ng4WEIv296L0f+693D
QL3q+8cfXmwdn7+dH+99Pzs+B5iTYOwBzKPzd4/eAIzzg+03n949OvJnvvvw
B//gQ+TLydNoEDy9GGz90H939ujSnbgIbuz9+D3NXJ4W+zxKMw+/7z7c2D65
fKoen4Sf3O9PPn3a3P7Uudj6+/zvl3vpyaMfD04v3p2cuTPv1Y/bK+tIjHxL
gRQ7ZLHwF+rjFMNyv/hAo8cbztWynWObBLeuZuBTbMwpBUOWheIaxVjbQa2E
QVAz2wn8xWE9rSj1m7a6xjQm2HJHMaNylEIwvxS2IdV118UvK7WS9EKARHuY
jbRLDEokWck/QtOV7VGWtKW8gjbnTUfOyq/WWbXSFO1CuwtDKWQUz/xENeGW
B6bLEUzuIviVyN+MLJYirRpLc7u7ucYKniKoWTzF9pS2MFDR6OaQ1pTNbIpb
lUJSudQvBDbIil8ca6p4q2ZPyQey5VFxbhlqFV1Rv6tNbqI542va8W80kZaE
q2hHqH7VU+DlBujTWJ+xtNKmGMFSrIuivYhwQ5CsJI/IFjY+F58rE6ei85TG
cx39s/Fytmtx7HuCXXSjNTu8N4Kk+F0t2Ptk44k93vVYkvbwDL89Ag+vVBPH
rts6GaDavTMCL+e1aQVsr8l5qLtjjcF+iidwCAurUkOKMRhqaQGaRwH4fCqf
i23zLQu9KTloshjbte5bUTAYYhJDxkUeLh9P83LBA97e3EbKLghx6VNSDYth
MIU3HuN1ttizSBttEiH0vYy+toXTORjt1cN7GABfpZB9iC30yFhDXdVpHCPW
c9auNZPjHipvreL7N0XK9JrKznFVYMqWYPqjQjC9FJJfbvlzueR1eiTafd/b
2+FVg7/aLXHN7Pu1rfnBv9Kaz2NSzh/t4dLWedku61cDcP9uxvTBnRrT/iMw
pt9mR+cHnw7gu3d/++GCvnt1uuG+Onr8ev7Ufz15Ov87XjLwdOy+vEAjevdw
J7t8nMSPz8IPT/3w0fk3wyejzWzn8eb3wTeD9NA/3Tj42+WjSB2ObmdEFzer
ZD83xdQXBT7NwIGJzXOHhJa7U+qdpmhU/fRZY7GiTLlMPK4EsPTYXMDjMIpF
3b9/bpAwJpmWkQWZff9+T5zVnlLikYMntRYFv9AezIaWkaA9oTt8QFJShgTr
KKzMAQth5UM0Dr1IPSfHe0UMsmIT1A4Nga+7OOw5HecVjpGbHDMJZAwYFVDV
sorjskh6TeMx1Zq30BLrhmyjRTb1uMSIgfICYjUMWDYtycZR3qi6CQQ/b6Cp
zIBoz6IswGL/8kQEpVhBgLmRJJtOozhl43KAPU3NUXqbHtKLjGKTKNIsWFI1
cgDfdIlPzszVBiK/2gAZo5298wTUGNZkMyR6Hk/r39i/lKCA42LbLiGFcVtP
C/o0mmFfDO+Sze2V43VABJqH2o1CxNCuqVYV0HZPQ7U4ABeupWmAM5LNiKve
1Qa7yV/QwcEvCzYjJkT43cJJ9wxOHGn14ATgewB8rWo9n2laanOn2KeSh9x1
WhhTjGh4jP0Ryw5YW6BGHPoNc/Tw6gWj2fHtYoiIl3tA0egWsaORRwq0WjI6
NmjDnSWhQwQLFIyTNiOZhwpyxNqKaGxLCAara/Hy8qFAgNE0C+hU6anyHBim
kMlro6SuKeEpZQfIgA0/aFsLC8dCNqF1JpWtq1hptG3jTcNuazHim6yQMRRL
0Yimtkpx0H/Tx17KxDcmJ/DzPXyKVZDUwAXnmStZ8g642gvmG6OpGnxqZyH7
sV9CNMl9czvfDhrOu1lMcfQTzOliy17DuStdegLHbUhtkL653SLHpsu3iQyk
e4Er0wat7b3Wm4IHjG8nmUW2MQhv7pjAsrEqFNnQdgaVnW7dnpbpttY8D1Bs
xGR73CaMi2KKWWzox0lqTew8qt7QY0SHqtZlRGdTwUK8BihtDUc1UObyg7ZJ
eZTjnFaiZAk32blpPiixXo51RcmZzhR5oI3+5Q6rQzA2ucBh3kgDeByCpYAx
Hp2nM16aTSiMqf8rBvZAp76RM8QqVYrQRqCLxZ5ida6xJo/UiWssWUWxPMFy
tkUlUmlzUV2UpXiiuMq03H9KbICHg/V1EEUXIsBbtpDpemzIt7aCfWW/U1sv
WN6iVWi/ukEzWN76dbtusLtqB7vLfrC7Km2np1gjbSIGDexybTjwY0oTF4xZ
BudOKv9b2iKamiTuns5Y+1zpw7qrRqy76sS6q1asm9Fnr9aLdRt+/hW6sapd
QV+Fz4I3bgMH67dv3ZCFTyuUvzEcNmVLnVk3gdN+wr8Sn6VPr0nn/Tvoyrqr
tqw7lfPFn9WXN2rMukP5vPzpHcMph76W2ZelzqzcNi/ZktSOBVaRaTKqGm5g
gtl4UPV+oSXNDlijlHem1NsmvEgkkb4bzk/zJgfda5E3cRlD/FrtBPqqgWIo
u3SP2gBMx3aLk7HRC6u4DpVLgdCDwZiRDlEkF/50ir7LMO/EMH4lEs7cipfm
zRZRcWgx0sHecp26pmkFrV5rpuANqaOlxT6WAmAhY8/WG+yLk8NUp5Sa7PX8
JohrlTntNN/msPSCqSUVROXqLVOm0Dg6bx3T+8MBxYTupGoIKSKFIzcKkCRg
7xwMscIVeXSYBQuqwJc1dUVNdMA59pqP2J31VMEUL67VsraDbJbUAj4tc5dy
dnwfFLqLuKVErS5STh9uv3gHZPnEk0vKsSHEdL+ZGJlpo/u6JiuZLmyyanXA
m+OlDU54GkWmdpY7fEKF+OANTQPlyowrFop9MjLhFpn71TgAw6f4oATphHH3
QHmj1haKpLsUhvXj7VU8LGdawfUFF4WaN0xoNMqbKBLrZNPRKab48pZDTwd4
4RS7+h6e1ikbSW1q9pujTuJIhnKE9LS1wVHDFaIGUR0vqOKKZDJ59lKAgG7A
akSrtPvXiiQ0OcmVLxZGEuoBg1rEoO15YyShKYhQMSyuFUloCiJU4VwnknBL
+rQbSm2P2y2xL6VwQdQQdlkMRwOp+MfDqH6DzLWQaYpX3AROyT5pHn8tOAsM
4q+Cc43xt4BT4alb4cP3zuQByZvA4YuAao7pDemTmEDurda19Pm/736BvUbV
TDeGc7f7pdvIVujqRuwZvSGcsoW6svbvv++Nt/DcDJ8m+/QmcL7qJp5WOIsC
B1+Hz/Ln16Jzw1U8N4HTHHT+V6xredjqWnAaF/D7Oxf5TzGQ9ZV6+Xo/z36b
dS2FU6nkuo7LdkcxLWvJ5uGJa90KXY5GXCNu0TehouYLPcylPTqY1OXbZKhJ
ALBccFNoIV2uIzqtfv9qYb0FK2dBSrvwxs6abRlFH4i8zQEWl+mu5VJ72rqg
dUjzbzuZxnCu6vDmoZzob5CmVI7GoZfj0F10U3aSY+21hV2wY4Pq7YXRwcHc
Xo9D9VrkF/9UbrqpX/3T0hPA/z4Lef6J4hpg+JTr+4riLoR7NFYtOOdFNte+
OYfWVKpyMXGupY37fIdV0wz2PnPr2BfqAJoT/7MxsqkX0ZGLvib61HL5DtcY
l24TXnIKl1Q92zOYx5uW4Na3uPE/IFMJQjUFOCvzvGyWOcW+0Sy/Kkq3Z93q
RiHRd20MiatkPt+rPrpCOcsXsivvu5WhDBK1AqL08+fPh5ESh9kAxOiFf3V1
tS7wWYbN/+LUx3+ICx46/w+dt6MFuG4AAA==

-->

</rfc>

