<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="none" docName="oauth-v2-jarm-03" submissionType="IETF" category="std" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" consensus="true">

<front>
<title abbrev="OAuth JARM">JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)</title><seriesInfo value="oauth-v2-jarm-03" status="standard" name="Internet-Draft"></seriesInfo>
<author initials="T." surname="Lodderstedt" fullname="Torsten Lodderstedt"><organization>yes.com</organization><address><postal><street></street>
</postal><email>torsten@lodderstedt.net</email>
</address></author>
<author initials="B." surname="Campbell" fullname="Brian Campbell"><organization>Ping Identity</organization><address><postal><street></street>
</postal><email>bcampbell@pingidentity.com</email>
</address></author>
<date/>
<area>Internet</area>
<workgroup>FAPI</workgroup>
<keyword>security</keyword>
<keyword>oauth2</keyword>

<note><name>Warning</name>
<t>This document is not an OIDF International Standard. It is distributed for review and comment. It is subject to change without notice and may not be referred to as an International Standard.</t>
<t>Recipients of this draft are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.</t>
</note>

<note><name>Foreword</name>
<t>The OpenID Foundation (OIDF) promotes, protects and nurtures the OpenID community and technologies. As a non-profit international standardizing body, it is comprised by over 160 participating entities (workgroup participants). The work of preparing implementer drafts and final international standards is carried out through OIDF workgroups in accordance with the OpenID Process. Participants interested in a subject for which a workgroup has been established has the right to be represented in that workgroup. International organizations, governmental and non-governmental, in liaison with OIDF, also take part in the work. OIDF collaborates closely with other standardizing bodies in the related fields.</t>
<t>Final drafts adopted by the Workgroup through consensus are circulated publicly for the public review for 60 days and for the OIDF members for voting. Publication as an OIDF Standard requires approval by at least 50 % of the members casting a vote. There is a possibility that some of the elements of this document may be the subject to patent rights. OIDF shall not be held responsible for identifying any or all such patent rights.</t>
</note>

</front>

<middle>

<section anchor="introduction"><name>Introduction</name>
<t>This document defines a new JWT-based mode to encode OAuth authorization responses. Clients are enabled to request
the transmission of the authorization response parameters along with additional data in JWT format.
This mechanism enhances the security of the standard authorization response with support for signing and optional encryption of the response.
A signed response provides message integrity, sender authentication, audience restriction, and protection from mix-up attacks. Encrypting the response provides confidentiality of the response parameter values.
The JWT authorization response mode can be used in conjunction with any response type.</t>

<section anchor="notational-conventions"><name>Notational Conventions</name>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL
NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;,
&quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"></xref> <xref target="RFC8174"></xref> when, and only when, they
appear in all capitals, as shown here.</t>
</section>

<section anchor="terms-and-definitions"><name>Terms and definitions</name>
<t>For the purpose of this document, the terms defined in <xref target="RFC6749"></xref> and <xref target="OIDC"></xref> apply.</t>
</section>

<section anchor="symbols-and-abbreviated-terms"><name>Symbols and Abbreviated terms</name>
<t><strong>API</strong> – Application Programming Interface</t>
<t><strong>CSRF</strong> - Cross Site Request Forgery</t>
<t><strong>HTTP</strong> – Hyper Text Transfer Protocol</t>
<t><strong>OIDF</strong> - OpenID Foundation</t>
<t><strong>TLS</strong> – Transport Layer Security</t>
</section>
</section>

<section anchor="jwt-based-response-mode"><name>JWT-based Response Mode</name>
<t>This document defines a new JWT-based <xref target="RFC7519"></xref> mode to encode OAuth <xref target="RFC6749"></xref> authorization response parameters. All response parameters defined for a given response type are conveyed in a JWT along with additional claims used to further protect the transmission. Since there are different techniques to encode the JWT itself in the response to the client, namely query URI parameter, fragment component and form post, this document defines a set of response mode values in accordance with <xref target="OIDM"></xref> corresponding to these techniques.</t>

<section anchor="jwt-response"><name>The JWT Response Document</name>
<t>The JWT always contains the following data utilized to secure the transmission:</t>

