<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcguinness-oauth-client-ip-ranges-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="OAuth Client IP Ranges">OAuth Client IP Range Metadata</title>
    <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-client-ip-ranges-01"/>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <author fullname="Xiaoyi Zhang">
      <organization>Databricks</organization>
      <address>
        <email>xiaoyi.zhang@databricks.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>OAuth</keyword>
    <keyword>client metadata</keyword>
    <keyword>IP address</keyword>
    <keyword>network access control</keyword>
    <abstract>
      <?line 73?>

<t>This specification defines OAuth client metadata parameters for
declaring the IP address ranges from which a client originates network
requests. The <tt>client_ip_ranges</tt> parameter carries a set of IPv4 and
IPv6 prefixes by value. The <tt>client_ip_ranges_uri</tt> parameter references
an HTTPS resource containing the set, so that large and frequently
changing sets can use standard HTTP retrieval and caching. The
specification also defines how authorization servers validate, accept,
and retain declared ranges.
The parameters can be used with OAuth 2.0 Dynamic Client Registration,
OAuth Client ID Metadata Documents, and other mechanisms that convey
client metadata. Authorization servers and other parties that obtain a
client's metadata can use the declared ranges as an input to network
access control, risk evaluation, and rate limiting.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mcguinness.github.io/draft-mcguinness-oauth-client-ip-ranges/draft-mcguinness-oauth-client-ip-ranges.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mcguinness-oauth-client-ip-ranges/"/>.
      </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/mcguinness/draft-mcguinness-oauth-client-ip-ranges"/>.</t>
    </note>
  </front>
  <middle>
    <?line 89?>

<section anchor="intro">
      <name>Introduction</name>
      <t>OAuth clients that run as hosted services commonly originate requests
from a known set of network addresses. Authorization servers, resource
servers, and the network infrastructure in front of them use these
addresses to restrict which sources can reach the token endpoint and
protected resources. Client operators publish their ranges through
vendor-specific mechanisms. Deployments either integrate each mechanism
separately or transcribe the ranges by hand, and hand-maintained lists
go stale when the client's egress changes.</t>
      <t>Client metadata (<xref section="2" sectionFormat="of" target="RFC7591"/>) has no parameter for the
network origins of a client. For a client that uses an OAuth Client ID
Metadata Document <xref target="CIMD"/>, the authorization server obtains the
client's metadata from that document, including when it pre-registers
the client (<xref section="7.2" sectionFormat="of" target="CIMD"/>). A deployment that restricts source
addresses therefore has to exempt such a client from the restriction,
obtain its ranges in one of the ways above, or not accept it.</t>
      <t>This specification defines two client metadata parameters that declare
the IP address ranges from which a client originates requests:
<tt>client_ip_ranges</tt>, which carries the ranges by value, and
<tt>client_ip_ranges_uri</tt>, which references a Client IP Range Document that
contains them. As with the <tt>jwks</tt> and <tt>jwks_uri</tt> parameters of
<xref target="RFC7591"/>, the two forms have the same semantics and are mutually
exclusive. The reference form lets a client publish a large or
frequently changing set without updating its registration. The
parameters can be used with OAuth 2.0 Dynamic Client Registration
<xref target="RFC7591"/>, OAuth Client ID Metadata Documents <xref target="CIMD"/>, and other
mechanisms that convey client metadata.</t>
      <t>Declared ranges can be an input to network access control and to other
local policy, such as risk evaluation and rate limiting. They do not
authenticate the client or authorize a request (<xref target="enforcement"/>).</t>
      <t><xref section="2" sectionFormat="of" target="RFC9700"/> recommends asymmetric client authentication and
sender-constrained tokens (<xref target="RFC9449"/>, <xref target="RFC8705"/>), which bind
credentials and tokens to keys rather than to network locations.
Declared ranges supplement these mechanisms and do not replace them. An
adversary that runs code in the client's execution context can create
DPoP proofs and use them, together with the client's tokens, from a
device under its control, even when the key cannot be exported
(<xref section="11.4" sectionFormat="of" target="RFC9449"/>).</t>
      <t>An endpoint that enforces the client's accepted IP range set rejects
requests from outside that set, including requests that carry
exfiltrated credentials, tokens, or proofs. It does not reject such
requests from an address inside the set, including one that the client
shares with other parties (<xref target="trust"/>).</t>
      <t>This specification defines the metadata and the processing requirements
for authorization servers that use it. Other parties that obtain a
client's metadata can apply the same processing. Whether to use declared
ranges at all is local policy, as are selecting the clients subject to
enforcement, approving declared ranges, and configuring network
enforcement points (<xref target="enforcement-points"/>). Enforcement by resource
servers is outside the scope of this specification.</t>
      <section anchor="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>This specification uses the terms "access token", "authorization
server", "client", "client authentication", "protected resource",
"resource owner", "resource server", and "token
endpoint" defined by OAuth 2.0 <xref target="RFC6749"/>, and the terms "client
metadata" and "software statement" defined by OAuth 2.0 Dynamic Client
Registration <xref target="RFC7591"/>.</t>
        <t>This specification defines the following terms:</t>
        <dl>
          <dt>IP range set:</dt>
          <dd>
            <t>The set of IPv4 and IPv6 prefixes that a client declares, either by
value with <tt>client_ip_ranges</tt> or by reference with
<tt>client_ip_ranges_uri</tt>.</t>
          </dd>
          <dt>Client IP Range Document:</dt>
          <dd>
            <t>A JSON document, defined in <xref target="document"/>, that contains an IP range
set and is referenced by <tt>client_ip_ranges_uri</tt>.</t>
          </dd>
          <dt>client IP range metadata:</dt>
          <dd>
            <t>The <tt>client_ip_ranges</tt> and <tt>client_ip_ranges_uri</tt> client metadata
parameters.</t>
          </dd>
          <dt>accepted IP range set:</dt>
          <dd>
            <t>The IP range set, if any, that an authorization server has validated,
