<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-assertion-authz-grant-02" 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-02"/>
    <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="2026" month="March" day="02"/>
    <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 88?>

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

<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 an Identity Assertion 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>An OpenID Connect Provider (OP) <xref target="OpenID.Core"/> or SAML 2.0 Identity Provider 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. In addition to traditional OAuth scope-based authorization, this specification supports Rich Authorization Requests (RAR) <xref target="RFC9396"/>, allowing clients to request limited authorization using structured authorization details.</t>
      <t>An ID-JAG is issued and signed by an IdP Authorization Server 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 (Resource Authorization Server). 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 Authorization Server which is trusted by the Resource 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>
      <section anchor="id-jag-claims">
        <name>ID-JAG Claims</name>
        <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> - Subject Identifier. An identifier within the IdP Authorization Server for the End-User, which is intended to be consumed by the Client as defined in <xref target="OpenID.Core"/>. The identifier <bcp14>MUST</bcp14> be the same as the subject identifier used in an Identity Assertion for the Resource Authorization Server as a Relying Party for SSO.  A public subject identifier <bcp14>MUST</bcp14> be unique when scoped with issuer (<tt>iss</tt>+<tt>sub</tt>) for a single-tenant issuer and <bcp14>MUST</bcp14> be unique when scoped with issuer and tenant (<tt>iss</tt>+<tt>tenant</tt>+<tt>sub</tt>) for multi-tenant issuer. See <xref target="client-id-mapping"/> for additional considerations.</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> - The client identifier of the OAuth 2.0 <xref target="RFC6749"/> client at the Resource Authorization Server that will act on behalf of the resource owner (<tt>sub</tt>).  This identifier <bcp14>MAY</bcp14> be different that client identifier of the OAuth 2.0 client requesting an ID-JAG from the IdP <xref section="4.3" sectionFormat="of" target="RFC8693"/> as it represents and independent client relationship to another Authorization Server in a different trust domain.  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>authorization_details</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - A JSON array of authorization detail objects as defined in <xref section="2" sectionFormat="of" target="RFC9396"/>. This claim enables Rich Authorization Requests (RAR) support, allowing structured authorization requests beyond simple scope strings.</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 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>
          <dt><tt>aud_tenant</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - A JSON string that represents a Resource Authorization Server tenant identifier. This claim is only included when the Resource Authorization Server is multi-tenant and the IdP knows the tenant identifier. When <tt>aud_tenant</tt> is present, the <tt>aud_sub</tt> claim represents the identifier the Resource Authorization Server has for the account within the context of that specific Resource Authorization Server tenant. The combination of <tt>aud</tt> + <tt>aud_tenant</tt> and <tt>aud_sub</tt> <bcp14>MUST</bcp14> be unique within the Resource Authorization Server.</t>
          </dd>
          <dt><tt>aud_sub</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - The Resource Authorization Server's identifier for the End-User as defined in <xref target="OpenID.Enterprise"/>.</t>
          </dd>
          <dt><tt>email</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - End-User's e-mail address as defined in Section 5.1 of <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 as described in <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 ID-JAG may contain additional authentication, identity, or authorization claims that are valid for an ID Token <xref target="OpenID.Core"/> as the grant functions as both an Identity Assertion and authorization delegation for the Resource Authorization Server.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that the ID-JAG contain an <tt>email</tt> <xref target="OpenID.Core"/> and/or <tt>aud_sub</tt> <xref target="OpenID.Enterprise"/> claim.  The Resource Authorization Server <bcp14>MAY</bcp14> use these claims for account resolution or just-in-time (JIT) account creation, for example when the user has not yet SSO'd into the Resource Authorization Server.  Additional Resource Authorization Server specific identity claims <bcp14>MAY</bcp14> be needed for account resolution or JIT account creation.</t>
      </section>
    </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   |                  |                 |
     | (Identity Assertion|                  |                 |
     |  or Refresh Token) |                  |                 |
     | ---------------->  |                  |                 |
     |                    |                  |                 |
     |   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 or a previously issued Refresh Token from the IdP 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 Authorization Server 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 Authorization Server'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 Identity Assertion JWT Authorization Grant is being requested.</t>
          </dd>
          <dt><tt>audience</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The identifier of the Resource Authorization Server in another trust domain as the intended audience for the ID-JAG. IdP Authorization Servers <bcp14>MUST</bcp14> support the issuer identifier of the Resource Authorization Server as defined in <xref section="2" sectionFormat="of" target="RFC8414"/>. IdP Authorization Servers <bcp14>MAY</bcp14> support additional IdP-specific unique identifiers for Resource Authorization Servers in other trust domains as an extension point; when such identifiers are used, the IdP maps them to the corresponding Resource Authorization Server audience for the purposes of issuing the ID-JAG.</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>authorization_details</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - A JSON string containing a JSON array of authorization detail objects as defined in <xref section="2" sectionFormat="of" target="RFC9396"/>. This parameter enables Rich Authorization Requests (RAR) support, allowing structured authorization requests beyond simple scope strings.</t>
          </dd>
          <dt><tt>subject_token</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - Either the Identity Assertion (e.g. the OpenID Connect ID Token or SAML 2.0 Assertion) for the target resource owner, or a Refresh Token previously issued by the IdP Authorization Server for that resource owner. Implementations of this specification <bcp14>MUST</bcp14> accept Identity Assertions. They <bcp14>MAY</bcp14> additionally accept Refresh Tokens to allow the client to obtain a new ID-JAG without performing a new single sign-on round trip when the Identity Assertion has expired.</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>, for a SAML 2.0 Assertion: <tt>urn:ietf:params:oauth:token-type:saml2</tt>, and for a Refresh Token (when supported): <tt>urn:ietf:params:oauth:token-type:refresh_token</tt>.</t>
          </dd>
        </dl>
        <t>When a Refresh Token is used as the subject token, the client still requests <tt>requested_token_type=urn:ietf:params:oauth:token-type:id-jag</tt>; this allows the client to refresh an Identity Assertion JWT Authorization Grant without fetching a new Identity Assertion from the user-facing SSO flow.</t>
        <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 Resource 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>
        <section anchor="token-exchange-id-token-example">
          <name>Example: Token Exchange using ID Token</name>
          <t>This example uses an ID Token as the <tt>subject_token</tt> and a JWT Bearer Assertion <xref target="RFC7523"/> for client authentication (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="token-exchange-refresh-token-example">
            <name>Example: Token Exchange using Refresh Token</name>
            <t>This non-normative example shows using a Refresh Token as the <tt>subject_token</tt> (when supported by the IdP Authorization Server) to obtain an ID-JAG without acquiring a new Identity Assertion:</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=tGzv3JOkF0XG5Qx2TlKWIA
&subject_token_type=urn:ietf:params:oauth:token-type:refresh_token
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...
]]></artwork>
          </section>
        </section>
        <section anchor="processing-rules">
          <name>Processing Rules</name>
          <t>The IdP <bcp14>MUST</bcp14> validate the subject token:</t>
          <ul spacing="normal">
            <li>
              <t>If the subject token is an Identity Assertion, the IdP <bcp14>MUST</bcp14> validate the assertion and <bcp14>MUST</bcp14> validate that the audience of the assertion (e.g. the <tt>aud</tt> claim of the ID Token or SAML Audience) matches the <tt>client_id</tt> of the client authentication of the request.</t>
            </li>
            <li>
              <t>If the subject token is a Refresh Token, the IdP <bcp14>MUST</bcp14> validate it the same way it would for a standard <tt>refresh_token</tt> grant at the token endpoint: the token is issued by the IdP, bound to the authenticated client, unexpired, not revoked, and the requested scopes and audience remain within the authorization context of the Refresh Token.</t>
            </li>
            <li>
              <t>If the subject token is a Refresh Token, the IdP Authorization Server <bcp14>SHOULD</bcp14> retrieve or assemble the subject's claims needed for the ID-JAG in the same way it would when issuing a new Identity Assertion during a token request, so that the resulting ID-JAG reflects current subject attributes and policy.</t>
            </li>
          </ul>
          <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, resources, scopes, and authorization details.</t>
          <t>When processing the request:</t>
          <ul spacing="normal">
            <li>
              <t>If <tt>resource</tt> is present, the IdP <bcp14>MUST</bcp14> process it according to <xref section="2" sectionFormat="of" target="RFC8707"/> and evaluate policy to determine the granted resources. The granted resources <bcp14>MAY</bcp14> be a subset of the requested resources based on policy.</t>
            </li>
            <li>
              <t>If <tt>scope</tt> is present, the IdP <bcp14>MUST</bcp14> process it according to <xref section="3.3" sectionFormat="of" target="RFC6749"/> and evaluate policy to determine the granted scopes. The granted scopes <bcp14>MAY</bcp14> be a subset of the requested scopes based on policy.</t>
            </li>
            <li>
              <t>If <tt>authorization_details</tt> is present, the IdP <bcp14>MUST</bcp14> parse it as a JSON array and process each authorization detail object according to <xref target="RFC9396"/>. The IdP evaluates policy for each authorization detail and determines which authorization details to include in the issued ID-JAG. The IdP <bcp14>MAY</bcp14> modify, filter, or omit authorization details based on policy.</t>
            </li>
            <li>
              <t>If both <tt>resource</tt> and <tt>authorization_details</tt> are present, the IdP <bcp14>MUST</bcp14> process both. The IdP <bcp14>SHOULD</bcp14> ensure consistency between the resource identifiers and authorization details, as they may represent overlapping authorization requests. The IdP <bcp14>MAY</bcp14> derive resource identifiers from authorization details or vice versa, or process them independently based on policy.</t>
            </li>
            <li>
              <t>If both <tt>scope</tt> and <tt>authorization_details</tt> are present, the IdP <bcp14>MUST</bcp14> process both. The IdP <bcp14>SHOULD</bcp14> ensure consistency between the scopes and authorization details, as they may represent overlapping authorization requests. The IdP <bcp14>MAY</bcp14> derive scopes from authorization details or vice versa, or process them independently based on policy.</t>
            </li>
            <li>
              <t>The IdP <bcp14>MUST</bcp14> include the granted <tt>resource</tt> (if any), <tt>scope</tt> (if any), and <tt>authorization_details</tt> (if any) in the issued ID-JAG. If the IdP modifies the requested resources, scopes, or authorization details, it <bcp14>MUST</bcp14> reflect the granted values in the ID-JAG.</t>
            </li>
          </ul>
          <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>authorization_details</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14> - A JSON array of authorization detail objects as defined in <xref section="2.2" sectionFormat="of" target="RFC9396"/>. This parameter <bcp14>MUST</bcp14> be included if the client requested authorization details and the IdP granted authorization details that differ from what was requested, or if the IdP modified the authorization details.</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="example-with-rich-authorization-requests-rar">
            <name>Example with Rich Authorization Requests (RAR)</name>
            <t>The following is a non-normative example demonstrating the use of Rich Authorization Requests (RAR) <xref target="RFC9396"/> with ID-JAG:</t>
            <t>Token Exchange Request with authorization_details:</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/
