<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-watson-oauth-refresh-token-expiration-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="OAuth RT/Consent Expiration">OAuth 2.0 Refresh Token and Consent Expiration</title>
    <seriesInfo name="Internet-Draft" value="draft-watson-oauth-refresh-token-expiration-00"/>
    <author fullname="Nicholas Watson">
      <organization>Google, LLC</organization>
      <address>
        <email>nwatson@google.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="27"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>refresh token</keyword>
    <keyword>consent</keyword>
    <keyword>token endpoint</keyword>
    <abstract>
      <?line 40?>

<t>This specification extends OAuth 2.0 <xref target="RFC6749"/> by adding new token endpoint
response parameters to specify refresh token expiration and user consent
expiration.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://njwatson32.github.io/rt-expiration/draft-watson-oauth-refresh-token-expiration.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-watson-oauth-refresh-token-expiration/"/>.
      </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/njwatson32/rt-expiration"/>.</t>
    </note>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>RFC6749 defines the OAuth 2.0 protocol, part of which is the ability for a
client to receive a refresh token that may be repeatedly exchanged for more
access tokens. OAuth 2.0 does not contain any normative language around
expiration or lack thereof for refresh tokens, mentioning only that they are
"typically long-lasting".</t>
      <t>In the years since the publication of OAuth 2.0, in response to changing
security and privacy landscapes, many authorization servers have begun to issue
shorter-lived refresh tokens for two main reasons:</t>
      <ul spacing="normal">
        <li>
          <t>The authorization server or user may decide that the access being granted is
too sensitive to allow indefinite access (e.g. mail or health data).</t>
        </li>
        <li>
          <t>The authorization server enforces a maximum duration that refresh tokens may
be held without rotation. [OAuth 2.1 Sec 4.3.1]</t>
        </li>
      </ul>
      <t>Clients may wish to implement special handling for expiring refresh tokens. For
example, if the user has granted expiring access, the client may notify the user
that they will need to reauthorize access before a certain date to avoid
interruption of service.</t>
    </section>
    <section anchor="requirements-notation-and-conventions">
      <name>Requirements Notation and Conventions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>"Resource owner" and "user" may be used interchangeably to refer to the entity
capable of granting access to a protected resource.</t>
      <t>"Client", "application", and "relying party" may be used interchangeably to
refer to the application making protected resource requests on behalf of the
resource owner and with its authorization.</t>
    </section>
    <section anchor="concepts">
      <name>Concepts</name>
      <t>There are two mechanisms that can affect refresh token expiration.</t>
      <section anchor="consent-expiration">
        <name>Consent expiration</name>
        <t>When granting consent for an application to access their data, the user may opt
to time-limit that consent, especially if the data is sensitive or they aren't
sure how long they'll continue using the application. The authorization server
itself may also impose mandatory limits on consent duration.</t>
      </section>
      <section anchor="refresh-token-rotation">
        <name>Refresh token rotation</name>
        <t>Authorization servers implementing refresh token rotation may wish to define a
maximum amount of time clients can hold a refresh token without rotating it.
Beyond the security benefit provided by expiring credentials, this also provides
a convenient mechanism for authorization servers to change refresh token keys
without having to accept old credentials forever.</t>
      </section>
    </section>
    <section anchor="refresh-token-expiration">
      <name>Refresh token expiration</name>
      <t>The refresh token <bcp14>MUST</bcp14> expire no later than the user consent expires. It <bcp14>MAY</bcp14>
expire earlier if the authorization server also enforces a maximum duration
between refresh token rotations.</t>
      <t>If the user renews their consent, the authorization server <bcp14>MAY</bcp14> update the
expiration time of existing refresh tokens if their lifetime was truncated due
to user consent expiration. The authorization server <bcp14>MUST NOT</bcp14> accept expired
refresh tokens for any purpose, even if it has no way to update the expiration
time of existing refresh tokens.</t>
    </section>
    <section anchor="token-endpoint-response">
      <name>Token endpoint response</name>
      <t>This specification introduces two new response parameters.</t>
      <section anchor="successful-response">
        <name>Successful response</name>
        <artwork><![CDATA[
refresh_token_expires_in
      The lifetime in seconds of the refresh token. For example, the value
      "604800" denotes that the refresh token will expire in one week from
      the time the response was generated. This value SHALL NOT exceed the
      value in consent_expires_in.

consent_expires_in
      The lifetime in seconds of the user's consent. For example, the value
      "2629800" denotes that the consent will expire in one month from the
      time the response was generated. This value MAY exceed that of
      refresh_token_expires_in.
]]></artwork>
        <section anchor="infinite-expiration">
          <name>Infinite Expiration</name>
          <t>Omitted values indicate that there is no fixed upper bound on the lifetime of
