<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-assertion-authz-grant-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="ID JWT Authz Grant">Identity Assertion JWT Authorization Grant</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-assertion-authz-grant-01"/>
    <author fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
      </address>
    </author>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="19"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>cross-domain</keyword>
    <keyword>authorization</keyword>
    <keyword>authz</keyword>
    <keyword>assertion</keyword>
    <keyword>enterprise</keyword>
    <abstract>
      <?line 83?>

<t>This specification provides a mechanism for an application to use an identity assertion to obtain an access token for a third-party API by coordinating through a common enterprise identity provider using Token Exchange <xref target="RFC8693"/> and JWT Profile for OAuth 2.0 Authorization Grants <xref target="RFC7523"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://drafts.oauth.net/oauth-identity-assertion-authz-grant/draft-ietf-oauth-identity-assertion-authz-grant.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-identity-assertion-authz-grant/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/oauth-wg/oauth-identity-assertion-authz-grant"/>.</t>
    </note>
  </front>
  <middle>
    <?line 87?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In typical enterprise scenarios, applications are configured for single sign-on to the enterprise identity provider (IdP) using OpenID Connect or SAML. This enables users to access all the necessary enterprise applications using a single account at the IdP, and enables the enterprise to manage which users can access which applications.</t>
      <t>When one application wants to access a user's data at another application, it will start an interactive OAuth flow <xref target="RFC6749"/> to obtain an access token for the application on behalf of the user. This OAuth flow enables a direct app-to-app connection between the two apps, and is not visible to the IdP used to log in to each app.</t>
      <t>This specification enables this kind of "Cross App Access" to be managed by the enterprise IdP, similar to how the IdP manages single sign-on to individual applications.</t>
      <t>The draft specification Identity Chaining Across Trust Domains <xref target="I-D.ietf-oauth-identity-chaining"/> defines how to request a JWT authorization grant from an Authorization Server and exchange it for an Access Token at another Authorization Server in a different trust domain. The specification combines OAuth 2.0 Token Exchange <xref target="RFC8693"/> and JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>. The draft supports multiple different use cases by leaving many details of the token exchange request and JWT authorization grant unspecified.</t>
      <t>This specification defines the additional details necessary to support interoperable implementations in enterprise scenarios when two applications are configured for single sign-on to the same enterprise identity provider. In particular, this specification uses identity assertions as the input to the token exchange request. This way, the same enterprise identity provider that is trusted by applications for single sign-on can be extended to broker access to APIs.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="roles">
        <name>Roles</name>
        <dl>
          <dt>Client</dt>
          <dd>
            <t>The application that wants to obtain an OAuth 2.0 access token on behalf of a signed-in user to an external/3rd party application's API (Resource Server below). In <xref target="I-D.ietf-oauth-identity-chaining"/>, this is the Client in trust domain A.  The application has a direct relationship with the IdP Authorization Server for single sign-on as a Relying Party and another independent OAuth 2.0 client relationship with the Resource Authorization Server in trust domain B.</t>
          </dd>
          <dt>IdP Authorization Server (IdP)</dt>
          <dd>
            <t>A SAML 2.0 Identity Provider or OpenID Connect Provider (OP) <xref target="OpenID.Core"/> that issues identity assertions for single sign-on and cross-domain authorization grants <xref target="id-jag"/> for a set of trusted applications in an organization's application ecosystem.  In <xref target="I-D.ietf-oauth-identity-chaining"/>, this is the Authorization Server in trust domain A, which is also trusted by the Resource Authorization Server in trust domain B.</t>
          </dd>
          <dt>Resource Authorization Server (AS)</dt>
          <dd>
            <t>Issues OAuth 2.0 access tokens for protected resources provided by the Resource Server. In <xref target="I-D.ietf-oauth-identity-chaining"/>, this is the Authorization Server in trust domain B, and trusts cross-domain authorization grants <xref target="id-jag"/> from the IdP Authorization Server.</t>
          </dd>
          <dt>Resource Server (RS)</dt>
          <dd>
            <t>Hosts protected resources and validates access tokens issued by the Resource Authorization Server.  In <xref target="I-D.ietf-oauth-identity-chaining"/>, this is the Protected Resource in trust domain B.  The Resource Server has no direct trust relationship with the IdP Authorization Server. Instead, it validates access tokens issued by its trusted Resource Authorization Server to determine who should have access to resources.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="id-jag">
      <name>Identity Assertion JWT Authorization Grant</name>
      <t>The Identity Assertion JWT Authorization Grant (ID-JAG) is a profile of the JWT Authorization Grant <xref target="RFC7523"/> that grants a client delegated access to a resource in another trust domain on behalf of a user without a direct user-approval step at the authorization server.</t>
      <t>An Identity Assertion JWT Authorization Grant is issued and signed by an IdP similar to an ID Token <xref target="OpenID.Core"/>, and contains claims about an end-user. Instead of being issued for a client (Relying Party in <xref target="OpenID.Core"/>) as the intended audience for the assertion, it is instead issued with an audience of an Authorization Server in another trust domain. It replaces the need for the client to obtain an authorization code from the Resource Authorization Server to delegate access to the client, and instead uses the IdP which is trusted by the Authorization Server to delegate access to the client.</t>
      <t>As described in <xref target="OpenID.Core"/>, ID Tokens are only intended to be processed by the Relying Party (indicated by the ID Token audience) or the Issuer (e.g. for revocation), and not by other actors in a different trust domain such as an Authorization Server.</t>
      <t>The following claims are used within the Identity Assertion JWT Authorization Grant:</t>
      <dl>
        <dt><tt>iss</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> - The issuer identifier of the IdP authorization server as defined in <xref target="RFC8414"/></t>
        </dd>
        <dt><tt>sub</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> - The subject identifier (e.g. user ID) of the resource owner at the Resource Authorization Server as defined in <xref target="OpenID.Core"/></t>
        </dd>
        <dt><tt>aud</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> - The issuer identifier of the Resource Authorization Server as defined in <xref target="RFC8414"/></t>
        </dd>
        <dt><tt>client_id</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> - An identifier of the client that will act on behalf of the resource owner. It <bcp14>MUST</bcp14> be recognized by the Resource Authorization Server. For interoperability, the client identifier <bcp14>SHOULD</bcp14> be a <tt>client_id</tt> as defined in <xref section="4.3" sectionFormat="of" target="RFC8693"/>. See <xref target="client-id-mapping"/> for additional considerations.</t>
        </dd>
        <dt><tt>jti</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> - Unique ID of this JWT as defined in <xref section="4.1.7" sectionFormat="of" target="RFC7519"/></t>
        </dd>
        <dt><tt>exp</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> - as defined in <xref section="4.1.4" sectionFormat="of" target="RFC7519"/></t>
        </dd>
        <dt><tt>iat</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14> - as defined in <xref section="4.1.6" sectionFormat="of" target="RFC7519"/></t>
        </dd>
        <dt><tt>resource</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14> - The Resource Identifier (<xref section="2" sectionFormat="of" target="RFC8707"/>) of the Resource Server (either a single URI or an array of URIs)</t>
        </dd>
        <dt><tt>scope</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14> - a JSON string containing a space-separated list of scopes associated with the token, in the format described in <xref section="3.3" sectionFormat="of" target="RFC6749"/></t>
        </dd>
        <dt><tt>tenant</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14> - JSON string that represents the tenant identifier for a multi-tenant issuer as defined in <xref target="OpenID.Enterprise"/></t>
        </dd>
        <dt><tt>auth_time</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14> - Time when end-user authenticated to the client as defined in <xref target="OpenID.Core"/></t>
        </dd>
        <dt><tt>acr</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14> -  Authentication Context Class Reference that was satisfied when authenticating the end-user as defined in <xref target="OpenID.Core"/></t>
        </dd>
        <dt><tt>amr</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14> -  Identifiers for authentication methods used when authenticating the end-user as defined in <xref target="OpenID.Core"/></t>
        </dd>
      </dl>
      <t>The <tt>typ</tt> of the JWT indicated in the JWT header <bcp14>MUST</bcp14> be <tt>oauth-id-jag+jwt</tt>. Using typed JWTs is a recommendation of the JSON Web Token Best Current Practices (<xref section="3.11" sectionFormat="of" target="RFC8725"/>).</t>
      <t>A non-normative example JWT with expanded header and payload claims is below:</t>
      <artwork><![CDATA[
{
  "typ": "oauth-id-jag+jwt"
}
.
{
  "jti": "9e43f81b64a33f20116179",
  "iss": "https://acme.idp.example",
  "sub": "U019488227",
  "aud": "https://acme.chat.example/",
  "client_id": "f53f191f9311af35",
  "exp": 1311281970,
  "iat": 1311280970,
  "resource": "https://acme.chat.example/api",
  "scope": "chat.read chat.history",
  "auth_time": 1311280970,
  "amr": [
    "mfa",
    "phrh",
    "hwk",
    "user"
  ]
}
.
signature
]]></artwork>
      <t>The Identity Assertion JWT Authorization Grant may contain additional Authentication, Identity, or Authorization claims that are valid for an ID Token as the grant functions as an identity assertion for the Resource App.</t>
      <t>Implementation notes:</t>
      <ul spacing="normal">
        <li>
          <t><tt>sub</tt> should be an opaque ID, as <tt>iss</tt>+<tt>sub</tt> is unique. The IdP might want to also include the user's email here, which it should do as a new <tt>email</tt> claim. This would let the app dedupe existing users who may have an account with an email address but have not done SSO yet.</t>
        </li>
      </ul>
    </section>
    <section anchor="cross-domain-access">
      <name>Cross-Domain Access</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The example flow is for an enterprise <tt>acme</tt>, which uses a multi-tenant wiki app and chat app from different vendors, both of which are integrated into the enterprise's multi-tenant Identity Provider using OpenID Connect.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Role</th>
              <th align="left">App URL</th>
              <th align="left">Tenant URL</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Client</td>
              <td align="left">
                <tt>https://wiki.example</tt></td>
              <td align="left">
                <tt>https://acme.wiki.example</tt></td>
              <td align="left">Wiki app that embeds content from one or more resource servers</td>
            </tr>
            <tr>
              <td align="left">Resource Authorization Server</td>
              <td align="left">
                <tt>https://chat.example</tt></td>
              <td align="left">
                <tt>https://acme.chat.example</tt></td>
              <td align="left">Authorization Server for an chat and communication app</td>
            </tr>
            <tr>
              <td align="left">Identity Provider Authorization Server</td>
              <td align="left">
                <tt>https://idp.example</tt></td>
              <td align="left">
                <tt>https://acme.idp.example</tt></td>
              <td align="left">Enterprise Identity Provider</td>
            </tr>
            <tr>
              <td align="left">Resource Server</td>
              <td align="left">
                <tt>https://api.chat.example</tt></td>
              <td align="left">
                <tt>https://api.chat.example</tt></td>
              <td align="left">Public API for the chat and communications app</td>
            </tr>
          </tbody>
        </table>
        <t>Sequence Diagram</t>
        <artwork><![CDATA[
+---------+       +---------------+  +---------------+  +----------+
|         |       |      IdP      |  |   Resource    |  | Resource |
| Client  |       | Authorization |  | Authorization |  |  Server  |
|         |       |    Server     |  |    Server     |  |          |
+----+----+       +-------+-------+  +-------+-------+  +-----+----+
     |                    |                  |                 |
     |                    |                  |                 |
     | -----------------> |                  |                 |
     |   1 User SSO       |                  |                 |
     |                    |                  |                 |
     |     ID Token &     |                  |                 |
     | Refresh Token (Opt)|                  |                 |
     | <- - - - - - - - - |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     | 2 Token Exchange   |                  |                 |
     | ---------------->  |                  |                 |
     |                    |                  |                 |
     |   ID-JAG           |                  |                 |
     | <- - - - - - - -   |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     | 3 Present ID-JAG   |                  |                 |
     | -------------------+----------------> |                 |
     |                    |                  |                 |
     |    Access Token    |                  |                 |
     | <- - - - - - - - - - - - - - - - - - -|                 |
     |                    |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     | 4 Resource Request with Access Token  |                 |
     | ------------------------------------------------------> |
     |                    |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
]]></artwork>
        <ol spacing="normal" type="1"><li>
            <t>User authenticates with the IdP Authorization Server, the Client obtains an Identity Assertion (e.g. OpenID Connect ID Token or SAML 2.0 assertion) for the user and optionally a Refresh Token (when using OpenID Connect) and signs the user in</t>
          </li>
          <li>
            <t>Client uses the Identity Assertion to request an Identity Assertion JWT Authorization Grant for the Resource Authorization Server from the IdP Authorization Server</t>
          </li>
          <li>
            <t>Client exchanges the Identity Assertion JWT Authorization Grant for an Access Token at the Resource Authorization Server's token endpoint</t>
          </li>
          <li>
            <t>Client makes an API request to the Resource Server with the Access Token</t>
          </li>
        </ol>
        <t>This specification is constrained to deployments where a set of Resource Authorization Servers for applications used by an organization are trusting the same IdP Authorization Server for Single Sign-On (SSO). The IdP Authorization Server provides a consistent trust boundary and user identity for the set of Resource Authorization Servers to honor the ID-JAG issued by the IdP.  The Resource Authorization Server not only delegates user authentication but also delegates user authorization authority to the IdP Authorization Server for the scopes and resource specified in the ID-JAG and does not need obtain user consent directly from the resource owner.</t>
      </section>
      <section anchor="user-authentication">
        <name>User Authentication</name>
        <t>The Client initiates an authentication request with the IdP using OpenID Connect or SAML.</t>
        <t>The following is an example using OpenID Connect</t>
        <artwork><![CDATA[
302 Redirect
Location: https://acme.idp.example/authorize?response_type=code&scope=openid%20offline_access&client_id=...
]]></artwork>
        <t>The user authenticates with the IdP, and is redirected back to the Client with an authorization code, which it can then exchange for an ID Token and optionally a Refresh Token when <tt>offline_access</tt> scope is requested per <xref target="OpenID.Core"/>.</t>
        <t>Note: The IdP Authorization Server may enforce security controls such as multi-factor authentication before granting the user access to the Client.</t>
        <artwork><![CDATA[
POST /token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=.....

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id_token": "eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...",
  "token_type": "Bearer",
  "access_token": "7SliwCQP1brGdjBtsaMnXo",
  "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA"
  "scope": "openid offline_access"
}
]]></artwork>
      </section>
      <section anchor="token-exchange">
        <name>Token Exchange</name>
        <t>The Client makes a Token Exchange <xref target="RFC8693"/> request to the IdP's Token Endpoint with the following parameters:</t>
        <dl>
          <dt><tt>requested_token_type</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The value <tt>urn:ietf:params:oauth:token-type:id-jag</tt> indicates that an ID Assertion JWT is being requested.</t>
          </dd>
          <dt><tt>audience</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The Issuer URL of the Resource Authorization Server as defined in <xref section="2" sectionFormat="of" target="RFC8414"/>.</t>
          </dd>
          <dt><tt>resource</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - The Resource Identifier of the Resource Server as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>.</t>
          </dd>
          <dt><tt>scope</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - The space-separated list of scopes at the Resource Server that is being requested.</t>
          </dd>
          <dt><tt>subject_token</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The identity assertion (e.g. the OpenID Connect ID Token or SAML assertion) for the target end-user.</t>
          </dd>
          <dt><tt>subject_token_type</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - An identifier, as described in <xref section="3" sectionFormat="of" target="RFC8693"/>, that indicates the type of the security token in the <tt>subject_token</tt> parameter. For an OpenID Connect ID Token: <tt>urn:ietf:params:oauth:token-type:id_token</tt>, or for a SAML assertion: <tt>urn:ietf:params:oauth:token-type:saml2</tt>.</t>
          </dd>
        </dl>
        <t>The additional parameters defined in <xref section="2.1" sectionFormat="of" target="RFC8693"/> <tt>actor_token</tt> and <tt>actor_token_type</tt> are not used in this specification.</t>
        <t>Client authentication to the authorization server is done using the standard mechanisms provided by OAuth 2.0. <xref section="2.3.1" sectionFormat="of" target="RFC6749"/> defines password-based authentication of the client (<tt>client_id</tt> and <tt>client_secret</tt>), however, client authentication is extensible and other mechanisms are possible. For example, <xref target="RFC7523"/> defines client authentication using bearer JSON Web Tokens using <tt>client_assertion</tt> and <tt>client_assertion_type</tt>.</t>
        <t>The example below uses an ID Token as the Identity Assertion, and uses a JWT Bearer Assertion <xref target="RFC7523"/> as the client authentication method, (tokens truncated for brevity):</t>
        <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&requested_token_type=urn:ietf:params:oauth:token-type:id-jag