<ul>
<li><t><tt>iss</tt> - the issuer URL of the authorization server that created the response</t>
</li>
<li><t><tt>aud</tt> - the client_id of the client the response is intended for</t>
</li>
<li><t><tt>exp</tt> - expiration of the JWT. A maximum JWT lifetime of 10 minutes is RECOMMENDED.</t>
</li>
</ul>
<t>The JWT MUST furthermore contain the authorization endpoint response parameters as defined for the particular response types, even in case of an error response. Authorization endpoint response parameter names and string values are included as JSON strings and numerical values (e.g., <tt>expires_in</tt> value) are included as JSON numbers. This pattern is applicable to all response types including those defined in <xref target="OIDM"></xref>. The following subsection illustrates the pattern for the response type &quot;code&quot;.</t>
<t>Note: Additional authorization endpoint response parameters defined by extensions, e.g. <tt>session_state</tt> as defined in <xref target="OISM"></xref>, will also be added to the JWT.</t>
<t>The JWT response document MAY contain further element, e.g. the claims defined in <xref target="RFC7519"></xref>. Implementation SHOULD adhere to the respective processing rules and ignore unrecognized elements.</t>

<section anchor="example-response-type-code"><name>Example Response Type &quot;code&quot;</name>
<t>For the grant type authorization &quot;code&quot; the JWT contains the response parameters as defined in <xref target="RFC6749"></xref>, sections 4.1.2:</t>

<ul>
<li><t><tt>code</tt> - the authorization code</t>
</li>
<li><t><tt>state</tt> - the state value as sent by the client in the authorization request, if the client included a <tt>state</tt> parameter</t>
</li>
</ul>
<t>The following example shows the JWT claims for a successful &quot;code&quot; authorization response:</t>

<artwork>{  
   &quot;iss&quot;:&quot;https://accounts.example.com&quot;,
   &quot;aud&quot;:&quot;s6BhdRkqt3&quot;,
   &quot;exp&quot;:1311281970,
   &quot;code&quot;:&quot;PyyFaux2o7Q0YfXBU32jhw.5FXSQpvr8akv9CeRDSd0QA&quot;,  
   &quot;state&quot;:&quot;S8NJ7uqk5fY4EjNvP_G_FtyJu6pUsvH9jsYni9dMAJw&quot;
}
</artwork>
<t>In case of an error response, the JWT contains the error response parameters as defined in <xref target="RFC6749"></xref>, sections 4.1.2.1:</t>

<ul>
<li><t><tt>error</tt> - the error code</t>
</li>
<li><t><tt>error_description</tt> (OPTIONAL) - a human readable description of the error</t>
</li>
<li><t><tt>error_uri</tt> (OPTIONAL) - a URI identifying a human-readable web page with information about the error</t>
</li>
<li><t><tt>state</tt> - the state value as sent by the client in the authorization request (if applicable)</t>
</li>
</ul>
<t>The following example shows the JWT payload for such an error response:</t>

<artwork>{
   &quot;iss&quot;:&quot;https://accounts.example.com&quot;,
   &quot;aud&quot;:&quot;s6BhdRkqt3&quot;,
   &quot;exp&quot;:1311281970,
   &quot;error&quot;:&quot;access_denied&quot;,
   &quot;state&quot;:&quot;S8NJ7uqk5fY4EjNvP_G_FtyJu6pUsvH9jsYni9dMAJw&quot;
}
</artwork>
</section>
</section>

<section anchor="signing-and-encryption"><name>Signing and Encryption</name>
<t>The JWT is either signed, or signed and encrypted. If the JWT is both signed and encrypted, the JSON document will be signed then encrypted, with the result being a Nested JWT, as defined in <xref target="RFC7519"></xref>.</t>
<t>The authorization server determines what algorithm to employ to secure the JWT for a particular authorization response. This decision can be based on registered metadata parameters for the client as defined by this document (see <xref target="client-metadata"></xref>).</t>
<t>For guidance on key management in general and especially on use of symmetric algorithms for signing and encrypting based on client secrets see section 10 of <xref target="OIDC"></xref>.</t>
</section>

<section anchor="response-encoding"><name>Response Encoding</name>
<t>This document defines the following response mode values:</t>

<ul>
<li><t><tt>query.jwt</tt></t>
</li>
<li><t><tt>fragment.jwt</tt></t>
</li>
<li><t><tt>form_post.jwt</tt></t>
</li>
<li><t><tt>jwt</tt></t>
</li>
</ul>