accepted, and currently uses for a client, possibly narrowed
(<xref target="acceptance"/>).</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="metadata">
      <name>Client IP Range Metadata</name>
      <t>This specification defines the following client metadata parameters
(<xref section="2" sectionFormat="of" target="RFC7591"/>) for declaring the IP address ranges from
which a client originates requests (<xref target="enforcement"/>):</t>
      <dl>
        <dt><tt>client_ip_ranges</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. JSON array of strings, each an IPv4 or IPv6 prefix
(<xref target="prefix-syntax"/>). The array is a set. The authorization server <bcp14>MUST
NOT</bcp14> assign meaning to the order of entries or to duplicate entries. An
empty array declares an empty IP range set.</t>
        </dd>
        <dt><tt>client_ip_ranges_uri</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. URL of a Client IP Range Document (<xref target="document"/>) that
contains the client's IP range set. The URL <bcp14>MUST</bcp14> use the <tt>https</tt>
scheme and <bcp14>MUST NOT</bcp14> contain a fragment or userinfo component
<xref target="RFC3986"/>. The authorization server retrieves the document as
described in <xref target="retrieval"/>.</t>
        </dd>
      </dl>
      <t>The <tt>client_ip_ranges</tt> and
<tt>client_ip_ranges_uri</tt> parameters <bcp14>MUST NOT</bcp14> both be present in the same
client metadata. If neither is present, the client makes no declaration,
which differs from declaring an empty IP range set. This specification
sets no maximum number of entries; the authorization server applies its
own bounds (<xref target="resource-exhaustion"/>).</t>
      <section anchor="prefix-syntax">
        <name>Prefix Syntax</name>
        <t>Each prefix <bcp14>MUST</bcp14> conform to the <tt>ip-prefix</tt> type defined in
<xref section="4" sectionFormat="of" target="RFC9911"/>, that is, match in full every pattern of either
the <tt>ipv4-prefix</tt> or the <tt>ipv6-prefix</tt> type. A value that does not
conform is invalid.</t>
        <t>The client, and the party hosting a Client IP Range Document, <bcp14>MUST</bcp14>
represent each prefix in the canonical format of that type, with all
bits outside the prefix length set to zero and, for IPv6, the address
represented as defined in <xref section="4" sectionFormat="of" target="RFC5952"/>. A value that is not
in canonical format is nonetheless valid and denotes the prefix given by
its network address and prefix length (<xref section="4" sectionFormat="of" target="RFC9911"/>). For
example, <tt>192.0.2.1/24</tt> denotes <tt>192.0.2.0/24</tt>, and <tt>2001:DB8::1/64</tt>
denotes <tt>2001:db8::/64</tt>.</t>
        <t>A prefix within the IPv4-mapped IPv6 address range <tt>::ffff:0:0/96</tt>
(<xref section="2.5.5.2" sectionFormat="of" target="RFC4291"/>) is invalid; IPv4 ranges are expressed
as IPv4 prefixes. Every prefix length that the <tt>ip-prefix</tt> type permits,
including zero, is valid. Whether to accept a broad prefix is local
policy (<xref target="range-changes"/>).</t>
      </section>
      <section anchor="validation">
        <name>Metadata Validation</name>
        <t>If a trusted software statement (<xref section="2.3" sectionFormat="of" target="RFC7591"/>) carries
<tt>client_ip_ranges</tt> or <tt>client_ip_ranges_uri</tt>, the authorization server
ignores both parameters elsewhere in the client metadata, whether in a
registration request or in a Client ID Metadata Document
(<xref section="4.3" sectionFormat="of" target="CIMD"/>). This extends the precedence rule of
<xref section="2" sectionFormat="of" target="RFC7591"/> to the pair of parameters.</t>
        <t>After this precedence is applied, client IP range metadata is invalid if
any of the following is true:</t>
        <ol spacing="normal" type="1"><li>
            <t>Both <tt>client_ip_ranges</tt> and <tt>client_ip_ranges_uri</tt> are present.</t>
          </li>
          <li>
            <t>The value of <tt>client_ip_ranges</tt> is not an array of strings, or any
entry is an invalid prefix (<xref target="prefix-syntax"/>).</t>
          </li>
          <li>
            <t>The value of <tt>client_ip_ranges_uri</tt> does not meet the requirements of
<xref target="metadata"/>.</t>
          </li>
          <li>
            <t>The value of <tt>client_ip_ranges</tt> has more entries than the
authorization server's bound on prefixes (<xref target="resource-exhaustion"/>).</t>
          </li>
        </ol>
        <t>If a client registration request, or a client update request
(<xref section="2.2" sectionFormat="of" target="RFC7592"/>), contains invalid client IP range
metadata, the authorization server responds with an HTTP 400 (Bad
Request) error response as described in <xref section="3.2.2" sectionFormat="of" target="RFC7591"/>,
using <tt>invalid_client_metadata</tt> as the error code value, or
<tt>invalid_software_statement</tt> if the invalid value comes from a trusted
software statement. The authorization server <bcp14>MUST NOT</bcp14> substitute a
default value for invalid client IP range metadata. If a Client ID
Metadata Document <xref target="CIMD"/> contains
invalid client IP range metadata, the authorization server handles this
as a validation failure (<xref target="failures"/>) without treating the rest of the
document as invalid.</t>
        <t>An authorization server that does not support these parameters ignores
them (<xref section="2" sectionFormat="of" target="RFC7591"/>). The client information response
(<xref section="3.2.1" sectionFormat="of" target="RFC7591"/>) shows whether the authorization server
registered them.</t>
      </section>
    </section>
    <section anchor="document">
      <name>Client IP Range Document</name>
      <t>A Client IP Range Document is a JSON <xref target="RFC8259"/> object with the
following member:</t>
      <dl>
        <dt><tt>client_ip_ranges</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. JSON array of prefixes, with the same syntax and semantics
as the <tt>client_ip_ranges</tt> client metadata parameter (<xref target="metadata"/>).</t>
        </dd>
      </dl>
      <t>The authorization server <bcp14>MUST</bcp14> ignore members that it does not