&audience=https://acme.chat.example/
&resource=https://api.chat.example/
&scope=chat.read+chat.history
&subject_token=eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...
&subject_token_type=urn:ietf:params:oauth:token-type:id_token
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...
]]></artwork>
        <section anchor="processing-rules">
          <name>Processing Rules</name>
          <t>The IdP <bcp14>MUST</bcp14> validate the subject token, and <bcp14>MUST</bcp14> validate that the audience of the Subject Token (e.g. the <tt>aud</tt> claim of the ID Token) matches the <tt>client_id</tt> of the client authentication of the request.</t>
          <t>The IdP evaluates administrator-defined policy for the token exchange request and determines if the client should be granted access to act on behalf of the subject for the target audience and scopes.</t>
          <t>The IdP may also introspect the authentication context described in the SSO assertion to determine if step-up authentication is required.</t>
        </section>
        <section anchor="response">
          <name>Response</name>
          <t>If access is granted, the IdP creates a signed Identity Assertion JWT Authorization Grant (<xref target="id-jag"/>) and returns it in the token exchange response defined in <xref section="2.2" sectionFormat="of" target="RFC8693"/>:</t>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "issued_token_type": "urn:ietf:params:oauth:token-type:id-jag",
  "access_token": "eyJhbGciOiJIUzI1NiIsI...",
  "token_type": "N_A",
  "scope": "chat.read chat.history",
  "expires_in": 300
}
]]></artwork>
          <dl>
            <dt><tt>issued_token_type</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> - <tt>urn:ietf:params:oauth:token-type:id-jag</tt></t>
            </dd>
            <dt><tt>access_token</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> - The Identity Assertion JWT Authorization Grant. (Note: Token Exchange requires the <tt>access_token</tt> response parameter for historical reasons, even though this is not an OAuth access token.)</t>
            </dd>
            <dt><tt>token_type</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> - <tt>N_A</tt> (because this is not an OAuth access token.)</t>
            </dd>
            <dt><tt>scope</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14> if the scope of the issued token is identical to the scope requested by the client; otherwise, it is <bcp14>REQUIRED</bcp14>. Various policies in the IdP may result in different scopes being issued from the scopes the application requested.</t>
            </dd>
            <dt><tt>expires_in</tt>:</dt>
            <dd>
              <t><bcp14>RECOMMENDED</bcp14> - The lifetime in seconds of the authorization grant.</t>
            </dd>
            <dt><tt>refresh_token</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14> according to <xref section="2.2" sectionFormat="of" target="RFC8693"/>. In the context of this specification, this parameter <bcp14>SHOULD NOT</bcp14> be used.</t>
            </dd>
          </dl>
          <section anchor="issued-identity-assertion-jwt-authorization-grant">
            <name>Issued Identity Assertion JWT Authorization Grant</name>
            <t>The following is a non-normative example of the issued token</t>
            <artwork><![CDATA[
{
  "typ": "oauth-id-jag+jwt"
}
.
{
  "jti": "9e43f81b64a33f20116179",
  "iss": "https://acme.idp.example/",
  "sub": "U019488227",
  "aud": "https://acme.chat.example/",
  "client_id": "f53f191f9311af35",
  "exp": 1311281970,
  "iat": 1311280970,
  "resource": "https://api.chat.example/",
  "scope": "chat.read chat.history",
  "auth_time": 1311280970,
  "amr": [
    "mfa",
    "phrh",
    "hwk",
    "user"
  ]
}
.
signature
]]></artwork>
          </section>
          <section anchor="error-response">
            <name>Error Response</name>
            <t>On an error condition, the IdP returns an OAuth 2.0 Token Error response as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>, e.g:</t>
            <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_grant",
  "error_description": "Audience validation failed"
}
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="token-request">
        <name>Access Token Request</name>
        <t>The Client makes an access token request to the Resource Authorization Server's token endpoint using the previously obtained Identity Assertion JWT Authorization Grant as a JWT Bearer Assertion as defined by <xref target="RFC7523"/>.</t>
        <dl>
          <dt><tt>grant_type</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The value of <tt>grant_type</tt> is <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt></t>
          </dd>
          <dt><tt>assertion</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The Identity Assertion JWT Authorization Grant obtained in the previous token exchange step</t>
          </dd>
        </dl>
        <t>The Client authenticates with its credentials as registered with the Resource Authorization Server.</t>
        <t>For example:</t>
        <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.chat.example
