<?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.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-hanson-oauth-cookie-response-mode-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="Cookie Response Mode">OAuth Cookie Response Mode</title>
    <seriesInfo name="Internet-Draft" value="draft-hanson-oauth-cookie-response-mode-00"/>
    <author fullname="Jared Hanson">
      <organization>Okta</organization>
      <address>
        <email>jared.hanson@okta.com</email>
      </address>
    </author>
    <date year="2024" month="February" day="16"/>
    <abstract>
      <?line 41?>

<t>This specification defines a response mode for OAuth 2.0 that uses a
cookie to obtain and transmit an access token.  In this mode, the access token
is encoded using an HTTP Set-Cookie header and transmitted via the
HTTP Cookie header to the client or resource server.</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/draft-hanson-oauth-cookie-response-mode/draft-hanson-oauth-cookie-response-mode.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-hanson-oauth-cookie-response-mode/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/aaronpk/draft-hanson-oauth-cookie-response-mode"/>.</t>
    </note>
  </front>
  <middle>
    <?line 49?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth was initially created to allow third-party clients to access
protected resources hosted by a resource server, with the approval of
the resource owner.  It has proven useful in first-party scenarios as
well, where clients and resource servers are managed by the same
organization.</t>
      <t>The implicit grant defined by OAuth is a flow optimized for clients
implemented in a browser using a scripting language such as
JavaScript.  In this flow, the client is issued the access token
directly, where, due to the nature of browsers, it may be exposed to
other applications with access to the resource owner's user-agent.</t>
      <t>Due to this, OAuth does not support issuance of refresh tokens via
the implicit grant, as refresh tokens are typically long-lasting
credentials that must be kept confidential and not exposed to
unauthorized parties.</t>
      <t>With the increasing adoption of OAuth, new threat models and security
best current practices have been identified in
<xref target="I-D.ietf-oauth-security-topics"/> and
<xref target="I-D.ietf-oauth-browser-based-apps"/>.  These new practices recommend
the use of authorization code grant by browser-based applications and
advise against use of the implicit grant.</t>
      <t>The rationale for the shift in guidance is sound, as the implicit
grant is susceptible to a number of a attack vectors that aren't
applicable to the authorization code grant.  However, concerns around
exposing tokens to unauthorized parties with access to the user-agent
remain, and may be exacerbated if refresh tokens are introduced to an
environment in which they were previously forbidden.</t>
      <t>These concerns are unavoidable, especially in scenarios where
delegation is granted to third-party clients.  However, first-party
scenarios have the ability to use cookies, which can be limited in
such a way that they aren't exposed to JavaScript.  Such limits
mitigate various attack vectors, benefiting scenarios in which use of
cookies is applicable.</t>
      <t>This specification defines a response mode for OAuth 2.0 that uses a
cookie to transmit an access token.  In this mode, the access token
is encoded using an HTTP <tt>Set-Cookie</tt> header and transmitted via the
the HTTP <tt>Cookie</tt> header to the client or resource server.</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>
    <section anchor="user-agent-based-applications">
      <name>User-Agent-based Applications</name>
      <t>This specification applies to user-agent-based applications, which is
a client profile defined in Section 2.1 of <xref target="RFC6749"/>.  A user-agent-
based application is a public client in which the client code is
downloaded from a web server and executes within a user-agent (e.g.,
web browser) on the device used by the resource owner.  Protocol data
and credentials are easily accessible (and often visible) to the
resource owner.  Since such applications reside within the user-
agent, they can make seamless use of the user-agent capabilities when
requesting authorization.</t>
      <t>This specification has been designed around the following user-agent-
based application profiles, representing common architectual patterns
for building web applications:</t>
      <dl>
        <dt>"multi-page application":</dt>
        <dd>
          <t>A multi-page application (MPA) is a user-
agent-based application that interacts with the user using
hypertext, where each interaction triggers a request to a server
which responds with a new page that is loaded into the browser.  A
MPA makes use of HTML links, forms, and HTTP redirects.</t>
        </dd>
        <dt>"single-page application":</dt>
        <dd>
          <t>A single-page application (SPA) is a user-
agent-based application that interacts with the user by
dynamically rewriting the current page rather than loading entire
new pages from a server.  A SPA makes use of JavaScript and web
browser APIs.</t>
        </dd>
        <dt>"hybrid application":</dt>
        <dd>
          <t>A hybrid application is a user-agent-based