understand. A document whose top-level object contains duplicate member
names is invalid; <xref section="4" sectionFormat="of" target="RFC8259"/> notes that receivers handle
such objects unpredictably. The document is self-contained, and the
authorization server <bcp14>MUST NOT</bcp14> retrieve other resources to complete it.</t>
      <t>Multiple clients can reference the same document; all its prefixes apply
equally to each such client. The document can be hosted by a party other
than the client, such as its hosting provider. A document that lists
egress shared by a provider's customers has the limits described in
<xref target="trust"/>.</t>
      <t>The following is a non-normative example of a Client IP Range Document:</t>
      <sourcecode type="json"><![CDATA[
{
  "client_ip_ranges": [
    "192.0.2.0/24",
    "198.51.100.10/32",
    "2001:db8:100::/48",
    "2001:db8:200::/48"
  ]
}
]]></sourcecode>
    </section>
    <section anchor="retrieval">
      <name>Retrieval and Acceptance</name>
      <section anchor="fetch">
        <name>Retrieval</name>
        <t>An authorization server retrieves a Client IP Range Document by sending
an HTTP GET request to the <tt>client_ip_ranges_uri</tt> URL, subject to
<xref target="ssrf"/>. A response is successful if it has status code 200 (OK), the
<tt>application/json</tt> media type, and a complete body within the
authorization server's bounds (<xref target="resource-exhaustion"/>), or if it has
status code 304 (Not Modified) (<xref section="15.4.5" sectionFormat="of" target="RFC9110"/>) in answer
to a conditional request (<xref section="13" sectionFormat="of" target="RFC9110"/>). Following a 304
response, the authorization server <bcp14>MUST</bcp14> apply the same response and
document validation requirements to the corresponding stored response,
with its header fields updated as described in
<xref section="4.3.4" sectionFormat="of" target="RFC9111"/>. A 304 response for which the authorization
server has no corresponding stored response is a failure.</t>
        <t>The party hosting a Client IP Range Document <bcp14>MUST</bcp14> serve it with the
<tt>application/json</tt> media type and <bcp14>MUST NOT</bcp14> require authentication to
retrieve it unless that party and the authorization server have agreed
on an authentication mechanism, which is outside the scope of this
specification. The authorization server <bcp14>MUST NOT</bcp14> send credentials
associated with an OAuth request, such as client credentials, access
tokens, or authorization codes, when retrieving the document.</t>
        <t>The authorization server <bcp14>MUST NOT</bcp14> treat a failed retrieval, an
unsuccessful response, or an invalid document as an empty IP range set;
each is a failure (<xref target="failures"/>).</t>
      </section>
      <section anchor="caching">
        <name>Caching</name>
        <t>The party hosting a Client IP Range Document <bcp14>SHOULD</bcp14> support HTTP caching
<xref target="RFC9111"/> and <bcp14>SHOULD</bcp14> include the <tt>Cache-Control</tt>
(<xref section="5.2" sectionFormat="of" target="RFC9111"/>) and <tt>ETag</tt> (<xref section="8.8.3" sectionFormat="of" target="RFC9110"/>)
response header fields.</t>
        <t>The accepted IP range set is application state, distinct from any HTTP
cache (<xref section="6" sectionFormat="of" target="RFC9111"/>). A fresh response does not make its IP
range set accepted, and expiry of a cached response does not end use of
the accepted IP range set (<xref target="acceptance"/>). The authorization server
<bcp14>SHOULD</bcp14> retrieve the document periodically to obtain changes.</t>
      </section>
      <section anchor="acceptance">
        <name>Acceptance</name>
        <t>Before accepting an IP range set, the authorization server <bcp14>MUST</bcp14> ensure
the following:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client IP range metadata that conveys the set is valid
(<xref target="validation"/>), and every prefix in the set is valid
(<xref target="prefix-syntax"/>).</t>
          </li>
          <li>
            <t>If the set was obtained from a Client IP Range Document, the response
is successful (<xref target="fetch"/>) and the complete document is valid
(<xref target="document"/>).</t>
          </li>
        </ol>
        <t>If any of these checks fails, the authorization server <bcp14>MUST</bcp14> reject the
entire set. Acceptance is also subject to local policy
(<xref target="range-changes"/>). Registering client IP range metadata does not by
itself accept its IP range set.</t>
        <t>An accepted IP range set replaces the previously accepted IP range set
in full; this specification defines no incremental update format. The
accepted IP range set remains in effect until the authorization server
accepts a replacement, narrows it, or stops using it
(<xref target="retention-limit"/>).</t>
        <t>While a validated replacement awaits acceptance, an authorization server
<bcp14>MAY</bcp14>
narrow the accepted IP range set to its intersection with the
replacement, so that it admits only source addresses that both sets
match. The narrowed set remains the accepted IP range set; the
replacement is still not accepted.</t>
        <t>A client <bcp14>SHOULD</bcp14> add a prefix to its IP range set before it originates
requests from addresses in that prefix, <bcp14>SHOULD</bcp14> keep the prefix in the
set while it originates requests from them, and <bcp14>SHOULD</bcp14> remove the prefix
once it no longer does, because its addresses can be reassigned to
another party.</t>
      </section>
      <section anchor="metadata-changes">
        <name>Changes to Client Metadata</name>
        <t>A client's metadata can change the value of <tt>client_ip_ranges_uri</tt>,
switch between <tt>client_ip_ranges</tt> and <tt>client_ip_ranges_uri</tt>, or remove
both. The new metadata replaces the previous declaration.</t>
        <t>When the metadata changes representation or URL, the accepted IP range
set remains in effect as described in <xref target="acceptance"/>. An invalid new
declaration in a Client ID Metadata Document, or an unretrievable or
invalid new document, is a failure (<xref target="failures"/>). If the previous
metadata contained <tt>client_ip_ranges_uri</tt>, the authorization server <bcp14>MUST
NOT</bcp14> retrieve that URL for the client while the client's current metadata
does not reference it.</t>
        <t>Removal of both parameters withdraws the client's declaration
