<?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.6.33 (Ruby 3.1.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-looker-oauth-client-id-scheme-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title>OAuth 2.0 Client ID Scheme</title>
    <seriesInfo name="Internet-Draft" value="draft-looker-oauth-client-id-scheme-00"/>
    <author fullname="Tobias Looker">
      <organization>MATTR</organization>
      <address>
        <email>tobias.looker@mattr.global</email>
      </address>
    </author>
    <author fullname="Karthik Sivasamy">
      <organization>MATTR</organization>
      <address>
        <email>karthik.sivasamy@mattr.global</email>
      </address>
    </author>
    <date year="2023" month="May" day="15"/>
    <area>AREA</area>
    <workgroup>OAuth Working Group</workgroup>
    <keyword>oauth</keyword>
    <abstract>
      <?line 31?>

<t>This specification defines a new extensibility point to OAuth 2.0 which allows clients to identify through different methods to an authorization server using an identifier not assigned or managed by the authorization server. Beyond this general extensibility point, the specification defines one client ID scheme "urn:ietf:params:oauth:client-id-scheme:oauth-discoverable-client", including the nessary rules around how the client makes its metadata available for an authorization server and how an authorization server can obtain this metadata without the need for a registration process.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/mattrglobal/draft-looker-oauth-client-id-scheme"/>.</t>
    </note>
  </front>
  <middle>
    <?line 35?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In the traditional OAuth 2.0 model <xref target="RFC6749"/>, the authorization server (AS) registers and assigns an identifier to a client through a registration process, during which the authorization server records certain characteristics about the client, commonly known as its metadata.</t>
      <t>This requirement for registration greatly reduces how dynamic the relationship between a client and authorization server can be. For instance, a client that is updating the capabilities it supports must update its registration(s) with affected authorization servers for this change to be recognized.</t>
      <t>To enable a more dynamic relationship between a client and an authorization server, dynamic client registration via <xref target="RFC7591"/> was introduced. This model allows a client to register dynamically with a supporting authorization server by sending a registration request. Although this mechanism does provide some benefits it also introduces new operational challenges for both the client and AS. For instance clients that interface with many authorization servers are burdened with having to manage a client identifier per authorization server and in some cases forced to re-register the same client instance multiple times due to local storage limitations. Protecting the authorization servers client registration endpoint can also force other design tradeoffs, typically either the authorization server requires some form of authentication (e.g a "registration_token") for registration requests, which is often problematic for public clients to obtain and or manage. Or the authorization server permits any registration request and has to mitigate potential spam/malicious registration requests via some other mechanism.</t>
      <t>Instead of being limited to approaches which requiring a registration process for the client, this specification defines an extensibility point to allow clients to identify with the authorization server using an identifier not assigned by the authorization server.</t>
      <section anchor="conventions-and-terminology">
        <name>Conventions and Terminology</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?>

<t>This specification uses the terms "access token", "refresh token", "authorization server", "resource server", "authorization endpoint", "authorization request", "authorization response", "token endpoint", "grant type", "access token request", "access token response", "client", "public client", and "confidential client" defined by The OAuth 2.0 Authorization Framework <xref target="RFC6749"/>.</t>
        <t>The terms "request" and "response" are imported from <xref target="RFC9110"/>.</t>
      </section>
    </section>
    <section anchor="client-id-scheme">
      <name>Client ID Scheme</name>
      <t>A client can indicate to an authorization server that it is using a client identifier not assigned by the authorization server in an authorization request and or token request via the "client_id_scheme" request parameter. The value of the client_id_scheme request parameter indicates to the authorization server how it should process the "client_id" parameter which may include how to obtain the endpoint locations and capabilities of the client and validate that the party making the authorization request is infact the client represented by the reported "client_id".</t>
      <t>The following are non-normative example requests of a client making an authorization and a token request to an authorization server with the "client_id_scheme" parameter present and set to a value of "urn:ietf:params:oauth:client-id-scheme:example-value":</t>
      <sourcecode type="http"><![CDATA[
GET /authorize?response_type=code
    &client_id=https%3A%2F%2Fclient.example.com
    &client_id_scheme=urn%3Aietf%3Aparams%3Aoauth%3Aclient-id-scheme%3Aexample-value
    &state=af0ifjsldkj
    &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb
HOST: server.example.com
]]></sourcecode>
      <sourcecode type="http"><![CDATA[
POST /token
Host: server.example.com
Content-type: application/x-www-form-urlencoded
Accept: application/json

grant_type=authorization_code
&code=xxxxxxxx
&client_id=https://client.example.com/
&redirect_uri=https://client.example.com/redirect
&code_verifier=a6128783714cfda1d388e2e98b6ae8221ac31aca31959e59512c59f5
&client_id_scheme=urn%3Aietf%3Aparams%3Aoauth%3Aclient-id-scheme%3Aexample-value
]]></sourcecode>
      <section anchor="oauth-discoverable-client-id-scheme">
        <name>OAuth Discoverable Client ID Scheme</name>
        <t>The following section defines the the "client_id_scheme" of "urn:ietf:params:oauth:client-id-scheme:oauth-discoverable-client" including the requirements placed on both the client and authorization server when using this scheme.</t>
        <t>When the "client_id_scheme" parameter is present and is set to "urn:ietf:params:oauth:client-id-scheme:oauth-discoverable-client" in an authorization and or token request, it indicates to the receiving authorization server that the value of the "client_id" parameter in the request is an HTTPS based URL corresponding to the "client_uri" for the client and if the authorization server does not already have the metadata for the identified client, it can retrieve the metadata by following the procedure outlined in <xref target="client-metadata">Obtaining Client Metadata</xref>.</t>
        <section anchor="client-metadata">
          <name>Client Metadata</name>
          <t>Clients can have metadata described in their configuration. Examples of existing registered metadata fields that a client can make use of can be found at the <eref target="https://www.rfc-editor.org/rfc/rfc7591.html#section-4.1"> OAuth 2.0 dynamic client registration metadata IANA registry [RFC 7591]</eref>.</t>
          <t>The client's published metadata <bcp14>MUST</bcp14> include the client_uri field as defined in section 2 of RFC7591 <xref target="RFC7591"/>. The value of this field <bcp14>MUST</bcp14> be a URI as defined in RFC3986 <xref target="RFC3986"/> with a scheme component that <bcp14>MUST</bcp14> be https, a host component, and optionally, port and path components and no query or fragment components. Additionally, host names <bcp14>MUST</bcp14> be domain names and <bcp14>MUST NOT</bcp14> be IPv4 or IPv6 addresses.</t>
        </section>
        <section anchor="obtaining-client-metadata">
          <name>Obtaining Client Metadata</name>
          <t>A client supporting the "client_id_scheme" of "urn:ietf:params:oauth:client-id-scheme:oauth-discoverable-client" <bcp14>MUST</bcp14> make a JSON document containing metadata as specified in RFC7591 <xref target="RFC7591"/> available at a path formed by inserting a well-known URI string into the client_uri between the host component and the path component, if any. By default, the well-known URI string used is "/.well-known/oauth-client". This path <bcp14>MUST</bcp14> use the "https" scheme. The syntax and semantics of ".well-known" are defined in RFC 5785 <xref target="RFC5785"/>. The well-known URI suffix used <bcp14>MUST</bcp14> be registered in the IANA <eref target="https://www.iana.org/assignments/well-known-uris">"Well-Known URIs"</eref> registry.</t>
          <t>Different clients utilizing OAuth 2.0 in application-specific ways may define and register different well-known URI suffixes used to publish client metadata as used by those applications, for example using a well-known URI string such as "/.well-known/example-configuration". Alternatively, many such clients will use the default well-known URI string "/.well-known/oauth-client", which is the right choice for general-purpose OAuth 2.0 applications.</t>
          <t>An OAuth 2.0 client using this specification <bcp14>MUST</bcp14> specify what well-known URI suffix it will use for this purpose. The same client <bcp14>MAY</bcp14> choose to publish its metadata at multiple well-known locations derived from its client_uri, for example, publishing metadata at both "/.well-known/example-configuration" and
"/.well-known/oauth-client".</t>
          <t>Some OAuth 2.0 applications will choose to use the well-known URI suffix "openid-federation", as described in <xref target="compatibility-notes">Compatibility Notes</xref>.</t>
          <section anchor="client-metadata-request">
            <name>Client Metadata Request</name>
            <t>A client metadata document <bcp14>MUST</bcp14> be queried using an HTTP "GET" request at the previously specified path. The OAuth 2.0 authorization server would make the following request when the client_uri is "https://client.example.com" and the well-known URI suffix is "oauth-client" to obtain the metadata, since the client_uri contains no path component:</t>
            <sourcecode type="http"><![CDATA[
GET /.well-known/oauth-client HTTP/1.1
Host: client.example.com
]]></sourcecode>
            <t>If the client_uri value contains a path component, any terminating "/" <bcp14>MUST</bcp14> be removed before inserting "/.well-known/" and the well-known URI suffix between the host component and the path component. The OAuth 2.0 authorization server would make the following request when the client_uri is "https://client.example.com/client1" and the well-known URI suffix is "oauth-client" to obtain the metadata, since the client_uri contains a path component:</t>
            <sourcecode type="http"><![CDATA[
GET /.well-known/oauth-client/client1 HTTP/1.1
Host: client.example.com
]]></sourcecode>
            <t>Using path components enables supporting multiple clients per host. This is required in some complex client configurations. This use of ".well-known" is for supporting multiple clients per host; unlike its use in RFC 5785 <xref target="RFC5785"/>, it does not provide general information about the host.</t>
          </section>
          <section anchor="client-metadata-response">
            <name>Client Metadata Response</name>
            <t>The response is a set of metadata values describing client's configuration, including all valid redirection URIs and features supported by the client. A successful response <bcp14>MUST</bcp14> use the 200 OK HTTP status code and return a JSON object using the "application/json" content type that contains a set of metadata fields and values as defined in <xref target="client-metadata">Client Metadata</xref>. Other metadata fields <bcp14>MAY</bcp14> also be returned.</t>
            <t>Metadata fields that return multiple values are represented as JSON arrays. Metadata fields with no values <bcp14>MUST</bcp14> be omitted from the response.</t>
            <t>An error response uses the applicable HTTP status code value.</t>
            <t>The following is a non-normative example response:</t>
            <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
    "client_uri": "https://client.example.com",
    "client_name": "My Example Client",
    "redirect_uris": [
        "https://client.example.com/cb",
        "https://client.example.com/cb2"
    ],
    "logo_uri": "https://client.example.com/logo.png",
    "jwks_uri": "https://client.example.com/my_public_keys.jwks",
    "tos_uri": "https://client.example.com/tos",
    "policy_uri": "https://client.example.com/policy",
    "example_extension_parameter": "example_value"
}
]]></sourcecode>
          </section>
          <section anchor="client-metadata-validation">
            <name>Client Metadata Validation</name>
            <t>The client_uri value returned in the client metadata response <bcp14>MUST</bcp14> be identical to the client_uri value into which the well-known URI string was inserted to create the URL used to retrieve the metadata. If these values are not identical, the data contained in the response <bcp14>MUST NOT</bcp14> be used.</t>
          </section>
        </section>
        <section anchor="authorization-request">
          <name>Authorization Request</name>
          <t>The following is a non-normative example request of a client making an authorization request to an authorization server with the "client_id_scheme" parameter set to "urn:ietf:params:oauth:client-id-scheme:oauth-discoverable-client":</t>
          <sourcecode type="http"><![CDATA[
GET /authorize?response_type=code
    &client_id=a-non-as-assigned-client-id
    &client_id_scheme=urn%3Aietf%3Aparams%3Aoauth%3Aclient-id-scheme%3Aoauth-discoverable-client
    &state=af0ifjsldkj
    &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb
HOST: server.example.com
]]></sourcecode>
          <t>The value of the "client_id" parameter in the authorization request <bcp14>MUST</bcp14> represent the URL encoded form of the "client_uri" value for the corresponding client. The "client_id" value <bcp14>MUST</bcp14> be URL decoded by the authorization server to obtain the "client_uri" value which can be used to resolve the client metadata as described in the <xref target="obtaining-client-metadata">Obtaining Client Metadata</xref> section.</t>
          <t><strong>TODO stipulate new error responses</strong></t>
        </section>
        <section anchor="token-request">
          <name>Token Request</name>
          <t>The following is a non-normative example request of a client making a token request using the "client_id_scheme" parameter set to "urn:ietf:params:oauth:client-id-scheme:oauth-discoverable-client":</t>
          <sourcecode type="http"><![CDATA[
POST /token
Host: server.example.com
Content-type: application/x-www-form-urlencoded
Accept: application/json

grant_type=authorization_code
&code=xxxxxxxx
&client_id=a-non-as-assigned-client-id
&redirect_uri=https://client.example.com/redirect
&code_verifier=a6128783714cfda1d388e2e98b6ae8221ac31aca31959e59512c59f5
&client_id_scheme=urn%3Aietf%3Aparams%3Aoauth%3Aclient-id-scheme%3Aoauth-discoverable-client
]]></sourcecode>
          <t>The "client_id" parameter is passed to the token request during client authentication (<eref target="https://www.rfc-editor.org/rfc/rfc6749#section-3.2.1">as described in the Section 3.2.1 of [RFC6749]</eref>).</t>
          <t><strong>TODO stipulate on other possible methods of client authentication</strong></t>
          <t>In case of any errors, error response is returned (<eref target="https://www.rfc-editor.org/rfc/rfc6749#section-5.2">as described in the Section 5.2 of [RFC6749]</eref>).</t>
        </section>
      </section>
    </section>
    <section anchor="string-operations">
      <name>String Operations</name>
      <t>Processing some OAuth 2.0 messages requires comparing values in the messages to known values.  For example, the member names in the metadata response might be compared to specific member names such as "client_uri". Comparing Unicode [UNICODE] strings, however, has significant security implications.</t>
      <t>Therefore, comparisons between JSON strings and other Unicode strings <bcp14>MUST</bcp14> be performed as specified below:</t>
      <ol spacing="normal" type="1"><li>Remove any JSON-applied escaping to produce an array of Unicode