&authorization_details=[{"type":"chat_read","actions":["read"],"locations":["https://api.chat.example/channels"]},{"type":"chat_history","actions":["read"],"datatypes":["message"]}]
&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>Token Exchange Response:</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",
  "authorization_details": [
    {
      "type": "chat_read",
      "actions": ["read"],
      "locations": ["https://api.chat.example/channels"]
    },
    {
      "type": "chat_history",
      "actions": ["read"],
      "datatypes": ["message"]
    }
  ],
  "expires_in": 300
}
]]></artwork>
            <t>Issued Identity Assertion JWT Authorization Grant with authorization_details:</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,
  "authorization_details": [
    {
      "type": "chat_read",
      "actions": ["read"],
      "locations": ["https://api.chat.example/channels"]
    },
    {
      "type": "chat_history",
      "actions": ["read"],
      "datatypes": ["message"]
    }
  ],
  "auth_time": 1311280970
}
.
signature
]]></artwork>
            <t>Access Token Request:</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>
            <t>Access Token Response:</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,
  "authorization_details": [
    {
      "type": "chat_read",
      "actions": ["read"],
      "locations": ["https://api.chat.example/channels"]
    },
    {
      "type": "chat_history",
      "actions": ["read"],
      "datatypes": ["message"]
    }
  ]
}
]]></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 Resource Authorization Server <bcp14>MUST</bcp14> validate the <tt>aud</tt> (audience) claim of the ID-JAG. The <tt>aud</tt> claim <bcp14>MUST</bcp14> contain the issuer identifier of the Resource Authorization Server as defined in <xref target="RFC8414"/>. The <tt>aud</tt> claim <bcp14>MAY</bcp14> be a string containing a single issuer identifier, or an array containing a single issuer identifier. If the <tt>aud</tt> claim is an array, it <bcp14>MUST</bcp14> contain exactly one element, and that element <bcp14>MUST</bcp14> be the issuer identifier of the Resource Authorization Server. If the <tt>aud</tt> claim does not match the Resource Authorization Server's issuer identifier, the Resource Authorization Server <bcp14>MUST</bcp14> reject the JWT with an <tt>invalid_grant</tt> error as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>. This validation prevents audience injection attacks and ensures the ID-JAG was intended for this specific Resource Authorization Server.</t>
            </li>
            <li>
              <t>The <tt>client_id</tt> claim <bcp14>MUST</bcp14> identify the same client as the client authentication in the request. The Resource Authorization Server <bcp14>MUST</bcp14> validate that the <tt>client_id</tt> claim in the ID-JAG matches the authenticated client making the request. If they do not match, the Resource Authorization Server <bcp14>MUST</bcp14> reject the request with an <tt>invalid_grant</tt> error.</t>
            </li>
          </ul>
          <t>When processing authorization information from the ID-JAG:</t>
          <ul spacing="normal">
            <li>
              <t>If the <tt>resource</tt> claim is present, the Resource Authorization Server <bcp14>MUST</bcp14> process it according to <xref section="2" sectionFormat="of" target="RFC8707"/>. The Resource Authorization Server evaluates the resource identifiers and determines which resources to grant access to based on policy. The granted resources <bcp14>MAY</bcp14> be a subset of the resources in the ID-JAG issued by the IdP Authorization Server.</t>
            </li>
            <li>
              <t>If the <tt>scope</tt> claim is present, the Resource Authorization Server <bcp14>MUST</bcp14> process it according to <xref section="3.3" sectionFormat="of" target="RFC6749"/>. The Resource Authorization Server evaluates the scopes and determines which scopes to grant in the access token based on policy. The granted scopes <bcp14>MAY</bcp14> be a subset of the scopes in the ID-JAG issued by the IdP Authorization Server.</t>
            </li>
            <li>
              <t>If the <tt>authorization_details</tt> claim is present, the Resource Authorization Server <bcp14>MUST</bcp14> parse it as a JSON array and process each authorization detail object according to <xref target="RFC9396"/>. The Resource Authorization Server evaluates policy for each authorization detail and determines which authorization details to grant. The Resource Authorization Server <bcp14>MAY</bcp14> modify, filter, or omit authorization details based on policy.</t>
            </li>
            <li>
              <t>If both <tt>resource</tt> and <tt>authorization_details</tt> claims are present, the Resource Authorization Server <bcp14>MUST</bcp14> process both. The Resource Authorization Server <bcp14>SHOULD</bcp14> ensure consistency between the resource identifiers and authorization details when issuing the access token. The Resource Authorization Server <bcp14>MAY</bcp14> derive resource identifiers from authorization details or vice versa, or process them independently based on policy.</t>
            </li>
            <li>
              <t>If both <tt>scope</tt> and <tt>authorization_details</tt> claims are present, the Resource Authorization Server <bcp14>MUST</bcp14> process both. The Resource Authorization Server <bcp14>SHOULD</bcp14> ensure consistency between the scopes and authorization details when issuing the access token. The Resource Authorization Server <bcp14>MAY</bcp14> derive scopes from authorization details or vice versa, or process them independently based on policy.</t>
            </li>
            <li>
              <t>The Resource Authorization Server <bcp14>MUST</bcp14> include the granted <tt>resource</tt> (if any), <tt>scope</tt> (if any), and <tt>authorization_details</tt> (if any) in the access token response. The response format follows <xref section="2" sectionFormat="of" target="RFC8707"/> for resource, <xref section="5.1" sectionFormat="of" target="RFC6749"/> for scope, and <xref section="2.2" sectionFormat="of" target="RFC9396"/> for authorization_details.</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>
          <t>If the IdP Authorization Server supports Refresh Tokens as a <tt>subject_token</tt> in Token Exchange, the client can skip renewing the Identity Assertion and directly request a new ID-JAG by presenting the Refresh Token (see <xref target="token-exchange-refresh-token-example"/>).</t>
        </section>
      </section>
      <section anchor="saml-20-identity-assertion-interopability">
        <name>SAML 2.0 Identity Assertion Interopability</name>
        <t>Clients using SAML 2.0 for SSO with the IdP Authorization Server can obtain an ID-JAG without changing their SSO protocol to OpenID Connect by first exchanging the SAML 2.0 assertion for a Refresh Token using Token Exchange. This enables protocol transition to OAuth and allows the client to later use the Refresh Token as a <tt>subject_token</tt> to obtain an ID-JAG without prompting the user for a new Identity Assertion.</t>
        <t>The OpenID Connect scopes <tt>openid offline_access</tt> <bcp14>SHOULD</bcp14> be requested (additional scopes are allowed) when requesting a Refresh Token from the IdP Authorization Server.</t>
        <t>The IdP Authorization Server <bcp14>MUST</bcp14> map the SAML Audience to a Client ID and ensure the client's authentication matches that mapping before issuing the Refresh Token.</t>
        <t>The following non-normative example shows a SAML 2.0 assertion where the <tt>Audience</tt> value (from <tt>AudienceRestriction</tt>) corresponds to the Service Provider Entity ID (<tt>SPAuthority</tt> / <tt>SPEntityID</tt>) and <bcp14>MUST</bcp14> be mapped to the OAuth Client ID that the IdP Authorization Server associates with that SAML SP registration.</t>
        <artwork><![CDATA[
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
    ID="_123456789" IssueInstant="2025-03-01T12:34:56Z" Version="2.0">
  <saml2:Issuer>https://idp.example.com/</saml2:Issuer>
  <saml2:Subject>
    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
      alice@example.com
    </saml2:NameID>
    <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
      <saml2:SubjectConfirmationData
          NotOnOrAfter="2025-03-01T12:39:56Z"
          Recipient="https://client.example.com/assertion-consumer"/>
    </saml2:SubjectConfirmation>
  </saml2:Subject>
  <saml2:Conditions NotBefore="2025-03-01T12:34:56Z" NotOnOrAfter="2025-03-01T13:34:56Z">
    <saml2:AudienceRestriction>
      <saml2:Audience>https://client.example.com/sp-entity-id</saml2:Audience>
    </saml2:AudienceRestriction>
  </saml2:Conditions>
  <saml2:AttributeStatement>
    <saml2:Attribute Name="given_name">
      <saml2:AttributeValue>Alice</saml2:AttributeValue>
    </saml2:Attribute>
  </saml2:AttributeStatement>
  <saml2:AuthnStatement AuthnInstant="2025-03-01T12:30:00Z">
    <saml2:AuthnContext>
      <saml2:AuthnContextClassRef>
        urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
      </saml2:AuthnContextClassRef>
    </saml2:AuthnContext>
  </saml2:AuthnStatement>
</saml2:Assertion>
]]></artwork>
        <t>When this assertion is used as the <tt>subject_token</tt> in Token Exchange, the IdP Authorization Server <bcp14>MUST</bcp14> verify that the <tt>Audience</tt> / <tt>SPEntityID</tt> maps to the OAuth Client ID that is authenticated for the token request. This prevents a client from presenting an assertion issued for a different SAML SP.</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:refresh_token
