<?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-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="OAuth RT/Authorization Expiration">OAuth 2.0 Refresh Token and Authorization Expiration</title>
    <seriesInfo name="Internet-Draft" value="draft-watson-oauth-refresh-token-expiration-01"/>
    <author fullname="Nicholas Watson">
      <organization>Google, LLC</organization>
      <address>
        <email>nwatson@google.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="17"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>refresh token</keyword>
    <keyword>authorization</keyword>
    <keyword>token endpoint</keyword>
    <abstract>
      <?line 50?>

<t>This specification extends OAuth 2.0 <xref target="RFC6749"/> by adding new token endpoint
response parameters to specify refresh token expiration and user authorization
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 56?>

<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 being exchanged on the token endpoint.</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="authorization-expiration">
        <name>Authorization expiration</name>
        <t>When granting authorization for an application to access their data as
referenced in <xref target="RFC6749"/> Sec 4.1.1, the user may opt to time-limit that
authorization, 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 authorization duration.</t>
      </section>
      <section anchor="refresh-token-timeout">
        <name>Refresh token timeout</name>
        <t>Authorization servers may wish to define a maximum amount of time clients can
hold a refresh token without exchanging it. Beyond the security benefit provided
by expiring credentials, this also provides a convenient mechanism for
authorization servers to ensure there aren't ancient valid credentials out in
the wild, which could complicate tasks like refresh token key rotation.</t>
      </section>
    </section>
    <section anchor="refresh-token-expiration">
      <name>Refresh token expiration</name>
      <t>The refresh token <bcp14>MUST NOT</bcp14> expire later than the user authorization expires. It
<bcp14>MAY</bcp14> expire earlier if the authorization server also enforces a maximum duration
between refresh token exchanges.</t>
      <t>If the user renews their authorization, the authorization server <bcp14>SHOULD</bcp14> update
the expiration time of existing refresh tokens if their lifetime was truncated
due to user authorization 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>
      <t>Access tokens <bcp14>MUST NOT</bcp14> expire later than the user authorization expires. If the
user renews their authorization, the authorization server <bcp14>MAY</bcp14> update the
expiration time of existing access tokens if possible. Resource servers <bcp14>MUST NOT</bcp14>
accept expired access tokens for any purpose, even if the authorization server
has no way to update the expiration time of existing access 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_timeout
      The time in seconds that the refresh token may be held by the client
      without exchanging. 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
      authorization_expires_in.

authorization_expires_in
      The lifetime in seconds of the user's authorization for the scopes
      contained in the issued or presented refresh token. For example, the
      value 2629800 denotes that the authorization will expire in one month
      from the time the response was generated. This value MAY exceed that
      of refresh_token_timeout.
]]></artwork>
        <t>If finite, the authorization server <bcp14>MUST</bcp14> return these values whenever the token
endpoint response contains the <tt>refresh_token</tt> field. The authorization server
<bcp14>MAY</bcp14> return these values even if the response contains no <tt>refresh_token</tt> field
in the response, which can be useful in the following example cases:</t>
        <ul spacing="normal">
          <li>
            <t>For <tt>refresh_token_timeout</tt>, the authorization server could have
updated the existing refresh token lifetime in place.</t>
          </li>
          <li>
            <t>For <tt>authorization_expires_in</tt>, the user's authorization lifetime could have
been modified out of band.</t>
          </li>
          <li>
            <t>In all cases, it can be convenient for the client to receive these values
in each response.</t>
          </li>
        </ul>
        <section anchor="relationship-of-authorizationexpiresin-to-scopes">
          <name>Relationship of <tt>authorization_expires_in</tt> to scopes</name>
          <t>Though <tt>authorization_expires_in</tt> is returned from the token endpoint when
refresh tokens are used, it corresponds to the user's authorization for <em>scopes</em>
(or finer-grained access through RAR <xref target="RFC9396"/>) rather than individual tokens.
The authorization server <bcp14>SHOULD</bcp14> ensure consistent lifetimes across multiple
refresh tokens for the same scopes.</t>
          <t>Tying authorization lifetime to scopes means it's possible to have some access
valid for one duration and other access valid for a different duration. For
example, a user could grant indefinite access for the <tt>openid</tt> scope and
short-lived access for a calendar scope.</t>
        </section>
        <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 authorization. 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 exchanged
at least once every 7 days, and a user has granted authorization to an
application for access for 30 days. The initial exchange will result in the
following response values:</t>
        <artwork><![CDATA[
refresh_token_timeout: 604800  // 7 days
authorization_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_timeout: 604800  // 7 days
authorization_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_timeout: 172800  // 2 days
authorization_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_supported
    OPTIONAL. JSON array of supported expiration types. The possible values
    are "authorization" 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_supported</tt>
in its metadata to indicate to the client that it's aware of this spec.</t>
    </section>
    <section anchor="user-experience-considerations">
      <name>User Experience Considerations</name>
      <t>While clients must be able to gracefully handle tokens' expiring at any time,
the user experience may suffer if there's an unintended interruption of service.
This degradation of experience would most likely be felt by users of clients
running in the background, such as task or travel management apps that rely on
access to a user's calendar or inbox.</t>
      <t>If an application recognizes that its access is nearing expiration, it can
proactively prompt the user for reauthorization next time they're "in the loop"
(e.g. using a parameter like <tt>prompt=consent</tt> from <xref target="OpenID"/>), or even
communicate to the user out of band that their granted access is expiring.</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
authorization 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 authorization models. By requiring refresh tokens
to expire no later than user authorization expires, there is less risk of bugs
that accidentally provide data access to the client beyond the term of the
user's authorization.</t>
      <t>Authorization servers implementing token rotation on every refresh [OAuth 2.1
Sec 4.3.1] may wish to enforce a maximum duration that a refresh token may be
held without rotation, and this specification allows that duration to be
communicated as part of the API rather than relying on documentation.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Allowing users to time-limit their authorization 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 authorization.</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_timeout
              </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: authorization_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_supported
              </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-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="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="OpenID" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0</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="2014" month="November"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 320?>

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

-->

</rfc>