(<xref target="withdrawal"/>). In a client update request
(<xref section="2.2" sectionFormat="of" target="RFC7592"/>), omitting both parameters requests their
removal, which the authorization server can ignore. An empty
<tt>client_ip_ranges</tt> array is different: unlike other empty values in an
update request (<xref section="2.2" sectionFormat="of" target="RFC7592"/>), it declares an empty IP
range set, and the authorization server <bcp14>MUST NOT</bcp14> treat it as a request
to delete the parameter or ignore it. The client information response
(<xref section="3" sectionFormat="of" target="RFC7592"/>) shows whether the parameters were removed.</t>
      </section>
      <section anchor="retention">
        <name>Retention</name>
        <section anchor="failures">
          <name>After a Failure</name>
          <t>A failure to retrieve a Client IP Range Document, or to validate client
IP range metadata or a retrieved document, <bcp14>MUST NOT</bcp14> cause an
authorization server to admit a source address that it did not admit
before the failure. After a failure, the authorization server <bcp14>MAY</bcp14>
continue to use the accepted IP range set, within its retention limit,
if it sets one (<xref target="retention-limit"/>).</t>
        </section>
        <section anchor="withdrawal">
          <name>After a Withdrawal</name>
          <t>Withdrawal of the client's declaration (<xref target="metadata-changes"/>) <bcp14>MUST NOT</bcp14>
cause an authorization server to admit a source address that it did not
admit before the withdrawal, unless an explicit local policy decision
removes the client from enforcement.</t>
        </section>
        <section anchor="retention-limit">
          <name>Retention Limit</name>
          <t>An authorization server <bcp14>SHOULD</bcp14> set a retention limit on how long it
continues to use an accepted IP range set in any of the following cases
(<xref target="range-changes"/>):</t>
          <ul spacing="normal">
            <li>
              <t>while retrieval or validation of the client's current declaration
fails;</t>
            </li>
            <li>
              <t>after the client withdraws its declaration; or</t>
            </li>
            <li>
              <t>while a validated replacement has not been accepted under local
policy.</t>
            </li>
          </ul>
          <t>The limit runs from the first failed retrieval or validation, from the
withdrawal, or from the first validation of the replacement, and ends
when the authorization server accepts a set under the client's current
declaration. The limit for the first case also ends when a successful
retrieval or validation, including one that ends in a 304 response,
confirms that the accepted IP range set is current. Revalidating a
replacement that has not been accepted does not restart its limit. The
third case does not apply to an accepted IP range set that the
authorization server has narrowed to its intersection with the
replacement (<xref target="acceptance"/>), because every source address that set
admits is also in the replacement.</t>
          <t>When the retention limit is exceeded, the authorization server stops
using the set and has no accepted IP range set for the client
(<xref target="enforcement"/>). An authorization server that stops using the set
earlier in one of these cases, whether or not it sets a retention limit,
treats the limit as exceeded.</t>
        </section>
      </section>
    </section>
    <section anchor="enforcement">
      <name>Enforcement</name>
      <t>The IP range set identifies source addresses from which the client
originates requests directly to authorization servers and resource
servers, such as token requests and requests to protected resources. For
a client behind network address translation, these are the translated
addresses, such as those of its NAT gateway. The IP range set does not
describe the network origins of user agents or of requests initiated by
the resource owner.</t>
      <t>A source address matches an IP range set if it is within any of its
prefixes. Before matching, the authorization server <bcp14>MUST</bcp14> convert an
IPv4-mapped IPv6 source address to the IPv4 address it contains.</t>
      <t>An authorization server that enforces a client's accepted IP range set
admits requests from the client only from source addresses that match
it; if that set is empty, it admits none. While a client has no
accepted IP range set:</t>
      <ul spacing="normal">
        <li>
          <t>an authorization server that requires an accepted IP range set for
the client <bcp14>MUST</bcp14> reject requests from the client;</t>
        </li>
        <li>
          <t>after the retention limit is exceeded (<xref target="retention-limit"/>), an
authorization server that was enforcing a set for the client <bcp14>MUST</bcp14>
reject requests from the client until it accepts an IP range set under
the client's current declaration or an explicit local policy decision
removes the client from enforcement; and</t>
        </li>
        <li>
          <t>in other cases, what applies is local policy.</t>
        </li>
      </ul>
      <t>An authorization server <bcp14>MAY</bcp14> use the accepted IP range set as an input to
local network access control, risk evaluation, or rate limiting, for
example by treating a request from a source address outside the set as
higher risk instead of rejecting it. A match does not authenticate the
client or authorize a request, and it does not override a local policy
decision to reject the request, such as one based on information that
the source address is malicious. The authorization server <bcp14>MUST NOT</bcp14> use
a source address match in place of client authentication, access token
validation, or any other security control required by OAuth.</t>
      <t>Enforcement by resource servers, including how a resource server
determines the client associated with a request and obtains that
client's metadata, is outside the scope of this specification and could
be addressed by a companion specification.</t>
      <section anchor="client-identification">
        <name>Client Identification and Error Responses</name>
        <t>An authorization server can enforce a client's accepted IP range set at
the token endpoint and at other endpoints that receive direct requests
from the client, once it has identified the client, either through
client authentication or, for a public client
(<xref section="2.1" sectionFormat="of" target="RFC6749"/>), as the client to which a grant or token
presented in the request was issued, such as an authorization code, a
device code (<xref section="3.4" sectionFormat="of" target="RFC8628"/>), or a refresh token. At the
client configuration endpoint, the registration access token identifies
the client (<xref section="2" sectionFormat="of" target="RFC7592"/>). This specification does not
define enforcement for a public client in a request that identifies the
client only by an unauthenticated <tt>client_id</tt>, such as a device
authorization request (<xref section="3.1" sectionFormat="of" target="RFC8628"/>). A request rejected
because of its source address does not count as a use of the
authorization code it presents (<xref section="4.1.2" sectionFormat="of" target="RFC6749"/>).</t>
        <t>In a response to a party that has not authenticated as the client, an