&scope=openid+offline_access+email
&subject_token=PHNhbWxwOkFzc2VydGlvbiB4bWxuczp...c2FtbDppc3N1ZXI+PC9zYW1sOkFzc2VydGlvbj4=
&subject_token_type=urn:ietf:params:oauth:token-type:saml2
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...

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:refresh_token",
  "access_token": "vF9dft4qmTcXkZ26zL8b6u",
  "token_type": "N_A",
  "scope": "openid offline_access email",
  "expires_in": 1209600
}
]]></artwork>
      </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="tenant-relationships">
      <name>Tenant Relationships with Issuer and Client ID</name>
      <t>In multi-tenant deployments, the relationship between tenants, issuers, and client identifiers is critical for proper identity and authorization management. This section explains how these components relate to each other in the context of Identity Assertion JWT Authorization Grants.</t>
      <section anchor="issuer-and-tenant-relationship">
        <name>Issuer and Tenant Relationship</name>
        <t>An Authorization Server may operate as either a single-tenant or multi-tenant issuer:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Single-tenant issuer</strong>: The issuer identifier (<tt>iss</tt>) uniquely identifies both the Authorization Server and the tenant. All clients and users belong to a single tenant context. The issuer identifier alone is sufficient to identify the tenant.</t>
          </li>
          <li>
            <t><strong>Multi-tenant issuer</strong>: The issuer identifier (<tt>iss</tt>) identifies the Authorization Server, but multiple tenants may be hosted by the same issuer. In this case, the tenant identifier (<tt>tenant</tt>) claim is used in conjunction with the issuer identifier to uniquely identify the tenant context. The combination of <tt>iss</tt> + <tt>tenant</tt> uniquely identifies the tenant.</t>
          </li>
        </ul>
        <t>When an IdP Authorization Server issues an ID-JAG, it <bcp14>MUST</bcp14> include the <tt>tenant</tt> claim if the issuer is multi-tenant and the tenant context is relevant for the Resource Authorization Server. The IdP <bcp14>MUST</bcp14> determine the appropriate tenant identifier based on the subject's tenant membership and the target Resource Authorization Server's tenant requirements.</t>
      </section>
      <section anchor="client-id-and-tenant-relationship">
        <name>Client ID and Tenant Relationship</name>
        <t>The relationship between <tt>client_id</tt> and tenant depends on the deployment model:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Tenant-scoped client identifiers</strong>: In some deployments, the <tt>client_id</tt> is unique only within a tenant context. The same <tt>client_id</tt> value may exist in different tenants, and the combination of <tt>tenant</tt> + <tt>client_id</tt> (or <tt>iss</tt> + <tt>tenant</tt> + <tt>client_id</tt> for multi-tenant issuers) uniquely identifies the client registration.</t>
          </li>
          <li>
            <t><strong>Global client identifiers</strong>: In other deployments, the <tt>client_id</tt> is globally unique across all tenants. The <tt>client_id</tt> alone uniquely identifies the client, regardless of tenant context.</t>
          </li>
        </ul>
        <t>The IdP Authorization Server <bcp14>MUST</bcp14> understand the client identifier model used by the Resource Authorization Server when including the <tt>client_id</tt> claim in an ID-JAG. For tenant-scoped client identifiers, the IdP <bcp14>MUST</bcp14> ensure that the <tt>client_id</tt> included in the ID-JAG is valid within the tenant context indicated by the <tt>tenant</tt> claim (if present) or the issuer's tenant context.</t>
      </section>
      <section anchor="subject-identifier-uniqueness-with-tenants">
        <name>Subject Identifier Uniqueness with Tenants</name>
        <t>As specified in <xref target="id-jag"/>, subject identifiers (<tt>sub</tt>) have different uniqueness requirements based on tenant configuration:</t>
        <ul spacing="normal">
          <li>
            <t>For single-tenant issuers: The subject identifier <bcp14>MUST</bcp14> be unique when scoped with issuer (<tt>iss</tt> + <tt>sub</tt>).</t>
          </li>
          <li>
            <t>For multi-tenant issuers: The subject identifier <bcp14>MUST</bcp14> be unique when scoped with issuer and tenant (<tt>iss</tt> + <tt>tenant</tt> + <tt>sub</tt>).</t>
          </li>
        </ul>
        <t>The IdP Authorization Server <bcp14>MUST</bcp14> ensure that the <tt>sub</tt> claim in the ID-JAG follows the appropriate uniqueness rules for the target Resource Authorization Server. When the Resource Authorization Server is multi-tenant, the IdP <bcp14>MUST</bcp14> include the <tt>tenant</tt> claim in the ID-JAG to ensure proper subject identifier scoping.</t>
      </section>
      <section anchor="tenant-context-in-token-exchange">
        <name>Tenant Context in Token Exchange</name>
        <t>When a Client requests an ID-JAG via Token Exchange, the IdP Authorization Server determines the tenant context from:</t>
        <ol spacing="normal" type="1"><li>
            <t>The subject token (e.g., ID Token or SAML assertion) used in the token exchange request, which may contain tenant information</t>
          </li>
          <li>
            <t>The authenticated client's tenant membership</t>
          </li>
          <li>
            <t>The target Resource Authorization Server's tenant requirements</t>
          </li>
        </ol>
        <t>The IdP <bcp14>MUST</bcp14> evaluate policy to determine if the requested <tt>audience</tt> (Resource Authorization Server) requires tenant information, and if so, which tenant identifier to include in the issued ID-JAG. The tenant identifier in the ID-JAG <bcp14>MUST</bcp14> match the tenant context that the Resource Authorization Server expects for the specified <tt>client_id</tt> and <tt>sub</tt>.</t>
      </section>
    </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 anchor="sender-constraining-tokens">
        <name>Sender Constraining Tokens</name>
        <section anchor="proof-of-possession">
          <name>Proof-of-Possession</name>
          <t>Identity Assertion JWT Authorization Grant may support key binding to enable sender-constrained tokens as described in <xref section="4" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/> and <xref target="I-D.parecki-oauth-jwt-dpop-grant"/>. This provides additional security by binding tokens to a specific cryptographic key, preventing reuse by parties that do not have access to the private key.</t>
          <t>Proof-of-possession is demonstrated by the client presenting a DPoP proof JWT (as defined in <xref target="RFC9449"/>) in a <tt>DPoP</tt> HTTP header. The DPoP proof demonstrates that the client possesses the private key corresponding to a public key. This public key can be bound to tokens, ensuring that only the holder of the private key can use those tokens.</t>
          <t>The <tt>cnf</tt> (confirmation) claim, as defined in <xref target="RFC7800"/>, is used to bind a public key to a JWT. When an ID-JAG contains a <tt>cnf</tt> claim with a <tt>jkt</tt> property as defined in <xref target="RFC9449"/>, it indicates that the ID-JAG is bound to that specific key (identified by its JWK SHA-256 Thumbprint), and proof of possession of the corresponding private key <bcp14>MUST</bcp14> be demonstrated when using the ID-JAG.</t>
          <t>The following sections describe the processing rules for proof-of-possession at two stages: during the Token Exchange (when requesting an ID-JAG from the IdP) and during the ID-JAG exchange (when exchanging the ID-JAG for an access token at the Resource Authorization Server).</t>
          <section anchor="proof-of-possession-during-token-exchange">
            <name>Proof-of-Possession During Token Exchange</name>
            <t>When a client requests an ID-JAG from the IdP Authorization Server via Token Exchange, the client <bcp14>MAY</bcp14> include a DPoP proof in the request. This demonstrates possession of a key that can be bound to the ID-JAG.</t>
            <t>The client generates a key pair and includes a DPoP proof JWT in the <tt>DPoP</tt> header of the Token Exchange request:</t>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6IkVDI...

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
]]></artwork>
            <t>The IdP Authorization Server processes the request as follows:</t>
            <ol spacing="normal" type="1"><li>
                <t>If a DPoP proof is present, the IdP <bcp14>MUST</bcp14> validate it according to <xref section="4.3" sectionFormat="of" target="RFC9449"/>. The <tt>htm</tt> claim <bcp14>MUST</bcp14> be <tt>POST</tt>, and the <tt>htu</tt> claim <bcp14>MUST</bcp14> match the token endpoint URL.</t>
              </li>
              <li>
                <t>If the DPoP proof is valid, the IdP <bcp14>MUST</bcp14> include a <tt>cnf</tt> claim in the issued ID-JAG containing a <tt>jkt</tt> property with the JWK SHA-256 Thumbprint computed from the DPoP proof's <tt>jwk</tt> header parameter as defined in <xref section="6.1" sectionFormat="of" target="RFC9449"/>.  This enables the Resource Authorization Server to validate the key binding for the ID-JAG using simple string comparison of the JWK SHA-256 Thumbprint.</t>
              </li>
            </ol>
            <t>The <tt>cnf</tt> claim format follows <xref section="6.1" sectionFormat="of" target="RFC9449"/>:</t>
            <artwork><![CDATA[
{
  "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",
  "cnf": {
    "jkt":"0ZcOCORZNYy-DWpqq30jZyJGHTN0d2HglBV3uiguA4I"
  }
}
]]></artwork>
            <ol spacing="normal" type="1"><li>
                <t>The token exchange response does not explicitly indicate whether key binding was successfully performed by the IdP.  The <tt>token_type</tt> response parameter for an ID-JAG is always <tt>N_A</tt> per <xref section="2.2.1" sectionFormat="of" target="RFC8693"/>. The client <bcp14>SHOULD</bcp14> inspect the ID-JAG to determine if a <tt>cnf</tt> claim is present and whether it represents the same key as the DPoP proof.  This enables the client to detect if the IdP successfully processed the DPoP proof in the token exchange request and bound the issued ID-JAG, preventing the IdP from silently ignoring the DPoP proof and mitigating downgrade attacks.</t>
              </li>
              <li>
                <t>If no DPoP proof is presented, the IdP issues an ID-JAG without a <tt>cnf</tt> claim.</t>
              </li>
            </ol>
          </section>
          <section anchor="proof-of-possession-during-id-jag-exchange">
            <name>Proof-of-Possession During ID-JAG Exchange</name>
            <t>When a client exchanges an ID-JAG for an access token at the Resource Authorization Server, the processing rules depend on whether the ID-JAG contains a <tt>cnf</tt> claim and whether the client presents a DPoP proof.</t>
            <section anchor="id-jag-contains-cnf-claim-and-dpop-proof-is-presented">
              <name>ID-JAG Contains <tt>cnf</tt> Claim and DPoP Proof is Presented</name>
              <t>If the ID-JAG contains a <tt>cnf</tt> claim and the client presents a DPoP proof, the Resource Authorization Server <bcp14>MUST</bcp14>:</t>
              <ol spacing="normal" type="1"><li>
                  <t>Validate the DPoP proof according to <xref section="4" sectionFormat="of" target="RFC9449"/>.</t>
                </li>
                <li>
                  <t>Extract the JWK SHA-256 Thumbprint from the DPoP proof by computing the thumbprint of the <tt>jwk</tt> header parameter in the DPoP proof according to <xref target="RFC7638"/>.</t>
                </li>
                <li>
                  <t>Extract the JWK SHA-256 Thumbprint from the <tt>jkt</tt> property of the <tt>cnf</tt> claim in the ID-JAG.</t>
                </li>
                <li>
                  <t>Compare the two thumbprints. They <bcp14>MUST</bcp14> match exactly. If they do not match, the request <bcp14>MUST</bcp14> fail with an <tt>invalid_grant</tt> error.</t>
                </li>
                <li>
                  <t>If the thumbprints match, the Resource Authorization Server <bcp14>MAY</bcp14> issue a sender-constrained access token (e.g., a DPoP-bound token) per the Resource Server configuration. The issued access token <bcp14>SHOULD</bcp14> be bound to the same key.</t>
                </li>
              </ol>
              <t>Example request:</t>
              <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.chat.example
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6IkVDI...