<section anchor="response-mode-query-jwt"><name>Response Mode &quot;query.jwt&quot;</name>
<t>The response mode &quot;query.jwt&quot; causes the authorization server to send the authorization response as HTTP redirect to the redirect URI of the client. The authorization server adds the parameter <tt>response</tt> containing the JWT as defined in <xref target="jwt-response"></xref>. to the query component of the redirect URI using the &quot;application/x-www-form-urlencoded&quot; format.</t>
<t>This is an example response (line breaks for display purposes only):</t>

<artwork>HTTP/1.1 302 Found
Location: https://client.example.com/cb?
response=eyJraWQiOiJsYWViIiwiYWxnIjoiRVMyNTYifQ.eyAgImlzcyI6ICJodHRwczovL2FjY291
bnRzLmV4YW1wbGUuY29tIiwgICJhdWQiOiAiczZCaGRSa3F0MyIsICAiZXhwIjogMTMxMTI4MTk3MCwg
ICJjb2RlIjogIlB5eUZhdXgybzdRMFlmWEJVMzJqaHcuNUZYU1FwdnI4YWt2OUNlUkRTZDBRQSIsICAi
c3RhdGUiOiAiUzhOSjd1cWs1Zlk0RWpOdlBfR19GdHlKdTZwVXN2SDlqc1luaTlkTUFKdyJ9.4VdtknV
Z9zFYDVLagJpVBD436bjPMcSgOaPDPFgTEkNyCs2uIHYJ2XML6d2w1AUsm5GBG77DBisZNhLWfug6dA
</artwork>
<t>Note: &quot;query.jwt&quot; MUST NOT be used in conjunction with response types that contain &quot;token&quot; or &quot;id_token&quot; unless the response JWT is encrypted to prevent token leakage in the URL.</t>
</section>

<section anchor="response-mode-fragment-jwt"><name>Response Mode &quot;fragment.jwt&quot;</name>
<t>The response mode &quot;fragment.jwt&quot; causes the authorization server to send the authorization response as HTTP redirect to the redirect URI of the client. The authorization server adds the parameter <tt>response</tt> containing the JWT as defined in <xref target="jwt-response"></xref>. to the fragment component of the redirect URI using the &quot;application/x-www-form-urlencoded&quot; format.</t>
<t>This is an example response (line breaks for display purposes only):</t>

<artwork>HTTP/1.1 302 Found
Location: https://client.example.com/cb#
response=eyJraWQiOiJsYWViIiwiYWxnIjoiRVMyNTYifQ.eyAgImlzcyI6ICJodHRwczovL2FjY291
bnRzLmV4YW1wbGUuY29tIiwgICJhdWQiOiAiczZCaGRSa3F0MyIsICAiZXhwIjogMTMxMTI4MTk3MCwg
ICJhY2Nlc3NfdG9rZW4iOiAiMllvdG5GWkZFanIxekNzaWNNV3BBQSIsICAic3RhdGUiOiAiUzhOSjd1
cWs1Zlk0RWpOdlBfR19GdHlKdTZwVXN2SDlqc1luaTlkTUFKdyIsICAidG9rZW5fdHlwZSI6ICJiZWFy
ZXIiLCAgImV4cGlyZXNfaW4iOiAzNjAwLCAgInNjb3BlIjogImV4YW1wbGUifQ.g_96IM2t_6Dazm1Jp
b2gbO2EXe5IKTw2bYS7l9Y1RI8HbNPYN5EdNjxcWeL5LTQaUAZ2PtJoHbTdjMvNa3xbVg
</artwork>
</section>

<section anchor="response-mode-form-post-jwt"><name>Response Mode &quot;form_post.jwt&quot;</name>
<t>The response mode &quot;form_post.jwt&quot; uses the technique described in <xref target="OIFP"></xref> to convey the JWT to the client. The <tt>response</tt> parameter containing the JWT is encoded as HTML form value that is auto-submitted in the User Agent, and thus is transmitted via the HTTP POST method to the Client, with the result parameters being encoded in the body using the &quot;application/x-www-form-urlencoded&quot; format.</t>
<t>This is an example response from the authorization server to the user agent (line breaks for display purposes only),</t>

<artwork>HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Cache-Control: no-cache, no-store
Pragma: no-cache