Authorization: Basic yZS1yYW5kb20tc2VjcmV0v3JOkF0XG5Qx2

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsI...
]]></artwork>
        <section anchor="processing-rules-1">
          <name>Processing Rules</name>
          <t>All of <xref section="5.2" sectionFormat="of" target="RFC7521"/> applies, in addition to the following processing rules:</t>
          <ul spacing="normal">
            <li>
              <t>Validate the JWT <tt>typ</tt> is <tt>oauth-id-jag+jwt</tt> (per <xref section="3.11" sectionFormat="of" target="RFC8725"/>)</t>
            </li>
            <li>
              <t>The <tt>aud</tt> claim <bcp14>MUST</bcp14> identify the Issuer URL of the Resource Authorization Server as the intended audience of the JWT.</t>
            </li>
            <li>
              <t>The <tt>client_id</tt> claim <bcp14>MUST</bcp14> identify the same client as the client authentication in the request.</t>
            </li>
            <li>
              <t>The Resource Authorization Server <bcp14>MUST</bcp14> follow <xref section="3.3" sectionFormat="of" target="RFC6749"/> when processing the <tt>scope</tt> claim.</t>
            </li>
          </ul>
        </section>
        <section anchor="response-1">
          <name>Response</name>
          <t>The Resource Authorization Server's token endpoint responds with an OAuth 2.0 Token Response, e.g.:</t>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "token_type": "Bearer",
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "expires_in": 86400,
  "scope": "chat.read chat.history"
}
]]></artwork>
        </section>
        <section anchor="refresh-token">
          <name>Refresh Token</name>
          <t>The Resource Authorization Server <bcp14>SHOULD NOT</bcp14> return a Refresh Token when an Identity Assertion JWT Authorization is exchanged for an Access Token per <xref section="5.2" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/>.</t>
          <t>When the access token has expired, clients <bcp14>SHOULD</bcp14> re-submit the original Identity Assertion JWT Authorization Grant to obtain a new Access Token.  The ID-JAG replaces the use Refresh Token for the Resource Authorization Server.</t>
          <t>If the ID-JAG has expired, the Client <bcp14>SHOULD</bcp14> request a new ID-JAG from the IdP Authorization Server before presenting it to the Resource Authorization Sever using the original Identity Assertion from the IdP (e.g ID Token)</t>
          <t>If the ID Token is expired, the Client <bcp14>MAY</bcp14> use the Refresh Token obtained from the IdP during SSO to obtain a new ID Token which it can exchange for a new ID-JAG.  If the Client is unable to obtain a new Identity Assertion with a Refresh Token then it <bcp14>SHOULD</bcp14> re-authenticate the user by redirecting to the IdP.</t>
        </section>
      </section>
    </section>
    <section anchor="client-id-mapping">
      <name>Cross-Domain Client ID Handling</name>
      <t>There are three separate OAuth/OpenID Connect/SAML relationships involved in this flow:</t>
      <ul spacing="normal">
        <li>
          <t>Client to IdP Authorization Server (OpenID Connect or SAML)</t>
        </li>
        <li>
          <t>Client to Resource Authorization Server (OAuth)</t>
        </li>
        <li>
          <t>Resource Authorization Server to IdP Authorization Server (OpenID Connect or SAML)</t>
        </li>
      </ul>
      <t>Each relationship is typically represented by independent client registrations between each party. For example, the IdP Authorization Server typically issues a Client ID for both the Client and Resource Authorization Server to use for single sign-on with OpenID Connect as a Relying Party. Similarly, the Resource Authorization Server typically issues a Client ID for the Client to use for API access to the Resource Server.   The Client may choose to use different client credentials with each registration.</t>
      <t>In this flow, the IdP Authorization Server accepts a Token Exchange request from the Client, and issues an ID-JAG that will be consumed by the Resource Authorization Server. This means the IdP Authorization Server needs to know about the relationship between the Client and the Resource Authorization Server, in order to include a <tt>client_id</tt> claim in the ID-JAG that will be recognized by the Resource Authorization Server.</t>
      <t>This can be handled by the IdP Authorization Server maintaining a record of each <tt>client_id</tt> used between Clients and Resource Authorization Servers, which will need to be obtained by out-of-band mechanisms.  The Client still needs to authenticate using its registered credential with the Resource Authorization Server when presenting the ID-JAG for the mapped <tt>client_id</tt>. Requiring a confidential client helps to prevent the IdP Authorization Server from delegating access to any of the valid clients for the Resource Authorization Server.</t>
      <t>Note:  The IdP Authorization Server is also responsible for mapping subject identifiers across Clients and trust domains in the ID-JAG.  The same user may have a pair-wise subject identifier issued in an ID Token for SSO to the Client and another with SSO to the Resource Authorization Server as a Relying Party.  The Resource Authorization Server needs consistent subject identifiers for account resolution for both SSO and API access.   The IdP Authorization Server needs to ensure that the subject identifier issued in the ID-JAG is the same identifier for the user that it would have included in an ID Token intended for the Resource Authorization Server.</t>
      <t>Alternatively, if clients use "Client ID Metadata Document" <xref target="I-D.ietf-oauth-client-id-metadata-document"/> as their client identifiers, this acts as a shared global namespace of Client IDs and removes the need for the IdP Authorization Server to maintain a mapping of each client registration.</t>
    </section>
    <section anchor="idp-metadata">
      <name>Authorization Server (IdP) Metadata</name>
      <t>An IdP can advertise its support for this profile in its OAuth Authorization Server Metadata <xref target="RFC8414"/>. Identity and Authorization Chaining Across Domains <xref target="I-D.ietf-oauth-identity-chaining"/> defines a new metadata property <tt>identity_chaining_requested_token_types_supported</tt> for this purpose.</t>
      <t>To advertise support for the Identity Assertion JWT Authorization Grant, the authorization server <bcp14>SHOULD</bcp14> include the following value in the <tt>identity_chaining_requested_token_types_supported</tt> property:</t>
      <t><tt>urn:ietf:params:oauth:token-type:id-jag</tt></t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>This specification <bcp14>SHOULD</bcp14> only be supported for confidential clients.  Public clients <bcp14>SHOULD</bcp14> use the existing authorization code grant and redirect the user to the Resource Authorization Server with an OAuth 2.0 Authorization Request where the user can interactively consent to the access delegation.</t>
      </section>
      <section anchor="step-up-authentication">
        <name>Step-Up Authentication</name>
        <t>In the initial token exchange request, the IdP may require step-up authentication for the subject if the authentication context in the subject's assertion does not meet policy requirements. An <tt>insufficient_user_authentication</tt> OAuth error response may be returned to convey the authentication requirements back to the client similar to OAuth 2.0 Step-up Authentication Challenge Protocol <xref target="RFC9470"/>.</t>
        <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "insufficient_user_authentication",
  "error_description": "Subject doesn't meet authentication requirements",
  "max_age": 5
}
]]></artwork>
        <t>The Client would need to redirect the user back to the IdP to obtain a new assertion that meets the requirements and retry the token exchange.</t>
        <t>TBD: It may make more sense to request the Identity Assertion JWT Authorization Grant in the authorization request if using OpenID Connect for SSO when performing a step-up to skip the need for additional token exchange round-trip.</t>
      </section>
      <section anchor="cross-domain-use">
        <name>Cross-Domain Use</name>
        <t>This specification is intended for cross-domain uses where the Client, Resource App, and Identity Provider are all in different trust domains. In particular, the Identity Provider <bcp14>MUST NOT</bcp14> issue access tokens in response to an ID-JAG it issued itself. Doing so could lead to unintentional broadening of the scope of authorization.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>This section registers <tt>oauth-id-jag+jwt</tt>, a new media type <xref target="RFC2046"/> in the "Media Types" registry <xref target="IANA.media-types"/> in the manner described in <xref target="RFC6838"/>. It can be used to indicate that the content is an Identity Assertion JWT Authorization Grant.</t>
      </section>
      <section anchor="oauth-uri-registration">
        <name>OAuth URI Registration</name>
        <t>This section registers <tt>urn:ietf:params:oauth:token-type:id-jag</tt> in the "OAuth URI" subregistry of the "OAuth Parameters" registry <xref target="IANA.oauth-parameters"/>.</t>
        <ul spacing="normal">
          <li>
            <t>URN: urn:ietf:params:oauth:token-type:id-jag</t>
          </li>
          <li>
            <t>Common Name: Token type URI for an Identity Assertion JWT Authorization Grant</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="json-web-token-claims-registration">
        <name>JSON Web Token Claims Registration</name>
        <t>This section registers <tt>resource</tt> in the "JSON Web Token Claims" subregistry of the "JSON Web Token (JWT)" registry <xref target="IANA.jwt"/>. The "JSON Web Token Claims" subregistry was established by <xref target="RFC7519"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: <tt>resource</tt></t>
          </li>
          <li>
            <t>Claim Description: Resource</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="id-jag"/></t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </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="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="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="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>SPIRL</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="12" month="September" year="2025"/>
            <abstract>
              <t>   This specification defines a mechanism to preserve identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Web Authorization
   Protocol Working Group mailing list (oauth@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/oauth/.

   Source for this draft and an issue tracker can be found at
   https://github.com/oauth-wg/oauth-identity-chaining.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-06"/>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.oauth-parameters" target="https://www.iana.org/assignments/oauth-parameters">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.jwt" target="https://www.iana.org/assignments/jwt">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </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="OpenID.Core" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0 incorporating errata set 2</title>
            <author initials="N." surname="Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </front>
        </reference>
        <reference anchor="OpenID.Enterprise" target="https://openid.net/specs/openid-connect-enterprise-extensions-1_0.html">
          <front>
            <title>OpenID Connect Enterprise Extensions 1.0 - draft 01</title>
            <author initials="D." surname="Hardt">
              <organization/>
            </author>
            <author initials="K." surname="McGuinness">
              <organization/>
            </author>
            <date year="2025" month="September"/>
          </front>
        </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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9470">
          <front>
            <title>OAuth 2.0 Step Up Authentication Challenge Protocol</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>It is not uncommon for resource servers to require different authentication strengths or recentness according to the characteristics of a request. This document introduces a mechanism that resource servers can use to signal to a client that the authentication event associated with the access token of the current request does not meet its authentication requirements and, further, how to meet them. This document also codifies a mechanism for a client to request that an authorization server achieve a specific authentication strength or recentness when processing an authorization request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9470"/>
          <seriesInfo name="DOI" value="10.17487/RFC9470"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <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="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-client-id-metadata-document">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Emelia Smith" initials="E." surname="Smith">
         </author>
            <date day="8" month="October" year="2025"/>
            <abstract>
              <t>   This specification defines a mechanism through which an OAuth client
   can identify itself to authorization servers, without prior dynamic
   client registration or other existing registration.  This is through
   the usage of a URL as a client_id in an OAuth flow, where the URL
   refers to a document containing the necessary client metadata,
   enabling the authorization server to fetch the metadata about the
   client as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-client-id-metadata-document-00"/>
        </reference>
      </references>
    </references>
    <?line 591?>

<section anchor="use-cases">
      <name>Use Cases</name>
      <section anchor="enterprise-deployment">
        <name>Enterprise Deployment</name>
        <t>Enterprises often have hundreds of SaaS applications.  SaaS applications often have integrations to other SaaS applications that are critical to the application experience and jobs to be done.  When a SaaS app needs to request an access token on behalf of a user to a 3rd party SaaS integration's API, the end-user typically needs to complete an interactive delegated OAuth 2.0 flow, as the SaaS application is not in the same security or policy domain as the 3rd party SaaS integration.</t>
        <t>It is industry best practice for an enterprise to connect their ecosystem of SaaS applications to their Identity Provider (IdP) to centralize identity and access management capabilities for the organization.  End-users get a better experience (SSO) and administrators get better security outcomes such multi-factor authentication and zero-trust.  SaaS applications today enable the administrator to establish trust with an IdP for user authentication.</t>
        <t>This specification can be used to extend the SSO relationship of multiple SaaS applications to include API access between these applications as well. This specification enables federation for Authorization Servers across policy or administrative boundaries. The same enterprise IdP that is trusted by applications for SSO can be extended to broker access to APIs.  This enables the enterprise to centralize more access decisions across their SaaS ecosystem and provides better end-user experience for users that need to connect multiple applications via OAuth 2.0.</t>
        <section anchor="preconditions">
          <name>Preconditions</name>
          <ul spacing="normal">
            <li>
              <t>The Client has a registered OAuth 2.0 Client with the IdP Authorization Server</t>
            </li>
            <li>
              <t>The Client has a registered OAuth 2.0 Client with the Resource Authorization Server</t>
            </li>
            <li>
              <t>Enterprise has established a trust relationship between their IdP and the Client for SSO and Identity Assertion JWT Authorization Grant</t>
            </li>
            <li>
              <t>Enterprise has established a trust relationship between their IdP and the Resource Authorization Server for SSO and Identity Assertion JWT Authorization Grant</t>
            </li>
            <li>
              <t>Enterprise has granted the Client permission to act on behalf of users for the Resource Authorization Server with a set of scopes</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="email-and-calendaring-applications">
        <name>Email and Calendaring Applications</name>
        <t>Email clients can be used with arbitrary email servers, and cannot require pre-established relationships between each email client and each email server. When an email client uses OAuth to obtain an access token to an email server, this provides the security benefit of being able to use strong multi-factor authentication methods provided by the email server's authorization server, but does require that the user go through a web-based flow to log in to the email client. However, this web-based flow is often seen as disruptive to the user experience when initiated from a desktop or mobile native application, and so is often attempted to be minimized as much as possible.</t>
        <t>When the email client needs access to a separate API, such as a third-party calendaring application, traditionally this would require that the email client go through another web-based OAuth redirect flow to obtain authorization and ultimately an access token.</t>
        <t>To streamline the user experience, this specification can be used to enable the email client to use the identity assertion to obtain an access token for the third-party calendaring application without any user interaction.</t>
        <section anchor="preconditions-1">
          <name>Preconditions</name>
          <ul spacing="normal">
            <li>
              <t>The Client does not have a pre-registered OAuth 2.0 client at the IdP Authorization Server or the Resource Authorization Server</t>
            </li>
            <li>
              <t>The Client has obtained an Identity Assertion (e.g. ID Token) from the IdP Authorization Server</t>
            </li>
            <li>
              <t>The Resource Authorization Server is configured to allow the Identity Assertion JWT Authorization Grant from unregistered clients</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="llm-agent-using-enterprise-tools">
        <name>LLM Agent using Enterprise Tools</name>
        <t>AI agents, including those based on large language models (LLMs), are designed to manage user context, memory, and interaction state across multi-turn conversations. To perform complex tasks, these agents often integrate with external systems such as SaaS applications, internal services, or enterprise data sources. When accessing these systems, the agent operates on behalf of the end user, and its actions are constrained by the user’s identity, role, and permissions as defined by the enterprise. This ensures that all data access and operations are properly scoped and compliant with organizational access controls.</t>
        <section anchor="preconditions-2">
          <name>Preconditions</name>
          <ul spacing="normal">
            <li>
              <t>The LLM Agent has a registered OAuth 2.0 Client (<tt>com.example.ai-agent</tt>) with the Enterprise IdP (<tt>cyberdyne.idp.example</tt>)</t>
            </li>
            <li>
              <t>The LLM Agent has a registered OAuth 2.0 Client (<tt>4960880b83dc9</tt>) with the External Tool Application (<tt>saas.example.net</tt>)</t>
            </li>
            <li>
              <t>Enterprise has established a trust relationship between their IdP and the LLM Agent for SSO</t>
            </li>
            <li>
              <t>Enterprise has established a trust relationship between their IdP and the External Tool Application for SSO and Identity Assertion JWT Authorization Grant</t>
            </li>
            <li>
              <t>Enterprise has granted the LLM Agent permission to act on behalf of users for the External Tool Application with a specific set of scopes</t>
            </li>
          </ul>
        </section>
        <section anchor="example-sequence">
          <name>Example Sequence</name>
          <t>The steps below describe the sequence of the LLM agent obtaining an access token using an Identity Assertion JWT Authorization Grant (<xref target="id-jag"/>).</t>
          <section anchor="llm-agent-establishes-a-user-identity-with-enterprise-idp">
            <name>LLM Agent establishes a User Identity with Enterprise IdP</name>
            <t>LLM Agent discovers the Enterprise IdP's OpenID Connect Provider configuration based on a configured <tt>issuer</tt> that was previously established.</t>
            <ul empty="true">
              <li>
                <t>Note: IdP discovery where an agent discovers which IdP the agent should use to authenticate a given user is out of scope of this specification.</t>
              </li>
            </ul>
            <artwork><![CDATA[
GET /.well-known/openid-configuration
Host: cyberdyne.idp.example
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "issuer": "https://cyberdyne.idp.example/",
  "authorization_endpoint": "https://cyberdyne.idp.example/oauth2/authorize",
  "token_endpoint": "https://cyberdyne.idp.example/oauth2/token",
  "userinfo_endpoint": "https://cyberdyne.idp.example/oauth2/userinfo",
  "jwks_uri": "https://cyberdyne.idp.example/oauth2/keys",
  "registration_endpoint": "https://cyberdyne.idp.example/oauth2/register",
  "scopes_supported": [
    "openid", "email", "profile"
  ],
  "response_types_supported": [
    "code"
  ],
  "grant_types_supported": [
    "authorization_code", "refresh_token", "urn:ietf:params:oauth:grant-type:token-exchange"
  ],
  "identity_chaining_requested_token_types_supported": ["urn:ietf:params:oauth:token-type:id-jag"],
  ...
}
]]></artwork>
            <t>LLM Agent discovers all necessary endpoints for authentication as well as support for the Identity Chaining requested token type <tt>urn:ietf:params:oauth:token-type:id-jag</tt></t>
          </section>
          <section anchor="idp-authorization-request-with-pkce">
            <name>IdP Authorization Request (with PKCE)</name>
            <t>LLM Agent generates a PKCE <tt>code_verifier</tt> and a <tt>code_challenge</tt> (usually a SHA256 hash of the verifier, base64url-encoded) and redirects the end-user to the Enterprise IdP with an authorization request</t>
            <artwork><![CDATA[
GET /authorize?
  response_type=code
  &client_id=com.example.ai-agent
  &redirect_uri=https://ai-agent.example.com/oauth2/callback
  &scope=openid+profile+email
  &state=xyzABC123
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
Host: cyberdyne.idp.example
]]></artwork>
          </section>
          <section anchor="user-authenticates-and-authorizes-llm-agent">
            <name>User authenticates and authorizes LLM Agent</name>
            <t>Enterprise IdP authenticates the end-user and redirects back to the LLM Agent's registered client redirect URI with an authorization code:</t>
            <artwork><![CDATA[
https://ai-agent.example.com/oauth2/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=xyzABC123
]]></artwork>
            <t>LLM Agent exchanges the <tt>code</tt> and PKCE <tt>code_verifier</tt> to obtain an ID Token and Access Token for the IdP's UserInfo endpoint</t>
            <artwork><![CDATA[
POST /oauth2/token
Host: cyberdyne.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https://ai-agent.example.com/oauth2/callback
&client_id=com.example.ai-agent
&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id_token": "eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...",
  "token_type": "Bearer",
  "access_token": "7SliwCQP1brGdjBtsaMnXo",
  "scope": "openid profile email"
}
]]></artwork>
            <t>LLM Agent validates the ID Token using the published JWKS for the IdP</t>
            <artwork><![CDATA[
{
  "iss": "https://cyberdyne.idp.example/",
  "sub": "1997e829-2029-41d4-a716-446655440000",
  "aud": "com.example.ai-agent",
  "exp": 1984444800,
  "iat": 1684441200,
  "auth_time": 1684440000,
  "name": "John Connor",
  "email": "john.connor@cyberdyne.example",
  "email_verified": true
}
]]></artwork>
            <t>LLM Agent now has an identity binding for context</t>
          </section>
          <section anchor="llm-agent-calls-enterprise-external-tool">
            <name>LLM Agent calls Enterprise External Tool</name>
            <t>LLM Agent tool calls an external tool provided by an Enterprise SaaS Application (Resource Server) without a valid access token and is issued an authentication challenge per Protected Resource Metadata <xref target="RFC9728"/>.</t>
            <ul empty="true">
              <li>
                <t>Note: How agents discover available tools is out of scope of this specification</t>
              </li>
            </ul>
            <artwork><![CDATA[
GET /tools
Host: saas.example.net
Accept: application/json

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata=
  "https://saas.example.net/.well-known/oauth-protected-resource"
]]></artwork>
            <t>LLM Agent fetches the external tool resource's OAuth 2.0 Protected Resource Metadata per <xref target="RFC9728"/> to dynamically discover an authorization server that can issue an access token for the resource.</t>
            <artwork><![CDATA[
GET /.well-known/oauth-protected-resource
Host: saas.example.net
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
   "resource":
     "https://saas.example.net/",
   "authorization_servers":
     [ "https://authorization-server.saas.com/" ],
   "bearer_methods_supported":
     ["header", "body"],
   "scopes_supported":
     ["agent.tools.read", "agent.tools.write"],
   "resource_documentation":
     "https://saas.example.net/tools/resource_documentation.html"
 }
]]></artwork>
            <t>LLM Agent discovers the Authorization Server configuration per <xref target="RFC8414"/></t>
            <artwork><![CDATA[
GET /.well-known/oauth-authorization-server
Host: authorization-server.saas.com
Accept: application/json

HTTP/1.1 200 Ok
Content-Type: application/json

{
  "issuer": "https://authorization-server.saas.com/",
  "authorization_endpoint": "https://authorization-server.saas.com/oauth2/authorize",
  "token_endpoint": "https://authorization-server.saas.com/oauth2/token",
  "jwks_uri": "https://authorization-server.saas.com/oauth2/keys",
  "registration_endpoint": "authorization-server.saas.com/oauth2/register",
  "scopes_supported": [
    "agent.read", "agent.write"
  ],
  "response_types_supported": [
    "code"
  ],
  "grant_types_supported": [
    "authorization_code", "refresh_token", "urn:ietf:params:oauth:grant-type:jwt-bearer"
  ],
  ...
}
]]></artwork>
            <t>LLM Agent has learned all necessary endpoints and supported capabilities to obtain an access token for the external tool.</t>
            <t>If the <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> grant type is supported the LLM can first attempt to silently obtain an access token using an Identity Assertion JWT Authorization Grant from the Enterprise's IdP otherwise it can fallback to interactively obtaining a standard <tt>authorization_code</tt> from the SaaS Application's Authorization Server</t>
            <ul empty="true">
              <li>
                <t>Note: This would benefit from an Authorization Server Metadata <xref target="RFC8414"/> property to indicate whether the Identity Assertion JWT Authorization Grant form of <tt>jwt-bearer</tt> would be accepted by this authorization server. There are other uses of <tt>jwt-bearer</tt> that may be supported by the authorization server as well, and is not necessarily a reliable indication that the Identity Assertion JWT Authorization Grant would be supported. See <eref target="https://github.com/aaronpk/draft-parecki-oauth-identity-assertion-authz-grant/issues/16">issue #16</eref>.</t>
              </li>
            </ul>
          </section>
          <section anchor="llm-agent-obtains-an-identity-assertion-jwt-authorization-grant-for-enterprise-external-tool-from-the-enterprise-idp">
            <name>LLM Agent obtains an Identity Assertion JWT Authorization Grant for Enterprise External Tool from the Enterprise IdP</name>
            <t>LLM Agent makes an Identity Assertion JWT Authorization Grant Token Exchange <xref target="RFC8693"/> request for the external tool's resource from the user's Enterprise IdP using the ID Token the LLM Agent obtained when establishing an identity binding context along with scopes and the resource identifier for the external tool that was returned in the tool's <tt>OAuth 2.0 Protected Resource Metadata</tt></t>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: cyberdyne.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&requested_token_type=urn:ietf:params:oauth:token-type:id-jag