authorization server <bcp14>SHOULD NOT</bcp14> indicate that a request was rejected
because of its source address. This specification does not yet define
the error response for a request rejected because of its source address
(<xref target="open-issues"/>).</t>
      </section>
    </section>
    <section anchor="implementation">
      <name>Implementation Considerations</name>
      <section anchor="enforcement-points">
        <name>Enforcement Points</name>
        <t>Enforcing the accepted IP range set of a specific client requires
knowing which client sent a request. A network enforcement point that
operates below HTTP, such as a firewall, observes the source address but
not the client, so it can enforce only the aggregate of the IP range
sets of the clients permitted to reach an endpoint. An authorization
server can enforce each client's accepted IP range set once it has
identified the client (<xref target="client-identification"/>).</t>
        <t>For example, an enterprise derives the network allowlist in front of its
token endpoint from the accepted IP range sets of the hosted clients it
permits, and the authorization server also enforces each client's
accepted IP range set. Local policy
determines whether later changes are accepted automatically or require
administrator approval (<xref target="range-changes"/>).</t>
        <t>Requiring an accepted IP range set for a client requires the client to
originate requests from addresses that it can declare in advance, which
can require dedicated egress infrastructure. Such deployments also need
an administrative recovery path for a client whose source addresses move
outside that set, such as approving a replacement set. Enforcement at
the client configuration endpoint (<xref section="2" sectionFormat="of" target="RFC7592"/>) can prevent
the client from updating a declaration made by value.</t>
      </section>
      <section anchor="retrieval-scheduling">
        <name>Retrieval Scheduling</name>
        <t>An authorization server can retrieve documents in the background rather
than while processing an OAuth request, and typically schedules the next
retrieval when the stored response's freshness lifetime
(<xref section="4.2" sectionFormat="of" target="RFC9111"/>) ends, within local minimum and maximum
intervals. A client needs to allow for these intervals, and for approval
delays, when adding a prefix (<xref target="acceptance"/>).</t>
        <t>To revalidate with <tt>If-None-Match</tt> (<xref section="13.1.2" sectionFormat="of" target="RFC9110"/>), an
authorization server uses the entity tag of the most recent complete
response it stored from that URL (<xref section="4.3" sectionFormat="of" target="RFC9111"/>), which can
be newer than the one from which the accepted IP range set was derived.</t>
      </section>
      <section anchor="document-size">
        <name>Document Size</name>
        <t><xref section="8.7" sectionFormat="of" target="CIMD"/> recommends that authorization servers read at
most 5 kilobytes of a Client ID Metadata Document. A client whose IP
range set does not fit within such a limit can use
<tt>client_ip_ranges_uri</tt>. An authorization server sets its bounds on
Client IP Range Documents (<xref target="resource-exhaustion"/>) independently of
bounds on client metadata. The gzip content coding
(<xref section="8.4.1.3" sectionFormat="of" target="RFC9110"/>) can reduce the transfer size of large
documents.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>The security considerations of the mechanism that conveys the client
metadata, such as <xref section="5" sectionFormat="of" target="RFC7591"/> or <xref section="8" sectionFormat="of" target="CIMD"/>,
also apply.</t>
      <section anchor="trust">
        <name>Trust in Declared Ranges</name>
        <t>Client IP range metadata is a declaration made by or on behalf of the
client. Inclusion of a prefix does not establish that the client
exclusively owns or controls the addresses it contains. Prefixes of
shared infrastructure, such as cloud provider or carrier-grade NAT
egress ranges, also carry traffic from other parties. Restricting a
client to such prefixes does not prevent a party that has obtained the
client's credentials from using them from the same infrastructure.</t>
        <t>Whether to use declared ranges in network access control is a local
trust decision. A software statement (<xref section="2.3" sectionFormat="of" target="RFC7591"/>)
vouches only for the values it contains: for <tt>client_ip_ranges</tt>, the
prefixes; for <tt>client_ip_ranges_uri</tt>, the URL but not the referenced
document. The party hosting the document asserts its contents, and
accepting them automatically is a separate decision to trust that party
within an approved scope (<xref target="range-changes"/>). A malicious or compromised
party hosting a document can also deny service to every client that
references it, by publishing an empty or unrelated IP range set or by
keeping the document unavailable beyond the retention limit.</t>
        <t>A client cannot observe whether an authorization server enforces its
declaration, so declaring an IP range set does not by itself protect
the client's credentials.</t>
        <t>An authorization server can require that <tt>client_ip_ranges_uri</tt> share an
origin (<xref target="RFC6454"/>) with the client identifier URL of a Client ID
Metadata Document <xref target="CIMD"/>.</t>
      </section>
      <section anchor="range-changes">
        <name>Changes to Declared Ranges</name>
        <t>A change to a client's IP range set can broaden or narrow the source
addresses admitted by a network policy derived from it. An authorization
server <bcp14>MUST NOT</bcp14> treat the addition of a prefix to a client's IP range
set as granting network access by itself. When local policy permits
automatic updates for the client and the change falls within an approved
scope, such as prefixes contained in supernets that the authorization
server has configured for the client, the authorization server <bcp14>MAY</bcp14>
accept the change automatically. Detecting unexpected expansion of a
client's IP range set, including the addition of overly broad prefixes,
helps an authorization server decide which changes to hold for approval.
The authorization server <bcp14>SHOULD</bcp14> apply changes atomically, so that no
intermediate state admits a source address that neither the previous nor
the new IP range set contains.</t>
        <t>An accepted IP range set that no longer matches the client's current
declaration can include addresses that have since been reassigned to
another party. The retention limit (<xref target="retention-limit"/>) and
narrowing (<xref target="acceptance"/>) can limit how long such addresses remain
admitted.</t>
      </section>
      <section anchor="rejection-responses">
        <name>Rejection Responses</name>
        <t>A rejection that a requesting party can attribute to its source address