grant_type=urn:ietf:params:oauth:grant-type:jwt-dpop
&assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
]]></artwork>
              <t>Example successful response with DPoP-bound token:</t>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "token_type": "DPoP",
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "expires_in": 86400,
  "scope": "chat.read chat.history"
}
]]></artwork>
            </section>
            <section anchor="id-jag-contains-cnf-claim-but-dpop-proof-is-not-presented">
              <name>ID-JAG Contains <tt>cnf</tt> Claim but DPoP Proof is Not Presented</name>
              <t>If the ID-JAG contains a <tt>cnf</tt> claim but the client does not present a DPoP proof, the Resource Authorization Server <bcp14>MUST</bcp14> reject the request with an <tt>invalid_grant</tt> error, as the ID-JAG requires proof of possession.</t>
              <t>Example error response:</t>
              <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_grant",
  "error_description": "Proof of possession required for this authorization grant"
}
]]></artwork>
            </section>
            <section anchor="id-jag-does-not-contain-cnf-claim-and-dpop-proof-is-presented">
              <name>ID-JAG Does Not Contain <tt>cnf</tt> Claim and DPoP Proof is Presented</name>
              <t>If the ID-JAG does not contain a <tt>cnf</tt> claim but the client presents a DPoP proof, the Resource Authorization Server:</t>
              <ol spacing="normal" type="1"><li>
                  <t><bcp14>MUST</bcp14> validate the DPoP proof according to <xref section="4" sectionFormat="of" target="RFC9449"/>.</t>
                </li>
                <li>
                  <t><bcp14>MAY</bcp14> issue a sender-constrained access token (e.g., a DPoP-bound token) per the Resource Server configuration at the Authorization Server, binding the access token to the key demonstrated in the DPoP proof.</t>
                </li>
                <li>
                  <t>The access token response will indicate the token type (e.g., <tt>DPoP</tt> for DPoP-bound tokens, or <tt>Bearer</tt> for unconstrained tokens).</t>
                </li>
              </ol>
            </section>
            <section anchor="id-jag-does-not-contain-cnf-claim-and-dpop-proof-is-not-presented">
              <name>ID-JAG Does Not Contain <tt>cnf</tt> Claim and DPoP Proof is Not Presented</name>
              <t>If the ID-JAG does not contain a <tt>cnf</tt> claim and the client does not present a DPoP proof:</t>
              <ol spacing="normal" type="1"><li>
                  <t>The Resource Authorization Server <bcp14>MAY</bcp14> issue an unconstrained Bearer token.</t>
                </li>
                <li>
                  <t>However, if the Resource Server configuration at the Authorization Server requires constrained tokens for that Resource Server, the request <bcp14>MUST</bcp14> fail with an <tt>invalid_grant</tt> error.</t>
                </li>
              </ol>
              <t>Example error response when constrained tokens are required:</t>
              <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_grant",
  "error_description": "Sender-constrained tokens required for this resource server"
}
]]></artwork>
            </section>
          </section>
        </section>
      </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 the following claims 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>
          <li>
            <t>Claim Name: <tt>aud_tenant</tt></t>
          </li>
          <li>
            <t>Claim Description: Resource Authorization Server tenant identifier</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="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC7638">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </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>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="9" month="February" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism to preserve identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.