&audience=https://authorization-server.saas.com/
&resource=https://saas.example.net/
&scope=agent.read+agent.write
&subject_token=eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...
&subject_token_type=urn:ietf:params:oauth:token-type:id_token
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...
]]></artwork>
            <t>If access is granted, the Enterprise IdP creates a signed Identity Assertion JWT Authorization Grant and returns it in the token exchange response defined in <xref section="2.2" sectionFormat="of" target="RFC8693"/>:</t>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "issued_token_type": "urn:ietf:params:oauth:token-type:id-jag",
  "access_token": "eyJhbGciOiJIUzI1NiIsI...",
  "token_type": "N_A",
  "scope": "agent.read agent.write",
  "expires_in": 300
}
]]></artwork>
            <t>Identity Assertion JWT Authorization Grant claims:</t>
            <artwork><![CDATA[
{
  "alg": "ES256",
  "typ": "oauth-id-jag+jwt"
}
.
{
  "jti": "9e43f81b64a33f20116179",
  "iss": "https://cyberdyne.idp.example",
  "sub": "1llb-b4c0-0000-8000-t800b4ck0000",
  "aud": "https://authorization-server.saas.com",
  "resource": "https://saas.example.net/",
  "client_id": "4960880b83dc9",
  "exp": 1984445160,
  "iat": 1984445100,
  "scope": "agent.read agent.write"
}
.
signature
]]></artwork>
          </section>
          <section anchor="llm-agent-obtains-an-access-token-for-enterprise-external-tool">
            <name>LLM Agent obtains an Access Token for Enterprise External Tool</name>
            <t>LLM Agent makes a token request to the previously discovered external tool's Authorization Server token endpoint using the Identity Assertion JWT Authorization Grant obtained from the Enterprise IdP as a JWT Assertion as defined by <xref target="RFC7523"/>.</t>
            <t>The LLM Agent authenticates with its client credentials that were registered with the SaaS Authorization Server</t>
            <ul empty="true">
              <li>
                <t>Note: How the LLM Agent registers with the Authorization Server (e.g static or dynamic client registration), and whether or not it has credentials, is out-of-scope of this specification</t>
              </li>
            </ul>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: authorization-server.saas.com