&lt;html&gt;
 &lt;head&gt;&lt;title&gt;Submit This Form&lt;/title&gt;&lt;/head&gt;
 &lt;body onload=&quot;javascript:document.forms[0].submit()&quot;&gt;
  &lt;form method=&quot;post&quot; action=&quot;https://client.example.com/cb&quot;&gt;
    &lt;input type=&quot;hidden&quot; name=&quot;response&quot;
     value=&quot;eyJraWQiOiJsYWViIiwiYWxnIjoiRVMyNTYifQ.eyAgImlzcyI6ICJodHRw
     czovL2FjY291bnRzLmV4YW1wbGUuY29tIiwgICJhdWQiOiAiczZCaGRSa3F0MyIsIC
     AiZXhwIjogMTMxMTI4MTk3MCwgICJhY2Nlc3NfdG9rZW4iOiAiMllvdG5GWkZFanIx
     ekNzaWNNV3BBQSIsICAic3RhdGUiOiAiUzhOSjd1cWs1Zlk0RWpOdlBfR19GdHlKdT
     ZwVXN2SDlqc1luaTlkTUFKdyIsICAidG9rZW5fdHlwZSI6ICJiZWFyZXIiLCAgImV4
     cGlyZXNfaW4iOiAzNjAwLCAgInNjb3BlIjogImV4YW1wbGUifQ.g_96IM2t_6Dazm1
     Jpb2gbO2EXe5IKTw2bYS7l9Y1RI8HbNPYN5EdNjxcWeL5LTQaUAZ2PtJoHbTdjMvNa
     3xbVg&quot;/&gt;
    &lt;/form&gt;
   &lt;/body&gt;
  &lt;/html&gt;  
</artwork>
<t>which results in the following POST request to the client's redirect URI.</t>

<artwork>POST /cb HTTP/1.1
Host: client.example.org
Content-Type: application/x-www-form-urlencoded

response=eyJraWQiOiJsYWViIiwiYWxnIjoiRVMyNTYifQ.eyAgImlzcyI6ICJodHRw
czovL2FjY291bnRzLmV4YW1wbGUuY29tIiwgICJhdWQiOiAiczZCaGRSa3F0MyIsICAi
ZXhwIjogMTMxMTI4MTk3MCwgICJhY2Nlc3NfdG9rZW4iOiAiMllvdG5GWkZFanIxekNz
aWNNV3BBQSIsICAic3RhdGUiOiAiUzhOSjd1cWs1Zlk0RWpOdlBfR19GdHlKdTZwVXN2
SDlqc1luaTlkTUFKdyIsICAidG9rZW5fdHlwZSI6ICJiZWFyZXIiLCAgImV4cGlyZXNf
aW4iOiAzNjAwLCAgInNjb3BlIjogImV4YW1wbGUifQ.g_96IM2t_6Dazm1Jpb2gbO2EX
e5IKTw2bYS7l9Y1RI8HbNPYN5EdNjxcWeL5LTQaUAZ2PtJoHbTdjMvNa3xbVg
</artwork>
</section>

<section anchor="response-mode-jwt"><name>Response Mode &quot;jwt&quot;</name>
<t>The response mode &quot;jwt&quot; is a shortcut and indicates the default redirect encoding (query, fragment) for the requested response type. The default for response type &quot;code&quot; is &quot;query.jwt&quot; whereas the default for &quot;token&quot; and the response types defined in <xref target="OIDM"></xref>, except &quot;none&quot;, is &quot;fragment.jwt&quot;.</t>
</section>
</section>

<section anchor="processing-rules"><name>Processing rules</name>
<t>Assumption: the client remembers the authorization server to which it sent the authorization request and binds this information to the user agent.</t>
<t>The client MUST process the JWT secured response as follows:</t>

