<?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.2 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-parecki-oauth-global-token-revocation-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title>Global Token Revocation</title>
    <seriesInfo name="Internet-Draft" value="draft-parecki-oauth-global-token-revocation-00"/>
    <author fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
        <uri>https://aaronparecki.com</uri>
      </address>
    </author>
    <date year="2023" month="November" day="09"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>token revocation</keyword>
    <keyword>logout</keyword>
    <abstract>
      <?line 55?>

<t>Global Token Revocation enables parties such as a security incident management tool or an external Identity Provider to send a request to an Authorization Server to indicate that it should revoke all of the user's existing tokens and sessions.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://aaronpk.github.io/global-token-revocation/draft-parecki-oauth-global-token-revocation.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-parecki-oauth-global-token-revocation/"/>.
      </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/aaronpk/global-token-revocation"/>.</t>
    </note>
  </front>
  <middle>
    <?line 60?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>An OAuth Authorization Server issues tokens in response to a user authorizing a client. A party external to the OAuth Authorization Server may wish to instruct the Authorization Server to revoke all tokens belonging to a particular user.</t>
      <t>For example, a security incident management tool may detect anomalous behaviour on a user's account, or if the user logged in through an enterprise Identity Provider, the Identity Provider may want to revoke all of a user's tokens on a security incident or on the employee's termination.</t>
      <t>This specification describes an API endpoint so that an authorization server can accept requests from external parties to revoke all tokens associated with a given user.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="terminology">
        <name>Terminology</name>
        <t>This specification uses the terms "Access Token", "Authorization Code",
"Authorization Endpoint", "Authorization Server" (AS), "Client", "Client Authentication",
"Client Identifier", "Client Secret", "End-User", "Grant Type", "Protected Resource",
"Redirection URI", "Refresh Token", "Resource Owner", "Resource Server" (RS)
and "Token Endpoint" defined by <xref target="RFC6749"/>,
and the terms "OpenID Provider" (OP) and "ID Token" defined by <xref target="OpenID"/>.</t>
        <t>This specification uses the term "Identity Provider" (IdP) to refer to
