<?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.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-refresh-token-expiration-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="OAuth RT/Authorization Expiration">OAuth 2.0 Refresh Token and Authorization Expiration</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-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="December" day="19"/>
    <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://drafts.oauth.net/rt-expiration/draft-ietf-oauth-refresh-token-expiration.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-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/oauth-wg/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, in which case the values correspond to the presented
<tt>refresh_token</tt>. This 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 321?>

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

-->

</rfc>