code points.</li>
        <li>Unicode Normalization [USA15] <bcp14>MUST NOT</bcp14> be applied at any point to
either the JSON string or the string it is to be compared
against.</li>
        <li>Comparisons between the two strings <bcp14>MUST</bcp14> be performed as a
Unicode code-point-to-code-point equality comparison.</li>
      </ol>
      <t>Note that this is the same equality comparison procedure described in (<eref target="https://www.rfc-editor.org/rfc/rfc8259#section-8.3"> Section 8.3 of [RFC8259]</eref>).</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="tls-requirements">
        <name>TLS Requirements</name>
        <t>Implementations <bcp14>MUST</bcp14> support TLS.  Which version(s) ought to be implemented will vary over time and depend on the widespread
deployment and known security vulnerabilities at the time of implementation.  The client <bcp14>MUST</bcp14> support TLS version 1.2 <xref target="RFC5246"/> and <bcp14>MAY</bcp14> support additional TLS mechanisms meeting its security requirements.  When using TLS, the authorization server <bcp14>MUST</bcp14> perform a TLS/SSL server certificate check, per RFC 6125 <xref target="RFC6125"/>.
Implementation security considerations can be found in "Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)" <xref target="BCP195"/>.</t>
        <t>To protect against information disclosure and tampering, confidentiality protection <bcp14>MUST</bcp14> be applied using TLS with a ciphersuite that provides confidentiality and integrity protection.</t>
      </section>
      <section anchor="impersonation-attacks">
        <name>Impersonation Attacks</name>
        <t>TLS certificate checking <bcp14>MUST</bcp14> be performed by the authorization server, as described in <xref target="tls-requirements"/>, when making a client metadata request. Checking that the server certificate is valid for the "client_uri" URL prevents man-in-middle and DNS-based attacks. These attacks could cause a authorization server to be tricked into using an attacker's keys and endpoints, which would enable impersonation of the legitimate client.  If an attacker can accomplish this, they can access the resources that the affected client has access to by impersonating their profile.</t>
        <t>An attacker may also attempt to impersonate a client by publishing a metadata document that contains a "client_uri" claim using the "client_uri" URL of the client being impersonated, but with its own endpoints and signing keys. This would enable it to impersonate that client, if accepted