Discussion Venues

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-08"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-rfc7523bis">
          <front>
            <title>Updates to OAuth 2.0 JSON Web Token (JWT) Client Authentication and Assertion-Based Authorization Grants</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
              <organization>Disney</organization>
            </author>
            <author fullname="Filip Skokan" initials="F." surname="Skokan">
              <organization>Okta</organization>
            </author>
            <date day="12" month="January" year="2026"/>
            <abstract>
              <t>   This specification updates the requirements for audience values in
   OAuth 2.0 Client Assertion Authentication and Assertion-based
   Authorization Grants to address a security vulnerability identified
   in the previous requirements for those audience values in multiple
   OAuth 2.0 specifications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc7523bis-05"/>
        </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="I-D.parecki-oauth-jwt-dpop-grant">
          <front>
            <title>OAuth 2.0 JWT Authorization Grant with DPoP Binding</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="30" month="January" year="2026"/>
            <abstract>
              <t>   This specification defines a new OAuth 2.0 authorization grant type
   that uses a JSON Web Token (JWT) assertion to request an access token
   that is bound to a specific key using the Demonstration of Proof-of-
   Possession (DPoP) mechanism.  This provides a higher level of
   security than a simple bearer token, as the client must prove
   possession of the key to use the access token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-parecki-oauth-jwt-dpop-grant-01"/>
        </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="1" month="March" year="2026"/>
            <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-01"/>
        </reference>
      </references>
    </references>
    <?line 1041?>

<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>-02</t>
      <ul spacing="normal">
        <li>
          <t>Added reference and examples of a RAR <tt>authorization_details</tt> object in the Token Exchange and ID-JAG</t>
        </li>
        <li>
          <t>Added refresh token as an optional subject token input to the Token Exchange for SAML interop</t>
        </li>
        <li>
          <t>Described how to use DPoP with the ID-JAG exchange</t>
        </li>
        <li>
          <t>Added <tt>aud_tenant</tt> and <tt>aud_sub</tt> claims to ID-JAG to support multi-tenant systems</t>
        </li>
      </ul>
      <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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

-->

</rfc>