the Authorization Server or OpenID Provider that is used for End-User authentication.</t>
        <t>TODO: Replace RFC6749 references with OAuth 2.1</t>
      </section>
      <section anchor="roles">
        <name>Roles</name>
        <t>In a typical OAuth deployment, the OAuth client obtains tokens from the authorization server when a user logs in and authorizes the client. In many cases, the method by which a user logs in at the authorization server is through an external identity provider.</t>
        <t>For example, a mobile chat application is an OAuth Client, and obtains tokens from its backend server which stores the chat messages. The mobile chat backend plays the OAuth roles of "Resource Server" and "Authorization Server".</t>
        <t>In some cases, the user will log in to the Authorization Server using an external (e.g. enterprise) Identity Provider.</t>
      </section>
    </section>
    <section anchor="token-revocation">
      <name>Token Revocation</name>
      <t>A revocation request is a POST request to the Global Token Revocation endpoint. This URL <bcp14>MUST</bcp14> conform to the rules given in <xref target="RFC6749"/>, Section 3.1.</t>
      <t>The means to obtain the location of the revocation endpoint is out of the scope of this specification.  For example, the authorization server may publish documentation of the location of the endpoint, or may manually register it with tools that will use it.</t>
      <t>Upon receiving a token revocation request, implementations <bcp14>MUST</bcp14> support the revocation of refresh tokens and active user sessions, and <bcp14>SHOULD</bcp14> support the revocation of access tokens (see <xref target="implementation-notes"/>).</t>
      <section anchor="revocation-request">
        <name>Revocation Request</name>
        <t>The request is a POST request with an <tt>application/json</tt> body containing a single property <tt>subject</tt>,  the value of which is a Security Event Token Subject Identifier as defined in <xref target="I-D.ietf-secevent-subject-identifiers"/>.</t>
        <t>In practice, this means the value of <tt>subject</tt> is a JSON object with a property <tt>format</tt>, and at least one additional property depending on the value of <tt>format</tt>.</t>
        <t>The request <bcp14>MUST</bcp14> also be authenticated, the particular authentication method and means by which the authentication is established is out of scope of this specification, but may include an OAuth 2.0 Bearer Token (<xref target="RFC6750"/>) or a JWT (<xref target="RFC7523"/>).</t>
        <t>The following example requests all tokens for a user identified by an email address to be revoked:</t>
        <artwork><![CDATA[
POST /global-token-revocation
Host: example.com
Content-Type: application/json
Authorization: Bearer f5641763544a7b24b08e4f74045

{
  "subject": {
    "format": "email",
    "email": "user@example.com"
  }
}
]]></artwork>
        <t>To request revocation of all tokens for a user identified by a user ID at the Authorization Server, use the "opaque subject" identifier:</t>
        <artwork><![CDATA[
POST /global-token-revocation
Host: example.com
Content-Type: application/json
Authorization: Bearer f5641763544a7b24b08e4f74045

{
  "subject": {
    "format": "opaque",
    "id": "U1234567890"
  }
}
]]></artwork>
      </section>
      <section anchor="revocation-expectations">
        <name>Revocation Expectations</name>
        <t>Upon receiving a revocation request, authorizing the request, and validating the identified user, the Authorization Server <bcp14>MUST</bcp14> revoke all active refresh tokens, and invalidate all active sessions.</t>
        <t>If possible, the authorization server <bcp14>SHOULD</bcp14> invalidate all access tokens, although this might not be technically feasible, see <xref target="implementation-notes"/>.</t>
      </section>
      <section anchor="revocation-response">
        <name>Revocation Response</name>
        <t>This specification indicates success and error conditions by using HTTP response codes, and does not define the response body format or content.</t>
        <t>To indicate that the request was successful and revocation of the requested set of tokens has begun, the server returns an HTTP 204 response.</t>
        <section anchor="error-response">
          <name>Error Response</name>
          <t>The following HTTP response codes can be used to indicate various error conditions:</t>
          <ul spacing="normal">
            <li>
              <t><strong>400 Bad Request</strong>: The request was malformed, e.g. an unrecognized type of subject identifier.</t>
            </li>
            <li>
              <t><strong>401 Unauthorized</strong>: Authentication provided was invalid.</t>
            </li>
            <li>
              <t><strong>403 Forbidden</strong>: Insufficient authorization, e.g. missing scopes.</t>
            </li>
            <li>
              <t><strong>404 User Not Found</strong>: The user indicated by the subject identifier was not found.</t>
            </li>
            <li>
              <t><strong>422 Unable to Process Request</strong>: Unable to log out the user.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="implementation-notes">
      <name>Implementation Notes</name>
      <t>OAuth 2.0 allows deployment flexibility with respect to the style of
   access tokens.  The access tokens may be self-contained (e.g. <xref target="RFC9068"/>) so that a
   resource server needs no further interaction with an authorization
   server issuing these tokens to perform an authorization decision of
   the client requesting access to a protected resource.  A system
   design may, however, instead use access tokens that are handles
   referring to authorization data stored at the authorization server.</t>
      <t>While these are not the only options, they illustrate the
   implications for revocation.  In the latter case of reference tokens, the authorization
   server is able to revoke an access token by removing it from storage. In the former case, without storing tokens, it may be impossible to revoke tokens without taking additional measures.</t>
      <t>For this reason, revocation of access tokens is optional in this specification, since it may post too significant of a burden for implementers. It is not required to revoke access tokens to be able to return a success code to the caller.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="oauth-authorization-server-metadata">
        <name>OAuth Authorization Server Metadata</name>
        <t>IANA has (TBD) registered the following values in the IANA "OAuth Authorization Server Metadata" registry of <xref target="IANA.oauth-parameters"/> established by <xref target="RFC8414"/>.</t>
        <t><strong>Metadata Name</strong>: <tt>global_token_revocation_endpoint</tt></t>
        <t><strong>Metadata Description</strong>: URL of the authorization server's global token revocation endpoint.</t>
        <t><strong>Change Controller</strong>: IESG</t>
        <t><strong>Specification Document</strong>: Section X of [[ this specification ]]</t>
        <t><strong>Metadata Name</strong>: <tt>global_token_revocation_endpoint_auth_methods_supported</tt></t>
        <t><strong>Metadata Description</strong>: <bcp14>OPTIONAL</bcp14>. JSON array containing a list of client authentication methods supported by this introspection endpoint.  The valid client authentication method values are those registered in the IANA "OAuth Token Endpoint Authentication Methods" registry <xref target="IANA.oauth-parameters"/> or those registered in the IANA "OAuth Access Token Types" registry <xref target="IANA.oauth-parameters"/>.  (These values are and will remain distinct, due to Section 7.2.)  If omitted, the set of supported authentication methods <bcp14>MUST</bcp14> be determined by other means.</t>
        <t><strong>Change Controller</strong>: IESG</t>
        <t><strong>Specification Document</strong>: Section X of [[ this specification ]]</t>
      </section>
    </section>
  </middle>
  <back>
    <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="IANA.oauth-parameters" target="http://www.iana.org/assignments/oauth-parameters">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="I-D.ietf-secevent-subject-identifiers">
          <front>
            <title>Subject Identifiers for Security Event Tokens</title>
            <author fullname="Annabelle Backman" initials="A." surname="Backman">
              <organization>Amazon</organization>
            </author>
            <author fullname="Marius Scurtescu" initials="M." surname="Scurtescu">
              <organization>Coinbase</organization>
            </author>
            <author fullname="Prachi Jain" initials="P." surname="Jain">
              <organization>Fastly</organization>
            </author>
            <date day="24" month="June" year="2023"/>
            <abstract>
              <t>   Security events communicated within Security Event Tokens may support
   a variety of identifiers to identify subjects related to the event.
   This specification formalizes the notion of subject identifiers as
   structured information that describe a subject, and named formats
   that define the syntax and semantics for encoding subject identifiers
   as JSON objects.  It also defines a registry for defining and
   allocating names for such formats, as well as the "sub_id" JSON Web
   Token (JWT) claim.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-secevent-subject-identifiers-18"/>
        </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="RFC6750">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
        <reference anchor="RFC7009">
          <front>
            <title>OAuth 2.0 Token Revocation</title>
            <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
            <author fullname="S. Dronia" initials="S." surname="Dronia"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7009"/>
          <seriesInfo name="DOI" value="10.17487/RFC7009"/>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </reference>
        <reference anchor="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </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 240?>

<section anchor="document-history">
      <name>Document History</name>
      <t>(( To be removed from the final specification ))</t>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial Draft</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the following people for their contributions and reviews of this specification: George Fletcher, Karl McGuinness, Mike Jones.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
nKZvUUQVcKiuOCX+/LMTwr9/AcA8bYmzJgAA

-->

</rfc>