application that interacts with the user using both hypertext and
dynamic scripting.  A hybrid application makes use of both HTML
and/or JavaScript within a single page and the entirety of the
application may span multiple pages.</t>
        </dd>
      </dl>
    </section>
    <section anchor="cookie-response-mode">
      <name>Cookie Response Mode</name>
      <t>This specification defines the Cookie Response Mode, which is
described with its <tt>response_mode</tt> parameter value:</t>
      <dl>
        <dt>"cookie":</dt>
        <dd>
          <t>In this mode, the access token parameter of an authorization
response is encoded in a Set-Cookie HTTP header when responding to
the client.</t>
        </dd>
      </dl>
      <section anchor="authorization-request">
        <name>Authorization Request</name>
        <t>The client constructs the request URI as defined in Section 4.2.1 of
<xref target="RFC6749"/>, and includes the response_mode extension parameter as
defined by this specification.</t>
        <t>The client directs the resource owner to the constructed URI using an
HTTP redirection response, or by other means available to it via the
user-agent.</t>
        <t>For example, the client directs the user-agent to make the following
HTTP request using TLS (with extra line breaks for display purposes
only):</t>
        <artwork><![CDATA[
GET /authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz
   &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
   &response_mode=cookie HTTP/1.1
Host: server.example.com
]]></artwork>
      </section>
      <section anchor="access-token-response">
        <name>Access Token Response</name>
        <t>If the resource owner grants the access request, the authorization
server issues an access token and delivers it to the client by
including an HTTP Set-Cookie header in the redirection response to
the client as defined by <xref target="RFC6265"/>.  Any additional parameters other
than the access token are added to the fragment component of the
redirection URI as defined in Section 4.2.2 of <xref target="RFC6749"/>.</t>
        <t>For example, the authorization server redirects the user-agent by
sending the following HTTP response (with extra line breaks for
display purposes only):</t>
        <artwork><![CDATA[
HTTP/1.1 302 Found
Location: http://example.com/cb#state=xyz&token_type=example
          &expires_in=3600
Set-Cookie: at=2YotnFZFEjr1zCsicMWpAA; Path=/
]]></artwork>
      </section>
    </section>
    <section anchor="accessing-protected-resources">
      <name>Accessing Protected Resources</name>
      <t>This specification describes how to use the HTTP state management
mechanism defined by <xref target="RFC6265"/> to access protected resources.</t>
      <section anchor="bearer-token-usage">
        <name>Bearer Token Usage</name>
        <t><xref target="RFC6750"/> defines how to use bearer tokens in HTTP requests,
primarily using the WWW-Authenticate and Authorization HTTP headers
defined by <xref target="RFC7235"/>.</t>
        <t>Many user-agent-based applications, particularly multi-page
applications, do not make use of the HTTP Authentication framework to
authorize access to protected resources.  Instead, these applications
use cookies to establish a "session" for subsequent requests to the
server.  This section defines a method of sending bearer access
tokens in resource requests to resource servers that makes use of the
HTTP state management mechanism implemented by the user-agent within
which a user-agent-based application is executing.</t>
        <section anchor="cookie-request-header-field">
          <name>Cookie Request Header Field</name>
          <t>When sending the access token using the HTTP state management
mechanism, the client uses the "Cookie" request header field to
transmit the access token.</t>
          <t>For example:</t>
          <artwork><![CDATA[
GET /resource HTTP/1.1
Host: server.example.com
Cookie: at=2YotnFZFEjr1zCsicMWpAA
Accept: text/html
]]></artwork>
          <t>This method is implemented by user-agents in such a way that the
"Cookie" request header field, and associated access token, are are
automatically presented by the client to the resource server,
typically without any involvement from the client developer.</t>
          <t>For example, a multi-page application would make the above request
when the end-user clicks on a link:</t>
          <artwork><![CDATA[
<a href="https://server.example.com/resource">Resource</a>
]]></artwork>
          <t>The corresponding HTTP POST request to the same endpoint would be