tells that party that its other inputs were acceptable. If the
authorization server checks the source address only after client
authentication succeeds, such a rejection confirms to a party holding
stolen or guessed client credentials that they are valid.
<xref target="client-identification"/> limits this disclosure for parties that have
not authenticated as the client; what the error response discloses to
authenticated parties is part of the open issue on that response
(<xref target="open-issues"/>).</t>
      </section>
      <section anchor="ssrf">
        <name>Server-Side Request Forgery</name>
        <t>Retrieval of <tt>client_ip_ranges_uri</tt> causes an authorization server to
send a request to a URL supplied in client metadata, which creates a
risk of Server-Side Request Forgery (SSRF) attacks. When retrieving a
Client IP Range Document, the following requirements apply:</t>
        <ol spacing="normal" type="1"><li>
            <t>The authorization server <bcp14>MUST NOT</bcp14> retrieve a URL that does not meet
the requirements for <tt>client_ip_ranges_uri</tt> in <xref target="metadata"/>.</t>
          </li>
          <li>
            <t>The authorization server <bcp14>MUST</bcp14> verify the server certificate as
described in <xref section="4.3.4" sectionFormat="of" target="RFC9110"/> and <bcp14>MUST NOT</bcp14> accept a
document retrieved over a connection that fails this verification.
This strengthens the requirement of that section for automated
clients.</t>
          </li>
          <li>
            <t>The authorization server <bcp14>MUST NOT</bcp14> automatically follow HTTP redirects
(<xref section="15.4" sectionFormat="of" target="RFC9110"/>).</t>
          </li>
          <li>
            <t>The authorization server <bcp14>MUST NOT</bcp14> connect to an address that the IANA
special-purpose address registries (<xref target="RFC6890"/>, <xref target="RFC8190"/>) list as
not globally reachable, unless local policy explicitly permits that
destination. This check applies to the address of each connection
after DNS resolution. An authorization server that retrieves through
a configured forward proxy relies on the proxy to apply this check.</t>
          </li>
        </ol>
        <t>An authorization server retrieving a URL obtained from a Client ID
Metadata Document is also subject to <xref section="8.6" sectionFormat="of" target="CIMD"/>; the local
policy exception in item 4 does not override that section.</t>
      </section>
      <section anchor="resource-exhaustion">
        <name>Resource Exhaustion</name>
        <t>A malicious or compromised party hosting a Client IP Range Document can
return an oversized document, a highly compressed response, or a large
number of overlapping prefixes. An authorization server <bcp14>MUST</bcp14> bound
retrieval time, response size, decompressed size, and the number of
prefixes in an IP range set, whether conveyed by value or in a document.
If a document exceeds any bound, the authorization server <bcp14>MUST</bcp14> reject
the entire document. This specification sets no minimum value for any of
these bounds.</t>
      </section>
      <section anchor="source-address">
        <name>Source Address Interpretation</name>
        <t>Proxies, load balancers, and network address translation change the
source address that an authorization server observes. The authorization
server <bcp14>MUST</bcp14> determine the source address from a trusted source of
connection-origin information. A source address that the authorization
server cannot determine in this way matches no IP range set. The
authorization server <bcp14>MUST NOT</bcp14> use a forwarding header field, such as
<tt>Forwarded</tt> <xref target="RFC7239"/> or <tt>X-Forwarded-For</tt>, as the source address
unless it was set by an intermediary the authorization server trusts.
Because a trusted intermediary can append its own observation to a field
that already carries entries supplied by an attacker
(<xref section="8.1" sectionFormat="of" target="RFC7239"/>), the authorization server <bcp14>MUST</bcp14> select the
source address from such a field using its configuration of trusted
proxies and <bcp14>MUST NOT</bcp14> trust an entry merely because a trusted
intermediary forwarded or appended to the field.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>Client IP range metadata describes network infrastructure rather than
end users. However, when a client runs on infrastructure associated with
an individual, such as a residential network, its declared ranges can
reveal that individual's network location. A publicly retrievable
Client IP Range Document, or a publicly retrievable Client ID Metadata
Document that carries <tt>client_ip_ranges</tt>, discloses the client's egress
infrastructure to any party. A client that declares its IP range set by
value through Dynamic Client Registration <xref target="RFC7591"/> avoids both this
disclosure and the retrieval described below. A client whose Client ID
Metadata Document is publicly retrievable discloses its IP range set by
either method, unless the Client IP Range Document requires an
authentication mechanism agreed with the authorization server
(<xref target="fetch"/>).</t>
      <t>Retrieval of <tt>client_ip_ranges_uri</tt> reveals to the party hosting the
document the addresses and retrieval timing of authorization servers
that evaluate the client, which can indicate the authorization servers
and resource servers with which the client is used (see also
<xref section="9.1" sectionFormat="of" target="CIMD"/>). Retrieving documents on a schedule in the
background (<xref target="retrieval-scheduling"/>), rather than while processing
OAuth requests, reduces what retrieval timing reveals.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This specification requests registration of the following client
metadata in the "OAuth Dynamic Client Registration Metadata" registry
established by <xref target="RFC7591"/>.</t>
      <ul spacing="compact">
        <li>
          <t>Client Metadata Name: <tt>client_ip_ranges</tt></t>
        </li>
        <li>
          <t>Client Metadata Description: Array of IPv4 and IPv6 prefixes from which
the client originates requests</t>
        </li>
        <li>
          <t>Change Controller: IETF</t>
        </li>
        <li>
          <t>Specification Document(s): <xref target="metadata"/> of this specification</t>
        </li>
      </ul>
      <ul spacing="compact">
        <li>
          <t>Client Metadata Name: <tt>client_ip_ranges_uri</tt></t>
        </li>
        <li>
          <t>Client Metadata Description: HTTPS URL of a document containing the
IPv4 and IPv6 prefixes from which the client originates requests</t>
        </li>
        <li>
          <t>Change Controller: IETF</t>
        </li>
        <li>
          <t>Specification Document(s): <xref target="metadata"/> of this