by the authorization server.  To prevent this, the authorization server <bcp14>MUST</bcp14> ensure that the "client_uri" URL it is using as the prefix for the metadata request exactly matches the value of the "client_uri" metadata value in the client's metadata document received by the authorization server.</t>
      </section>
      <section anchor="server-side-request-forgery-ssrf-attacks">
        <name>Server Side Request Forgery (SSRF) Attacks</name>
        <t>Authorization servers resolving metadata of a client and resolving URLs located in the metadata document should be aware of possible SSRF attacks. Authorization servers should pay attention to the possibility of these URLs using private or loopback based addresses and consider network policies or other measures to prevent making requests to these addresses. Authorization servers should also be aware of the possibility of some URLs featuring non-http based URI schemes which can lead to other possible SSRF attack vectors.</t>
      </section>
    </section>
    <section anchor="compatibility-notes">
      <name>Compatibility Notes</name>
      <t><strong>TODO</strong></t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>The following IANA registration requests are made by this document.</t>
      <section anchor="oauth-parameters-registry">
        <name>OAuth Parameters Registry</name>
        <t>This specification registers the following parameters in the IANA "OAuth Parameters" registry defined in OAuth 2.0 RFC 6749 <xref target="RFC6749"/></t>
        <t>client_id_scheme - Authorization request</t>
        <ul spacing="normal">
          <li>Parameter name: client_id_scheme</li>
          <li>Parameter usage location: authorization request</li>
          <li>Change controller: IESG</li>
          <li>Specification document(s): RFC XXXX (this document)</li>
        </ul>
        <t>client_id_scheme - Token request</t>
        <ul spacing="normal">
          <li>Parameter name: client_id_scheme</li>
          <li>Parameter usage location: token request</li>
          <li>Change controller: IESG</li>
          <li>Specification document(s): RFC XXXX (this document)</li>
        </ul>
        <t>&lt;&lt; TODO registering the OAuth urn parameter value&gt;&gt;</t>
      </section>
      <section anchor="well-known-uri-registry">
        <name>Well-Known URI Registry</name>
        <t>This specification registers the well-known URI defined in <xref target="obtaining-client-metadata">Obtaining Client Metadata</xref> in the (<eref target="https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml">IANA "Well-Known URIs" registry</eref>) established by RFC 5785 <xref target="RFC5785"/></t>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>URI suffix: oauth-client</li>
            <li>Change controller: IESG</li>
            <li>Specification document: <xref target="obtaining-client-metadata"/> of RFC 8414</li>
            <li>Related information: (none)</li>
          </ul>
          <t>&lt;&lt; TODO - IANA registration - https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml &gt;&gt;</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <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">
            <organization/>
          </author>
          <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="RFC7591">
        <front>
          <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
          <author fullname="J. Richer" initials="J." role="editor" surname="Richer">
            <organization/>
          </author>
          <author fullname="M. Jones" initials="M." surname="Jones">
            <organization/>
          </author>
          <author fullname="J. Bradley" initials="J." surname="Bradley">
            <organization/>
          </author>
          <author fullname="M. Machulak" initials="M." surname="Machulak">
            <organization/>
          </author>
          <author fullname="P. Hunt" initials="P." surname="Hunt">
            <organization/>
          </author>
          <date month="July" year="2015"/>
          <abstract>
            <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers.  Registration requests send a set of desired client metadata values to the authorization server.  The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client.  The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol.  This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7591"/>
        <seriesInfo name="DOI" value="10.17487/RFC7591"/>
      </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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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>
      <reference anchor="RFC9110">
        <front>
          <title>HTTP Semantics</title>
          <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
            <organization/>
          </author>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
            <organization/>
          </author>
          <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
            <organization/>
          </author>
          <date month="June" year="2022"/>
          <abstract>
            <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes. </t>
            <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="97"/>
        <seriesInfo name="RFC" value="9110"/>
        <seriesInfo name="DOI" value="10.17487/RFC9110"/>
      </reference>
      <reference anchor="RFC3986">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
            <organization/>
          </author>
          <author fullname="R. Fielding" initials="R." surname="Fielding">
            <organization/>
          </author>
          <author fullname="L. Masinter" initials="L." surname="Masinter">
            <organization/>
          </author>
          <date month="January" year="2005"/>
          <abstract>
            <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="66"/>
        <seriesInfo name="RFC" value="3986"/>
        <seriesInfo name="DOI" value="10.17487/RFC3986"/>
      </reference>
      <reference anchor="RFC5785">
        <front>
          <title>Defining Well-Known Uniform Resource Identifiers (URIs)</title>
          <author fullname="M. Nottingham" initials="M." surname="Nottingham">
            <organization/>
          </author>
          <author fullname="E. Hammer-Lahav" initials="E." surname="Hammer-Lahav">
            <organization/>
          </author>
          <date month="April" year="2010"/>
          <abstract>
            <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.   [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5785"/>
        <seriesInfo name="DOI" value="10.17487/RFC5785"/>
      </reference>
      <reference anchor="RFC5246">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
          <author fullname="T. Dierks" initials="T." surname="Dierks">
            <organization/>
          </author>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla">
            <organization/>
          </author>
          <date month="August" year="2008"/>
          <abstract>
            <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="5246"/>
        <seriesInfo name="DOI" value="10.17487/RFC5246"/>
      </reference>
      <reference anchor="RFC6125">
        <front>
          <title>Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)</title>
          <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre">
            <organization/>
          </author>
          <author fullname="J. Hodges" initials="J." surname="Hodges">
            <organization/>
          </author>
          <date month="March" year="2011"/>
          <abstract>
            <t>Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions.   [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6125"/>
        <seriesInfo name="DOI" value="10.17487/RFC6125"/>
      </reference>
      <referencegroup anchor="BCP195">
        <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996">
          <front>
            <title>Deprecating TLS 1.0 and TLS 1.1</title>
            <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <date month="March" year="2021"/>
            <abstract>
              <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
              <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
              <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="8996"/>
          <seriesInfo name="DOI" value="10.17487/RFC8996"/>
        </reference>
        <reference anchor="RFC9325" target="https://www.rfc-editor.org/info/rfc9325">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="November" year="2022"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
              <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="9325"/>
          <seriesInfo name="DOI" value="10.17487/RFC9325"/>
        </reference>
      </referencegroup>
    </references>
    <?line 297?>

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

-->

</rfc>