made when the end-user submits a form, for example:</t>
          <artwork><![CDATA[
<form action="https://server.example.com/resource" method="post">
  <label for="description">Name:</label>
  <input type="text" id="description" name="description">
  <button type="submit">Update</button>
</form>
]]></artwork>
        </section>
      </section>
      <section anchor="unauthenticated-requests">
        <name>Unauthenticated Requests</name>
        <t>If the protected resource request does not include authentication
credentials or does not contain an access token that enables access
to the protected resource, the resource server <bcp14>MAY</bcp14> include the HTTP
<tt>WWW-Authenticate</tt> response header field.</t>
        <t>If the resource server includes the HTTP <tt>WWW-Authenticate</tt> response
header field, it <bcp14>SHOULD</bcp14> use the auth-scheme value <tt>Cookie</tt> as defined
by <xref target="I-D.broyer-http-cookie-auth"/>.</t>
        <t>For example:</t>
        <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Cookie realm="example"
                         form-action="/login"
                         cookie-name=at
Content-Type: text/html

<title>Unauthorized</title>
<form action="/login" method="post">
  <label for="username">Username:</label>
  <input type="text" id="username" name="username">
  <label for="password">Password:</label>
  <input type="password" id="password" name="password">
  <button type="submit">Sign in</button>
</form>
]]></artwork>
      </section>
    </section>
    <section anchor="todo">
      <name>TODO</name>
      <t>Discuss cookie attributes like Expires and Path in relation to
Resource servers and token expiration times.</t>
      <t>Works when authorization server and the resource server (and the
client?) are the same entity.  - Client may need to be same entity as
AS, depending on browser cookie restrictinos like ITP.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </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="RFC6265">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol. Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet. This document obsoletes RFC 2965. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
        <reference anchor="I-D.broyer-http-cookie-auth">
          <front>
            <title>Cookie-based HTTP Authentication</title>
            <author fullname="Thomas Broyer" initials="T." surname="Broyer">
         </author>
            <date day="4" month="January" year="2009"/>
            <abstract>
              <t>This document specifies an HTTP authentication scheme for use when
credentials are validated by an out-of-band mechanism (not defined
here) and later communicated to the server through the use of a
cookie.  Which out-of-band mechanism should be used, and how, is
described by the 401 (Unauthorized) response body.  It is common
practice that this mechanism is an HTML form, sending the user's
credentials with the use of an HTTP POST request to a tier URL which
will set a cookie in response; though this document doesn't preclude
the use of other mechanisms.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-broyer-http-cookie-auth-00"/>
        </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="I-D.ietf-oauth-security-topics">
          <front>
            <title>OAuth 2.0 Security Best Current Practice</title>
            <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt">
              <organization>SPRIND</organization>
            </author>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Yubico</organization>
            </author>
            <author fullname="Andrey Labunets" initials="A." surname="Labunets">
              <organization>Independent Researcher</organization>
            </author>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete</organization>
            </author>
            <date day="8" month="February" year="2024"/>
            <abstract>
              <t>   This document describes best current security practice for OAuth 2.0.
   It updates and extends the threat model and security advice given in
   [RFC6749], [RFC6750], and [RFC6819] to incorporate practical
   experiences gathered since OAuth 2.0 was published and covers new
   threats relevant due to the broader application of OAuth 2.0.  It
   further deprecates some modes of operation that are deemed less
   secure or even insecure.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-security-topics-25"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-browser-based-apps">
          <front>
            <title>OAuth 2.0 for Browser-Based Apps</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="David Waite" initials="D." surname="Waite">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Philippe De Ryck" initials="P." surname="De Ryck">
              <organization>Pragmatic Web Security</organization>
            </author>
            <date day="23" month="October" year="2023"/>
            <abstract>
              <t>   This specification details the threats, attack consequences, security
   considerations and best practices that must be taken into account
   when developing browser-based applications that use OAuth 2.0.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Web Authorization
   Protocol Working Group mailing list (oauth@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/oauth/.

   Source for this draft and an issue tracker can be found at
   https://github.com/oauth-wg/oauth-browser-based-apps.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-browser-based-apps-15"/>
        </reference>
        <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="RFC7235">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypermedia information systems. This document defines the HTTP Authentication framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7235"/>
          <seriesInfo name="DOI" value="10.17487/RFC7235"/>
        </reference>
      </references>
    </references>
    <?line 303?>

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

-->

</rfc>