Authorization: Basic yZS1yYW5kb20tc2VjcmV0v3JOkF0XG5Qx2

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsI...
]]></artwork>
            <t>SaaS Authorization Server validates the Identity Assertion JWT Authorization Grant using the published JWKS for the trusted Enterprise IdP</t>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "token_type": "Bearer",
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "expires_in": 86400,
  "scope": "agent.read agent.write"
}
]]></artwork>
          </section>
          <section anchor="llm-agent-makes-an-authorized-external-tool-request">
            <name>LLM Agent makes an authorized External Tool request</name>
            <t>LLM Agent tool calls an external tool provided by the Enterprise SaaS Application (Resource Server) with a valid access token</t>
            <artwork><![CDATA[
GET /tools
Host: saas.example.net
Authorization: Bearer 2YotnFZFEjr1zCsicMWpAA"
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  ...
}
]]></artwork>
          </section>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the following people for their contributions and reviews of this specification: Kamron Batmanghelich, Sofia Desenberg, Meghna Dubey, George Fletcher, Bingrong He, Pieter Kasselman, Kai Lehmann, Dean H. Saxe, Filip Skokan, Phil Whipps.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Moved ID-JAG definition to document root instead of nested under Token Exchange</t>
        </li>
        <li>
          <t>Added proposed OpenID Connect <tt>tenant</tt> claim</t>
        </li>
        <li>
          <t>Added authentication claims from ID Token</t>
        </li>
        <li>
          <t>Adopted standard OAuth 2.0 role names instead of Resource App or Resource App's Authorization Server</t>
        </li>
        <li>
          <t>Updated sequence diagram</t>
        </li>
        <li>
          <t>Updated all inconsistent references of ID-JAG to "Identity Assertion JWT Authorization Grant"</t>
        </li>
        <li>
          <t>Updated section references with more specific links</t>
        </li>
        <li>
          <t>Added reference to scope parameter in ID-JAG processing rules</t>
        </li>
        <li>
          <t>Added a section discussing client ID mapping and reference to Client ID Metadata Document</t>
        </li>
        <li>
          <t>Added recommendations for refresh tokens</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial revision as adopted working group draft</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