the credential or consent. If the authorization server has not declared its
support for refresh token lifetime in the Authorization Server Metadata,
omitted response fields could indicate either indefinite validity or simply lack
of support for this specification. However, infinite expiration and lack of
information about expiration should be handled by the client in the same way.
That is to say, the client must always handle refresh token invalidation not
caused by expiration, such as by explicit user revocation.</t>
          <t>Rather than omitting a response value, an authorization server may choose to
return a large arbitrary value, e.g. "315569520" for 10 years. This avoids any
ambiguity around support for infinite values while achieving a similar practical
effect. Clients <bcp14>MUST</bcp14> treat all large values as literals and <bcp14>MUST NOT</bcp14> make any
assumptions about which may be considered infinite.</t>
        </section>
      </section>
      <section anchor="error-response">
        <name>Error response</name>
        <t>The existing <tt>invalid_grant</tt> error code already explicitly covers token
expiration and should be sufficient. Upon receiving this error code the client
<bcp14>SHOULD</bcp14> start a new authorization grant flow.</t>
      </section>
      <section anchor="example">
        <name>Example</name>
        <t>Suppose an authorization server enforces that refresh tokens must be rotated at
least once every 7 days, and a user has granted consent to an application for
access for 30 days. The initial exchange will result in the following response
values:</t>
        <artwork><![CDATA[
refresh_token_expires_in: "604800"  // 7 days
consent_expires_in: "2592000"  // 30 days
]]></artwork>
        <t>An exchange 7 days after initial authorization will result in the following
response values:</t>
        <artwork><![CDATA[
refresh_token_expires_in: "604800"  // 7 days
consent_expires_in: "1987200"  // 23 days
]]></artwork>
        <t>An exchange 28 days after initial authorization will result in the following
response values:</t>
        <artwork><![CDATA[
refresh_token_expires_in: "172800"  // 2 days
consent_expires_in: "172800"  // 2 days
]]></artwork>
      </section>
    </section>
    <section anchor="update-to-authorization-server-metadata">
      <name>Update to Authorization Server Metadata</name>
      <t>Support for the expiring refresh tokens <bcp14>SHOULD</bcp14> be declared in the
OAuth 2.0 Authorization Server Metadata <xref target="RFC8414"/> with the following
metadata:</t>
      <artwork><![CDATA[
refresh_token_expiration_types
    OPTIONAL. JSON array of supported expiration types. The possible values
    are "consent" and "credential".
]]></artwork>
      <t>If the authorization server omits expiration time response fields to indicate
indefinite validity, it <bcp14>MUST</bcp14> declare <tt>refresh_token_expiration_types</tt> in its
metadata to indicate to the client that it's aware of this spec.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>While it is possible to allow refresh token expiration to exceed
that of user consent expiration if the authorization server checks both
timestamps when validating a refresh token, this is a potentially dangerous
source of bugs in systems with complicated user consent models. By requiring
refresh tokens to expire no later than user consent expires, there is less risk
of bugs that accidentally provide data access to the client beyond the term of
the user's consent.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Allowing users to time-limit their consent is a privacy improvement. While this
was already doable in regular OAuth implementations, the potential interruption
of service for the user may have discouraged implementation of the feature. This
specification provides a standardized way to mitigate that concern and should
lead to greater adoption of time-limited consent.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="oauth-parameters-registration">
        <name>OAuth Parameters Registration</name>
        <t>This specification registers the following OAuth parameter definitions in the
IANA OAuth Parameters registry.</t>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>
              <t>Name: refresh_token_expires_in
              </t>
              <ul spacing="normal">
                <li>
                  <t>Parameter Usage Location: token response</t>
                </li>
                <li>
                  <t>Change Controller: IETF</t>
                </li>
                <li>
                  <t>Reference: This document</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Name: consent_expires_in
              </t>
              <ul spacing="normal">
                <li>
                  <t>Parameter Usage Location: token response</t>
                </li>
                <li>
                  <t>Change Controller: IETF</t>
                </li>
                <li>
                  <t>Reference: This document</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="oauth-authorization-server-metadata-registration">
        <name>OAuth Authorization Server Metadata Registration</name>
        <t>This specification registers the following Authorization Server Metadata
definitions in the IANA OAuth Authorization Server Metadata registry.</t>
        <section anchor="registry-contents-1">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>
              <t>Metadata Name: refresh_token_expiration_types
              </t>
              <ul spacing="normal">
                <li>
                  <t>Metadata Description: What types of refresh token expiration are
supported by the authorization server</t>
                </li>
                <li>
                  <t>Change Controller: IETF</t>
                </li>
                <li>
                  <t>Reference: This document</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <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="RFC8414">
        <front>
          <title>OAuth 2.0 Authorization Server Metadata</title>
          <author fullname="M. Jones" initials="M." surname="Jones"/>
          <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <date month="June" year="2018"/>
          <abstract>
            <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8414"/>
        <seriesInfo name="DOI" value="10.17487/RFC8414"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 258?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
1X8A0MtGzD8lAAA=

-->

</rfc>