specification</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <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="RFC4291">
          <front>
            <title>IP Version 6 Addressing Architecture</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <date month="February" year="2006"/>
            <abstract>
              <t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
              <t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4291"/>
          <seriesInfo name="DOI" value="10.17487/RFC4291"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <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="RFC6890">
          <front>
            <title>Special-Purpose IP Address Registries</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="L. Vegoda" initials="L." surname="Vegoda"/>
            <author fullname="R. Bonica" initials="R." role="editor" surname="Bonica"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This memo reiterates the assignment of an IPv4 address block (192.0.0.0/24) to IANA. It also instructs IANA to restructure its IPv4 and IPv6 Special-Purpose Address Registries. Upon restructuring, the aforementioned registries will record all special-purpose address blocks, maintaining a common set of information regarding each address block.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="153"/>
          <seriesInfo name="RFC" value="6890"/>
          <seriesInfo name="DOI" value="10.17487/RFC6890"/>
        </reference>
        <reference anchor="RFC8190">
          <front>
            <title>Updates to the Special-Purpose IP Address Registries</title>
            <author fullname="R. Bonica" initials="R." surname="Bonica"/>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <author fullname="L. Vegoda" initials="L." surname="Vegoda"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>This memo updates the IANA IPv4 and IPv6 Special-Purpose Address Registries to address issues raised by the definition of a "global" prefix. It also corrects several errors in registry entries to ensure the integrity of the IANA Special-Purpose Address Registries.</t>
              <t>This memo updates RFC 6890.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="153"/>
          <seriesInfo name="RFC" value="8190"/>
          <seriesInfo name="DOI" value="10.17487/RFC8190"/>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <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="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <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="RFC9111">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <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 defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="RFC9911">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schönwälder" initials="J." role="editor" surname="Schönwälder"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>This document defines a collection of common data types to be used with the YANG data modeling language. It includes several new type definitions and obsoletes RFC 6991.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9911"/>
          <seriesInfo name="DOI" value="10.17487/RFC9911"/>
        </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="RFC6454">
          <front>
            <title>The Web Origin Concept</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>This document defines the concept of an "origin", which is often used as the scope of authority or privilege by user agents. Typically, user agents isolate content retrieved from different origins to prevent malicious web site operators from interfering with the operation of benign web sites. In addition to outlining the principles that underlie the concept of origin, this document details how to determine the origin of a URI and how to serialize an origin into a string. It also defines an HTTP header field, named "Origin", that indicates which origins are associated with an HTTP request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6454"/>
          <seriesInfo name="DOI" value="10.17487/RFC6454"/>
        </reference>
        <reference anchor="RFC7239">
          <front>
            <title>Forwarded HTTP Extension</title>
            <author fullname="A. Petersson" initials="A." surname="Petersson"/>
            <author fullname="M. Nilsson" initials="M." surname="Nilsson"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document defines an HTTP extension header field that allows proxy components to disclose information lost in the proxying process, for example, the originating IP address of a request or IP address of the proxy on the user-agent-facing interface. In a path of proxying components, this makes it possible to arrange it so that each subsequent component will have access to, for example, all IP addresses used in the chain of proxied HTTP requests.</t>
              <t>This document also specifies guidelines for a proxy administrator to anonymize the origin of a request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7239"/>
          <seriesInfo name="DOI" value="10.17487/RFC7239"/>
        </reference>
        <reference anchor="RFC7592">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Management Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines methods for management of OAuth 2.0 dynamic client registrations for use cases in which the properties of a registered client may need to be changed during the lifetime of the client. Not all authorization servers supporting dynamic client registration will support these management methods.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7592"/>
          <seriesInfo name="DOI" value="10.17487/RFC7592"/>
        </reference>
        <reference anchor="RFC8628">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical. It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8628"/>
          <seriesInfo name="DOI" value="10.17487/RFC8628"/>
        </reference>
        <reference anchor="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9700">
          <front>
            <title>Best Current Practice for OAuth 2.0 Security</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="A. Labunets" initials="A." surname="Labunets"/>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <date month="January" year="2025"/>
            <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 RFCs 6749, 6750, and 6819 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. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="240"/>
          <seriesInfo name="RFC" value="9700"/>
          <seriesInfo name="DOI" value="10.17487/RFC9700"/>
        </reference>
        <reference anchor="SSF" target="https://openid.net/specs/openid-sharedsignals-framework-1_0-final.html">
          <front>
            <title>OpenID Shared Signals Framework Specification 1.0</title>
            <author initials="A." surname="Tulshibagwale">
              <organization/>
            </author>
            <author initials="T." surname="Cappalli">
              <organization/>
            </author>
            <author initials="M." surname="Scurtescu">
              <organization/>
            </author>
            <author initials="A." surname="Backman">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="S." surname="Miel">
              <organization/>
            </author>
            <date year="2025" month="August" day="29"/>
          </front>
        </reference>
        <reference anchor="CIMD">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Emelia Smith" initials="E." surname="Smith">
         </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism through which an OAuth client
   can identify itself to authorization servers, without prior dynamic
   client registration or other existing registration.  This is through
   the usage of a URL as a client_id in an OAuth flow, where the URL
   refers to a document containing the necessary client metadata,
   enabling the authorization server to fetch the metadata about the
   client as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-client-id-metadata-document-02"/>
        </reference>
        <reference anchor="JAFAR">
          <front>
            <title>A JSON-Based Format for Publishing IP Ranges of Automated HTTP Clients</title>
            <author fullname="Gary Illyes" initials="G." surname="Illyes">
              <organization>Independent</organization>
            </author>
            <date day="22" month="October" year="2026"/>
            <abstract>
              <t>   This document defines a standardized JSON format for operators of
   automated HTTP clients (e.g., web crawlers, AI bots) to publicly
   disclose their IP address ranges.  A consistent, machine-readable
   format for IP range publication simplifies the task of identifying
   and verifying legitimate automated traffic, thereby decreasing
   maintenance load on website operators while reducing the risk of
   inadvertently blocking beneficial clients.  This specification
   codifies and extends common existing practices to provide a simple
   yet extensible format that accommodates a variety of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-illyes-webbotauth-jafar-01"/>
        </reference>
      </references>
    </references>
    <?line 757?>