HBeQbGfdoaw5Fs/RcIjQZWWcJp+dB+auKCcBz0FCWM+3AQeaUci5zGiqy4Mm
AlE7VQ4PZIOEpq1SkmIiTiI31i8MLqIrJeUjUVCd2G2vz1uWmndPD98GG200
v7Qw5DPZ4NpvLW/1TsJZLXHhpDOKcp1VI++P19YjSLupubVT2fDTbm3ZP50x
tLgHybnTzVW54sLKPXEij+kF9yhKBunqHemWtq8P15f5GSiCS3dxqaa5WyHQ
+k5Wn45mHaWUaCcCx89rZtRaawZrJLvjLxJfZfKX3VxsW+9zZo8Y91JtazMY
Zzb0cYO6aZYLJjZnVfGYWUqpOpWVY5ZwmksXDzHj6JJGv9fTvZBihJE+ky1E
9rn2tjmxxeJ/Z8Z7mcg1W1+isC7CFQKtuCpCRbPQcUa3ibCfvDg4XHfXBf+I
jBnSy+Ac9+8MVkpRi1xNLJSnPR3ach7cnuQTqbV6+mx/6+495MZDEzwszZtE
6u/tTLK4JRW2dLkaVoO1CVc7b9I6Kay+SKzAy6G8hsh8JztZrXMrL5yCtnUS
of5KzxKJgi2wJR+ZVtCDPsToeCJHn3TgVtW9I8fzDp1X8wUqMg8/Tj/tPzro
bG2b+Xngfnj44JWKh2m4dXx99SQ7fPX2+cXk4FmYqhedYvfdm/fdydPnp3lx
3eq9qu/hjC1TD09hpxYyIEalmoLwhAsayLkVKFyHpbmW1zbzttjffTe+x3R3
yw+y18GqYjhBr/nsssGSk7rKZn1HpWtPx/HH+PiR+vmHH37q/nR67/3H0+7R
fmV/nKPjl2OnE8LHpfYceWYTr3Cxl5bpRPYCGHAPjoBH2QLsM9LZlxIq/qGl
f+vh1/gC52iZw/q1B+2H/UcfBsVz9fPOwY8nrdGjB1svtu5Pht13z991xp3s
7Pp95+LJ+yfHhx/+fvn/Z7XicvVhHXrNskKVvelCdZLRpNHTqYUx0Srg8/cv
Tl00rYqWq8iVUsWm8+DBfbW79aC1tQn/7HT6O63wfudea2fn3r27d3d2NuGn
Ut+mDhsqJWse7O7Az+5mpWTNPXzR2XJeIO6Z0jL0Goc1rzFCH4d9ng7pntsk
dTaIAQtvP8Dbdo/efm8XX7melL7XCIurAb1aVfcFE8eGpaspuxiIBdsicc9o
KKtoeHiAcpePekquO0KBSi9/Tum48hk9dt0YYeJ2RzYwz1BRShRctxZeSSXy
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
TcYB2eUajcb/A0Wj8R8/uwAA

-->

</rfc>