<ol>
<li><t>(OPTIONAL) The client decrypts the JWT using the default key for the respective issuer or, if applicable, determined by the <tt>kid</tt> JWT header parameter. The key might be a private key, where the corresponding public key is registered with the expected issuer of the response (&quot;use&quot;:&quot;enc&quot; via the client's metadata <tt>jwks</tt> or <tt>jwks_uri</tt>) or a key derived from its client secret (see <xref target="signing-and-encryption"></xref>).</t>
</li>
<li><t>The client obtains the <tt>iss</tt> element from the JWT and checks whether its value is well known and identifies the expected issuer of the authorization process in examination. If the check fails, the client MUST abort processing and refuse the response.</t>
</li>
<li><t>The client obtains the <tt>aud</tt> element from the JWT and checks whether it matches the client id the client used to identify itself in the corresponding authorization request. If the check fails, the client MUST abort processing and refuse the response.</t>
</li>
<li><t>The client checks the JWT's <tt>exp</tt> element to determine if the JWT is still valid. If the check fails, the client MUST abort processing and refuse the response.</t>
</li>
<li><t>The client MUST check the signature of the JWT according to <xref target="RFC7515"></xref> and the algorithm <tt>none</tt> (<tt>&quot;alg&quot;:&quot;none&quot;</tt>) MUST NOT be accepted. If the check fails, the client MUST abort processing and refuse the response.</t>
</li>
</ol>
<t>The client will perform further checks, e.g. for CSRF detection, which are out of scope of this specification. Please see <xref target="I-D.ietf-oauth-security-topics"></xref> for more security recommendations.</t>
<t>Note: The way the client obtains the keys for verifying the JWT's signature (step 5) is out of scope of this document. Established mechanism such as <xref target="OIDD"></xref> or <xref target="RFC8414"></xref> SHOULD be utilized.</t>
<t>The client MUST NOT process the grant type specific authorization response parameters before all checks succeed.</t>
</section>
</section>

<section anchor="client-metadata"><name>Client Metadata</name>
<t>The Dynamic Client Registration Protocol <xref target="RFC7591"></xref> defines an API
for dynamically registering OAuth 2.0 client metadata with authorization servers.
The metadata defined by <xref target="RFC7591"></xref>, and registered extensions to it,
also imply a general data model for clients that is useful for authorization server implementations
even when the Dynamic Client Registration Protocol isn't in play.
Such implementations will typically have some sort of user interface available for managing client configuration.</t>
<t>The following client metadata parameters are introduced by this specification:</t>

<dl>
<dt><tt>authorization_signed_response_alg</tt></dt>
<dd><t>The JWS <xref target="RFC7515"></xref> <tt>alg</tt> algorithm REQUIRED for signing authorization responses. If this is specified, the response will be signed using JWS and the configured algorithm. If unspecified, the default algorithm to use for signing authorization responses is <tt>RS256</tt>. The algorithm <tt>none</tt> is not allowed.</t>
</dd>
<dt><tt>authorization_encrypted_response_alg</tt></dt>
<dd><t>The JWE <xref target="RFC7516"></xref> <tt>alg</tt> algorithm REQUIRED for encrypting authorization responses.  If both signing and encryption are requested, the response will be signed then encrypted, with the result being a Nested JWT, as defined in JWT <xref target="RFC7519"></xref>.  The default, if omitted, is that no encryption is performed.</t>
</dd>
<dt><tt>authorization_encrypted_response_enc</tt></dt>
<dd><t>The JWE <xref target="RFC7516"></xref> <tt>enc</tt> algorithm REQUIRED for encrypting authorization responses.  If <tt>authorization_encrypted_response_alg</tt> is specified, the default for this value is <tt>A128CBC-HS256</tt>.  When <tt>authorization_encrypted_response_enc</tt> is included, <tt>authorization_encrypted_response_alg</tt> MUST also be provided.</t>
</dd>
</dl>
<t>The <tt>jwks_uri</tt> or <tt>jwks</tt> metadata parameters can be used by clients to register their public encryption keys.</t>
</section>

<section anchor="as-metadata"><name>Authorization Server Metadata</name>
<t>Authorization servers SHOULD publish the supported algorithms for signing and encrypting the JWT of an authorization response by utilizing OAuth 2.0 Authorization Server Metadata <xref target="RFC8414"></xref> parameters.</t>
<t>The following parameters are introduced by this specification:</t>

<dl>
<dt><tt>authorization_signing_alg_values_supported</tt></dt>
<dd><t>OPTIONAL.  A JSON array containing a list of the JWS <xref target="RFC7515"></xref> signing algorithms (<tt>alg</tt> values) supported by the authorization endpoint to sign the response.</t>
</dd>
<dt><tt>authorization_encryption_alg_values_supported</tt></dt>
<dd><t>OPTIONAL.  A JSON array containing a list of the JWE <xref target="RFC7516"></xref> encryption algorithms (<tt>alg</tt> values) supported by the authorization endpoint to encrypt the response.</t>
</dd>
<dt><tt>authorization_encryption_enc_values_supported</tt></dt>
<dd><t>OPTIONAL.  A JSON array containing a list of the JWE <xref target="RFC7516"></xref> encryption algorithms (<tt>enc</tt> values)  supported by the authorization endpoint to encrypt the response.</t>
</dd>
</dl>
<t>Authorization servers SHOULD publish the supported response mode values utilizing the parameter <tt>response_modes_supported</tt> as defined in <xref target="RFC8414"></xref>. This document introduces the following possible values:</t>

<ul>
<li><t><tt>query.jwt</tt></t>
</li>
<li><t><tt>fragment.jwt</tt></t>
</li>
<li><t><tt>form_post.jwt</tt></t>
</li>
<li><t><tt>jwt</tt></t>
</li>
</ul>
</section>

<section anchor="security-considerations"><name>Security Considerations</name>
<t>As JARM is used as a component in OAuth, many of the security considerations listed in OAuth 2.0 Security Best Current Practice <xref target="I-D.ietf-oauth-security-topics"></xref> apply. In addition, for the mechanisms described in this document, the following security considerations apply.</t>

<section anchor="dos-using-specially-crafted-jwts"><name>DoS using specially crafted JWTs</name>
<t>JWTs could be crafted to have an issuer that resolves to a JWK set URL with
huge content, or is delivered very slowly, consuming server networking
bandwidth and compute capacity. The resolved JWK set URL could also be used to
DDoS targets on the web.</t>
<t>The client therefore MUST first check that the issuer of the JWT is well-known
and expected for the particular authorization response before it uses this data
to obtain the key needed to check the JWT's signature.</t>
</section>

<section anchor="protocol-run-integrity"><name>Protocol Run Integrity</name>
<t>An OAuth protocol run is made of many distinct message exchanges between the client and server
to complete the issuance of access and refresh tokens. Even if every message itself is integrity
protected, it is still conceivable that one or more of the messages are exchanged with another
message created for a different protocol run. The leakage and reuse of encrypted messages in
<xref target="code-leakage"></xref> is an example of such problems. To mitigate this problem, it is considered good
practice to implement additional protection provided by PKCE <xref target="RFC7636"></xref>
as described in <xref target="I-D.ietf-oauth-security-topics"></xref>.</t>
</section>

<section anchor="mix-up"><name>Mix-Up</name>
<t>Mix-up is an attack on scenarios where an OAuth client interacts with
multiple authorization servers. The goal of the attack is to obtain an
authorization code or an access token by tricking the client into
sending those credentials to the attacker instead of using them at
the respective endpoint at the authorization/resource server.</t>
<t>The JWT secured response mode enables clients to detect this attack by providing an identification of the sender (<tt>iss</tt>) and the intended audience of the authorization response (<tt>aud</tt>).</t>
</section>

<section anchor="code-leakage"><name>Code Leakage</name>
<t>Authorization servers MAY encrypt the authorization response therewith providing a means to prevent leakage of authorization codes in the user agent (e.g. during transmission, in browser history or via referrer headers).
Note, however, that the entire response is then potentially subject to leakage. An encrypted response doesn't remove the need for additional protections provided by mechanisms such as PKCE <xref target="RFC7636"></xref>.</t>
</section>
</section>

<section anchor="privacy-considerations"><name>Privacy Considerations</name>
<t>JARM only defines an alternative way of encoding the authorization response message and therefore does not materially impact the privacy considerations
of OAuth 2.0, which is a complex and flexible framework with broad-ranging privacy implications.</t>
<t>The content of a conventional authorization response message (e.g., <tt>code</tt> and <tt>state</tt>) does not typically convey personally identifiable information (PII). However, using encrypted JARM may improve privacy by reducing the potential for inadvertent information disclosure in cases where the authorization response might contain PII (such as other response types or extensions).</t>
</section>

<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="oauth-dynamic-client-registration-metadata-registration"><name>OAuth Dynamic Client Registration Metadata Registration</name>
<t>This specification requests registration of the following client metadata definitions in the IANA &quot;OAuth Dynamic Client Registration Metadata&quot; registry established by <xref target="RFC7591"></xref>:</t>

<section anchor="registry-contents"><name>Registry Contents</name>

<ul>
<li><t>Client Metadata Name: <tt>authorization_signed_response_alg</tt></t>
</li>
<li><t>Client Metadata Description: String value indicating the client's desired introspection response signing algorithm.</t>
</li>
<li><t>Change Controller: IESG</t>
</li>
<li><t>Specification Document(s): <xref target="client-metadata"></xref> of [[ this specification ]]</t>
</li>
<li><t>Client Metadata Name: <tt>authorization_encrypted_response_alg</tt></t>
</li>
<li><t>Client Metadata Description: String value specifying the desired introspection response encryption algorithm (alg value).</t>
</li>
<li><t>Change Controller: IESG</t>
</li>
<li><t>Specification Document(s): <xref target="client-metadata"></xref> of [[ this specification ]]</t>
</li>
<li><t>Client Metadata Name: <tt>authorization_encrypted_response_enc</tt></t>
</li>
<li><t>Client Metadata Description: String value specifying the desired introspection response encryption algorithm (enc value).</t>
</li>
<li><t>Change Controller: IESG</t>
</li>
<li><t>Specification Document(s): <xref target="client-metadata"></xref> of [[ this specification ]]</t>
</li>
</ul>
</section>
</section>

<section anchor="oauth-authorization-server-metadata-registration"><name>OAuth Authorization Server Metadata Registration</name>
<t>This specification requests registration of the following value in the IANA &quot;OAuth Authorization Server Metadata&quot; registry established by <xref target="RFC8414"></xref>.</t>

<section anchor="registry-contents-1"><name>Registry Contents</name>

<ul>
<li><t>Metadata Name: <tt>authorization_signing_alg_values_supported</tt></t>
</li>
<li><t>Metadata Description: JSON array containing a list of algorithms supported by the authorization server for introspection response signing.</t>
</li>
<li><t>Change Controller: IESG</t>
</li>
<li><t>Specification Document(s): <xref target="as-metadata"></xref> of [[ this specification ]]</t>
</li>
<li><t>Metadata Name: <tt>authorization_encryption_alg_values_supported</tt></t>
</li>
<li><t>Metadata Description: JSON array containing a list of algorithms supported by the authorization server for introspection response encryption (alg value).</t>
</li>
<li><t>Change Controller: IESG</t>
</li>
<li><t>Specification Document(s): <xref target="as-metadata"></xref> of [[ this specification ]]</t>
</li>
<li><t>Metadata Name: <tt>authorization_encryption_enc_values_supported</tt></t>
</li>
<li><t>Metadata Description: JSON array containing a list of algorithms supported by the authorization server for introspection response encryption (enc value).</t>
</li>
<li><t>Change Controller: IESG</t>
</li>
<li><t>Specification Document(s): <xref target="as-metadata"></xref> of [[ this specification ]]</t>
</li>
</ul>
</section>
</section>
</section>

</middle>

<back>
<references><name>Normative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<reference anchor="OIFP" target="https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html">
  <front>
    <title>OAuth 2.0 Form Post Response Mode</title>
    <author fullname="Mike Jones" initials="M." surname="Jones">
      <organization>Microsoft</organization>
    </author>
    <author fullname="Brian Campbell" initials="B." surname="Campbell">
      <organization>Illumila</organization>
    </author>
    <date year="2015" month="April" day="27"></date>
  </front>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7516.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml"/>
<reference anchor="OIDM" target="http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html">
  <front>
    <title>OAuth 2.0 Multiple Response Type Encoding Practices</title>
    <author fullname="Breno de Medeiros" initials="B." surname="de Medeiros" role="editor">
      <organization abbrev="Google">Google</organization>
    </author>
    <author fullname="Marius Scurtescu" initials="M." surname="Scurtescu">
      <organization abbrev="Google">Google</organization>
    </author>
    <author fullname="Paul Tarjan" initials="P." surname="Tarjan">
      <organization abbrev="Facebook"> Facebook</organization>
    </author>
    <author fullname="Michael B. Jones" initials="M.B." surname="Jones">
      <organization abbrev="Microsoft">Microsoft</organization>
    </author>
    <date year="2014" month="February" day="25"></date>
  </front>
</reference>
</references>
<references><name>Informative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-oauth-security-topics.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7591.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7636.xml"/>
<reference anchor="OIDD" target="https://openid.net/specs/openid-connect-discovery-1_0.html">
  <front>
    <title>OpenID Connect Discovery 1.0 incorporating errata set 1</title>
    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization>NRI</organization>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization>Ping Identity</organization>
    </author>
    <author fullname="Mike Jones" initials="M." surname="Jones">
      <organization>Microsoft</organization>
    </author>
    <author fullname="Edmund Jay" initials="E." surname="Jay">
      <organization>Illumila</organization>
    </author>
    <date year="2014" month="Nov" day="8"></date>
  </front>
</reference>
<reference anchor="OIDC" target="http://openid.net/specs/openid-connect-core-1_0.html">
  <front>
    <title>OpenID Connect Core 1.0 incorporating errata set 1</title>
    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization>NRI</organization>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization>Ping Identity</organization>
    </author>
    <author fullname="Mike Jones" initials="M." surname="Jones">
      <organization>Microsoft</organization>
    </author>
    <author fullname="Breno de Medeiros" initials="B." surname="de Medeiros">
      <organization>Google</organization>
    </author>
    <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
      <organization>Salesforce</organization>
    </author>
    <date year="2014" month="Nov" day="8"></date>
  </front>
</reference>
<reference anchor="OISM" target="http://openid.net/specs/openid-connect-session-1_0.html">
  <front>
    <title>OpenID Connect Session Management 1.0</title>
    <author fullname="Breno de Medeiros" initials="B." surname="de Medeiros">
      <organization>Google</organization>
    </author>
    <author fullname="Naveen Agarwal" initials="N." surname="Agarwal">
      <organization>Microsoft</organization>
    </author>
    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization abbrev="NAT.Consulting">NAT.Consulting</organization>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization abbrev="Yubico">Yubico</organization>
    </author>
    <author fullname="Michael B. Jones" initials="M.B." surname="Jones">
      <organization abbrev="Microsoft">Microsoft</organization>
    </author>
    <date year="2022" month="March" day="14"></date>
  </front>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8414.xml"/>
</references>

<section anchor="acknowledgements"><name>Acknowledgements</name>
<t>The following people contributed to this document:</t>

<ul>
<li><t>Torsten Lodderstedt (YES), Editor</t>
</li>
<li><t>Brian Campbell (Ping Identity), Co-editor</t>
</li>
<li><t>Nat Sakimura (NAT Consulting LLC) -- Chair</t>
</li>
<li><t>Dave Tonge (Momentum Financial Technology) -- Chair</t>
</li>
<li><t>Joseph Heenan (Authlete)</t>
</li>
<li><t>Ralph Bragg (Raidiam)</t>
</li>
<li><t>Vladimir Dzhuvinov (Connect2ID)</t>
</li>
<li><t>Michael Schwartz (Gluu)</t>
</li>
<li><t>Filip Skokan (Auth0|Okta)</t>
</li>
</ul>
</section>

<section anchor="notices"><name>Notices</name>
<t>Copyright (c) 2022 The OpenID Foundation.</t>
<t>The OpenID Foundation (OIDF) grants to any Contributor, developer, implementer, or other interested party a non-exclusive, royalty free, worldwide copyright license to reproduce, prepare derivative works from, distribute, perform and display, this Implementers Draft or Final Specification solely for the purposes of (i) developing specifications, and (ii) implementing Implementers Drafts and Final Specifications based on such documents, provided that attribution be made to the OIDF as the source of the material, but that such attribution does not indicate an endorsement by the OIDF.</t>
<t>The technology described in this specification was made available from contributions from various sources, including members of the OpenID Foundation and others. Although the OpenID Foundation has taken steps to help ensure that the technology is available for distribution, it takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this specification or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any independent effort to identify any such rights. The OpenID Foundation and the contributors to this specification make no (and hereby expressly disclaim any) warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to this specification, and the entire risk as to implementing this specification is assumed by the implementer. The OpenID Intellectual Property Rights policy requires contributors to offer a patent promise not to assert certain patent claims against other contributors and against implementers. The OpenID Foundation invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology that may be required to practice this specification.</t>
</section>

</back>

</rfc>