<section anchor="examples">
      <name>Examples</name>
      <section anchor="dynamic-client-registration-by-value">
        <name>Dynamic Client Registration by Value</name>
        <t>The following is a non-normative example of a client registration
request (<xref section="3.1" sectionFormat="of" target="RFC7591"/>) that declares an IP range set by
value:</t>
        <sourcecode type="http-message"><![CDATA[
POST /register HTTP/1.1
Host: server.example.com
Content-Type: application/json

{
  "client_name": "Example Client",
  "grant_types": ["client_credentials"],
  "token_endpoint_auth_method": "private_key_jwt",
  "jwks_uri": "https://client.example.com/jwks.json",
  "client_ip_ranges": [
    "192.0.2.0/24",
    "2001:db8:100::/48"
  ]
}
]]></sourcecode>
      </section>
      <section anchor="client-id-metadata-document-by-reference">
        <name>Client ID Metadata Document by Reference</name>
        <t>The following is a non-normative example of a Client ID Metadata
Document <xref target="CIMD"/> that declares an IP range set by reference:</t>
        <sourcecode type="json"><![CDATA[
{
  "client_id": "https://client.example.com/oauth/client.json",
  "client_name": "Example Client",
  "redirect_uris": ["https://client.example.com/callback"],
  "token_endpoint_auth_method": "private_key_jwt",
  "jwks_uri": "https://client.example.com/jwks.json",
  "client_ip_ranges_uri": "https://client.example.com/ip-ranges.json"
}
]]></sourcecode>
      </section>
      <section anchor="document-retrieval">
        <name>Document Retrieval</name>
        <t>The following is a non-normative example of a request for the Client IP
Range Document referenced above:</t>
        <sourcecode type="http-message"><![CDATA[
GET /ip-ranges.json HTTP/1.1
Host: client.example.com
Accept: application/json
Accept-Encoding: gzip
]]></sourcecode>
        <t>The following is a non-normative example of a successful response:</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: public, max-age=3600
ETag: "ranges-v42"

{
  "client_ip_ranges": [
    "192.0.2.0/24",
    "198.51.100.0/24",
    "2001:db8:100::/48"
  ]
}
]]></sourcecode>
        <t>The following non-normative example shows a later conditional request
and a response indicating that the document is unchanged:</t>
        <sourcecode type="http-message"><![CDATA[
GET /ip-ranges.json HTTP/1.1
Host: client.example.com
Accept: application/json
Accept-Encoding: gzip
If-None-Match: "ranges-v42"
]]></sourcecode>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 304 Not Modified
Cache-Control: public, max-age=3600
ETag: "ranges-v42"
]]></sourcecode>
      </section>
    </section>
    <section anchor="related-work">
      <name>Related Work</name>
      <t><xref target="JAFAR"/> defines a format for publishing the IP address ranges of
automated HTTP clients, so that consumers can identify and verify
automated traffic. Each prefix is an object with exactly one of an IPv4
or an IPv6 member and optional service identifiers, the document carries
a creation time, and a prefix object that has both or neither address
member is ignored. This specification instead uses the same prefix array
in the Client IP Range Document as in <tt>client_ip_ranges</tt>, rejects the
whole set when any prefix is invalid (<xref target="acceptance"/>), and relies on
client metadata to associate the set with a client. The authorization
server identifies the client through OAuth (<xref target="client-identification"/>),
not by its address, and the declared ranges can be an input to local
policy for that client, such as source address restrictions, risk
evaluation, and rate limiting.</t>
      <t>Clients can announce planned changes to their IP range sets through
a separately specified notification mechanism, such as event types
delivered using the Shared Signals Framework <xref target="SSF"/>. This specification
does not define advance announcement events or scheduled activation of
ranges.</t>
    </section>
    <section anchor="open-issues">
      <name>Open Issues</name>
      <t><em>RFC EDITOR: Remove this section before publication.</em></t>
      <ol spacing="normal" type="1"><li>
          <t>Which error response indicates that an authorization server rejected
a request under a client's source address policy? The
<tt>invalid_client</tt> error code signals failed client authentication
(<xref section="5.2" sectionFormat="of" target="RFC6749"/>) and could prompt credential rotation,
while an error that identifies the source address confirms to a
party holding stolen credentials that they are valid
(<xref target="rejection-responses"/>). Without a distinct error, a legitimate
client cannot diagnose a rejection. Tracked as
<eref target="https://github.com/mcguinness/draft-mcguinness-oauth-client-ip-ranges/issues/14">issue #14</eref>.</t>
        </li>
        <li>
          <t>Can a client combine a Client IP Range Document hosted by another
party, such as its hosting provider, with prefixes of its own? The
two parameters are mutually exclusive (<xref target="metadata"/>), and a document
is self-contained (<xref target="document"/>). One option is an array of URLs whose
documents together form the IP range set. Tracked as
<eref target="https://github.com/mcguinness/draft-mcguinness-oauth-client-ip-ranges/issues/15">issue #15</eref>.</t>
        </li>
      </ol>
    </section>
    <section anchor="history">
      <name>Document History</name>
      <t><em>RFC EDITOR: Remove this section before publication.</em></t>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Expand the motivation and security rationale (<xref target="intro"/>) and Related
Work (<xref target="related-work"/>).</t>
        </li>
        <li>
          <t>Add risk evaluation and rate limiting as uses, and state that a match
does not override a local decision to reject (<xref target="enforcement"/>).</t>
        </li>
        <li>
          <t>Treat stopping use of a set early as exceeding the retention limit
(<xref target="retention-limit"/>).</t>
        </li>
        <li>
          <t>Ask clients to remove prefixes they no longer use (<xref target="acceptance"/>).</t>
        </li>
        <li>
          <t>Fold the withdrawal exception into its requirement (<xref target="withdrawal"/>).</t>
        </li>
        <li>
          <t>Cover Client ID Metadata Document clients in <xref target="privacy"/>.</t>
        </li>
        <li>
          <t>Add an open issue on combining documents (<xref target="open-issues"/>).</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial version.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
