<?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  (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scim-cursor-pagination-08" category="std" consensus="true" submissionType="IETF" updates="[7643, 7644]" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="SCIM Cursor Pagination">Cursor-based Pagination of SCIM Resources</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scim-cursor-pagination-08"/>
    <author initials="M." surname="Peterson" fullname="Matt Peterson">
      <organization>Entrust</organization>
      <address>
        <email>matt.peterson@entrust.com</email>
      </address>
    </author>
    <author initials="D." surname="Zollner" fullname="Danny Zollner" role="editor">
      <organization>Microsoft</organization>
      <address>
        <email>danny.zollner@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Sehgal" fullname="Anjali Sehgal">
      <organization>Amazon Web Services</organization>
      <address>
        <email>anjalisg@amazon.com</email>
      </address>
    </author>
    <date year="2025" month="May" day="09"/>
    <area>IETF</area>
    <workgroup>SCIM</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>SCIM</keyword>
    <abstract>
      <t>This document defines additional SCIM (System for Cross-Domain Identity Management) query parameters and result
attributes to allow use of cursor-based pagination in SCIM
implementations that are implemented with existing code bases,
databases, or APIs where cursor-based pagination is already well established.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    System for Cross-domain Identity Management Working Group mailing list (scim@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/scim/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/ietf-scim-wg/draft-ietf-scim-cursor-pagination"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The two common patterns for result pagination are index-based pagination
and cursor-based pagination.  Rather than
attempt to compare and contrast the advantages and disadvantages of
competing pagination patterns, this document simply recognizes that
SCIM (System for Cross-Domain Identity Management) service providers are commonly implemented as an
interoperability layer on top of already existing application
codebases, databases, and/or APIs that already have a well established pagination pattern.</t>
      <t>Translating from an underlying cursor-based pagination pattern to the
index-based pagination defined in Section 3.4.2.4 of <xref target="RFC7644"/>
ultimately requires the SCIM service provider to fully iterate the
underlying cursor, store the results, and then serve indexed pages
from the stored results.  This task of "pagination translation"
dramatically increases complexity and memory requirements for
implementing a SCIM service provider, and may be an impediment to
SCIM adoption for some applications and identity systems.</t>
      <t>This document defines a simple addition to the SCIM protocol that
allows SCIM service providers to reuse underlying cursors without
expensive translation.  Support for cursor-based pagination in SCIM
encourages broader cross-application identity management
interoperability by encouraging SCIM service provider implementations
for applications and identity systems where cursor-based pagination
is already well-established.</t>
      <t>This document updates RFCs 7643 and 7644 because it adds attributes to
existing structures from those documents, as described in this memo in
Section 2. These changes are only invoked with the "cursor" query
parameter.</t>
      <section anchor="notational-conventions">
        <name>Notational 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>
      </section>
    </section>
    <section anchor="query-parameters-and-response-attributes">
      <name>Query Parameters and Response Attributes</name>
      <t>The following table describes the URL pagination query parameters for requesting cursor-based pagination:</t>
      <table>
        <name>Query Parameters</name>
        <thead>
          <tr>
            <th align="left">Parameter</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>cursor</tt></td>
            <td align="left">The string value of the nextCursor attribute from a previous result page. The cursor value <bcp14>MUST</bcp14> be empty or omitted for the first request of a cursor-paginated query. This value may only contain characters from the unreserved characters set defined in section 2.3 of <xref target="RFC3986"/>.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>count</tt></td>
            <td align="left">A positive integer. Specifies the desired maximum number of query results per page, e.g., <tt>count=10</tt>. When specified, the service provider <bcp14>MUST NOT</bcp14> return more results than specified, although it <bcp14>MAY</bcp14> return fewer results. If count is not specified in the query, the maximum number of results is set by the service provider.</td>
          </tr>
        </tbody>
      </table>
      <t>The following table describes cursor-based pagination attributes returned in a paged query response:</t>
      <table>
        <name>Response Attributes</name>
        <thead>
          <tr>
            <th align="left">Element</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>nextCursor</tt></td>
            <td align="left">A cursor value string that <bcp14>MAY</bcp14> be used in a subsequent request to obtain the next page of results. Service providers supporting cursor-based pagination <bcp14>MUST</bcp14> include <tt>nextCursor</tt> in all paged query responses except when returning the last page. <tt>nextCursor</tt> is omitted from a response only to indicate that there are no more result pages.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>previousCursor</tt></td>
            <td align="left">A cursor value string that <bcp14>MAY</bcp14> be used in a subsequent request to obtain the previous page of results. Returning <tt>previousCursor</tt> is <bcp14>OPTIONAL</bcp14>.</td>
          </tr>
        </tbody>
      </table>
      <t>Cursor values are opaque; clients <bcp14>MUST</bcp14> not make assumptions about their structure. When the client wants to retrieve
another result page for a query, it <bcp14>MUST</bcp14> query the same service
provider endpoint with all query parameters and values being
identical to the initial query with the exception of the cursor value
which <bcp14>SHOULD</bcp14> be set to a <tt>nextCursor</tt> (or <tt>previousCursor</tt>) value that
was returned by service provider in a previous response.</t>
      <t>For example, to retrieve the first 10 Users with <tt>userName</tt> starting
with <tt>J</tt>, use an empty cursor and set the count to 10:</t>
      <artwork><![CDATA[
GET /Users?filter=userName%20sw%20J&cursor&count=10
Host: example.com
Accept: application/scim+json
Authorization: Bearer U8YJcYYRMjbGeepD
]]></artwork>
      <t>The SCIM service provider in response to the query above returns metadata regarding pagination similar
to the following example (actual resources removed for brevity):</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "totalResults":100,
   "itemsPerPage":10,
   "nextCursor":"VZUTiyhEQJ94IR",
   "schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
   "Resources":[{
      ...
   }]
}
]]></artwork>
      <t>Given the example above, to request the next page or results, use the
same query parameters and values except set the cursor to the value
of <tt>nextCursor</tt> (<tt>VZUTiyhEQJ94IR</tt>):</t>
      <artwork><![CDATA[
GET /Users?filter=username%20sw%20J&cursor=VZUTiyhEQJ94IR&count=10
Host: example.com
Accept: application/scim+json
Authorization: Bearer U8YJcYYRMjbGeepD
]]></artwork>
      <t>The service provider responds with:</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "totalResults": 100,
   "itemsPerPage": 10,
   "previousCursor: "ze7L30kMiiLX6x"
   "nextCursor": "YkU3OF86Pz0rGv",
   "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
   "Resources":[{
      ...
   }]
}
]]></artwork>
      <t>In the example above, the response includes the <bcp14>OPTIONAL</bcp14>
previousCursor indicating that the service provider supports forward
and reverse traversal of result pages.</t>
      <t>As described in Section 3.4.1 of <xref target="RFC7644"/> service providers <bcp14>SHOULD</bcp14>
return an accurate value for totalResults which is the total number
of resources for all pages.  Service providers implementing cursor
pagination that are unable to estimate totalResults <bcp14>MAY</bcp14> choose to omit the totalResults attribute.</t>
      <section anchor="pagination-errors">
        <name>Pagination errors</name>
        <t>If a service provider encounters invalid pagination query
parameters (invalid cursor value, count value, etc), or other error
conditions, the service provider <bcp14>SHOULD</bcp14> return the appropriate HTTP
response status code and detailed JSON error response as defined in
Section 3.12 of <xref target="RFC7644"/>.  Most pagination error conditions would
generate an HTTP response with status code 400.  Since many pagination
error conditions are not user recoverable, error messages <bcp14>SHOULD</bcp14>
focus on communicating error details to the SCIM client developer.</t>
        <t>For HTTP status code 400 (Bad Request) responses, the following detail error types are defined. These error types extend the list of error types defined in <xref target="RFC7644"/> Section 3.12, Table 9: SCIM Detail Error Keyword Values.</t>
        <table>
          <name>Pagination Errors</name>
          <thead>
            <tr>
              <th align="left">scimType</th>
              <th align="left">Description</th>
              <th align="left">Applicability</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>invalidCursor</tt></td>
              <td align="left">Cursor value is invalid. Cursor value <bcp14>SHOULD</bcp14> be empty to request the first page and set to the <tt>nextCursor</tt> or <tt>previousCursor</tt> value for subsequent queries.</td>
              <td align="left">
                <tt>GET</tt> (Section 3.4.2 of <xref target="RFC7644"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>expiredCursor</tt></td>
              <td align="left">Cursor has expired. Do not wait longer than service provider's <tt>cursorTimeout</tt> to request additional pages.</td>
              <td align="left">
                <tt>GET</tt> (Section 3.4.2 of <xref target="RFC7644"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>invalidCount</tt></td>
              <td align="left">Count value is invalid. Count value must be between 1 - and service provider's maxPageSize</td>
              <td align="left">
                <tt>GET</tt> (Section 3.4.2 of <xref target="RFC7644"/>)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sorting">
        <name>Sorting</name>
        <t>If sorting is implemented as described Section 3.4.2.3 of <xref target="RFC7644"/>,
then cursor-paged results <bcp14>SHOULD</bcp14> be sorted.</t>
        <t>When a service provider supports both index- and cursor-based pagination, clients can use the 'startIndex' and 'cursor' query parameters to request a specific method.</t>
        <t>Service providers supporting both pagination methods <bcp14>MUST</bcp14> choose a pagination method to use when responding to requests that have not specified a pagination query parameter. Service providers <bcp14>MUST NOT</bcp14> return an error due to the pagination method being unspecified when pagination is required to complete the response.</t>
        <t>If the default pagination method is not advertised in the Service Provider Configuration data, service provider implementers <bcp14>MAY</bcp14> dynamically determine which pagination method is used for each response based on criteria of their choosing.</t>
      </section>
      <section anchor="cursors-as-the-only-pagination-method">
        <name>Cursors as the Only Pagination Method</name>
        <t>A service provider <bcp14>MAY</bcp14> require cursor-based pagination to
retrieve all results for a query by including a <tt>nextCursor</tt> value in
the response even when the query does not include the <tt>cursor</tt>
parameter.</t>
        <t>For example:</t>
        <artwork><![CDATA[
GET /Users
Host: example.com
Accept: application/scim+json
]]></artwork>
        <t>The service provider may respond to the above query with a page
containing defaultPageSize results and a <tt>nextCursor</tt> value as shown
in the below example (Resources omitted for brevity):</t>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "totalResults": 5000,
   "itemsPerPage": 100,
   "nextCursor": "HPq72Pax3JUaNa",
   "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
   "Resources": [{
      ...
   }]
}
]]></artwork>
      </section>
      <section anchor="backwards-compatibility-considerations">
        <name>Backwards Compatibility Considerations</name>
        <t>Implementers of SCIM service providers that previously supported
index-based pagination and are adding support for cursor-based pagination
<bcp14>SHOULD</bcp14> carefully consider the impact to existing SCIM clients before
changing the default pagination method in a return set. SCIM clients
that previously expected index-based pagination may not be compatible
with cursor-based pagination without making changes to the SCIM client.
Adding cursor-based pagination support but leaving the default return
set pagination method as-is <bcp14>SHOULD</bcp14> not impact existing SCIM clients.</t>
        <t>SCIM clients can query the provider configuration endpoint to determine
if index-based, cursor-based or both types of pagination are supported.</t>
      </section>
    </section>
    <section anchor="querying-resources-using-http-post">
      <name>Querying Resources using HTTP POST</name>
      <t>Section 3.4.3 of <xref target="RFC7644"/> defines how clients <bcp14>MAY</bcp14> execute queries without passing parameters on the URL by using the <tt>POST</tt> verb combined with the <tt>/.search</tt> path extension execute. When posting to <tt>/.search</tt>, the client would pass the parameters defined in Section 2 in the body of the POST request.</t>
      <artwork><![CDATA[
POST /User/.search
Host: example.com
Accept: application/scim+json
Authorization: Bearer U8YJcYYRMjbGeepD

{
   "schemas": ["urn:ietf:params:scim:api:messages:2.0:SearchRequest"],
   "attributes": ["displayName", "userName"],
   "filter": "displayName sw \"smith\"",
   "cursor": "",
   "count": 10
}
]]></artwork>
      <t>Which would return a result containing a <tt>nextCursor</tt> value which may
be used by the client in a subsequent call to return the next page of
resources</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "totalResults": 100,
   "itemsPerPage": 10,
   "nextCursor": "VZUTiyhEQJ94IR",
   "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
   "Resources": [{
      ...
   }]
}
]]></artwork>
    </section>
    <section anchor="service-provider-configuration">
      <name>Service Provider Configuration</name>
      <t>The <tt>/ServiceProviderConfig</tt> resource defined in Section 4 of <xref target="RFC7644"/>
facilitates discovery of SCIM service provider features.  A SCIM
service provider implementing cursor-based pagination <bcp14>SHOULD</bcp14> include
the following additional attribute in JSON document returned by the
<tt>/ServiceProviderConfig</tt> endpoint:</t>
      <dl>
        <dt>pagination</dt>
        <dd>
          <t>A complex type that indicates pagination configuration options. <bcp14>OPTIONAL</bcp14>.  The following sub-attributes are defined:
</t>
          <dl>
            <dt>cursor</dt>
            <dd>
              <t>A Boolean value specifying support of cursor-based pagination. <bcp14>REQUIRED</bcp14>.</t>
            </dd>
            <dt>index</dt>
            <dd>
              <t>A Boolean value specifying support of index-based pagination. <bcp14>REQUIRED</bcp14>.</t>
            </dd>
            <dt>defaultPaginationMethod</dt>
            <dd>
              <t>A string value specifying the type of pagination that the service provider defaults to when the client has not specified which method it wishes to use. Possible values are "cursor" and "index".  <bcp14>OPTIONAL</bcp14>.</t>
            </dd>
            <dt>defaultPageSize</dt>
            <dd>
              <t>Positive integer value specifying the default number of results returned in a page when a count is not specified in the query. <bcp14>OPTIONAL</bcp14>.</t>
            </dd>
            <dt>maxPageSize</dt>
            <dd>
              <t>Positive integer specifying the maximum number of results returned in a page regardless of what is specified for the count in a query. The maximum number of results returned may be further restricted by other criteria. <bcp14>OPTIONAL</bcp14>.</t>
            </dd>
            <dt>cursorTimeout</dt>
            <dd>
              <t>Positive integer specifying the minimum number of seconds that a cursor is valid between page requests. Clients waiting too long between cursor pagination requests may receive an invalid cursor error response. No value being specified may mean that there is no cursor timeout or that the cursor timeout is not a static duration.  <bcp14>OPTIONAL</bcp14>.</t>
            </dd>
          </dl>
        </dd>
      </dl>
      <t>Service providers may choose not to advertise Service Provider Configuration information regarding default pagination method, page size or cursor validity. Clients <bcp14>MUST NOT</bcp14> interpret the lack of published Service Provider Configuration values to mean that no defaults or limits on page sizes or cursor lifetimes exist, or that there is no default pagination method. Service providers may choose not to publish values for the pagination sub-attributes for many reasons. Examples include:</t>
      <ul spacing="normal">
        <li>
          <t>Service providers containing multiple resource types may have different values set for each resource type.</t>
        </li>
        <li>
          <t>Default and maximum page size may be determined by factors besides or in addition to the number of resources returned, such as the size of each resource on the page.</t>
        </li>
      </ul>
      <t>Before using cursor-based pagination, a SCIM client <bcp14>MAY</bcp14> fetch the
Service Provider Configuration document from the SCIM service
provider and verify that cursor-based pagination is supported.</t>
      <t>For example:</t>
      <artwork><![CDATA[
GET /ServiceProviderConfig
Host: example.com
Accept: application/scim+json
]]></artwork>
      <t>A service provider supporting both cursor-based pagination and index-
based pagination would return a document similar to the following
(full <tt>ServiceProviderConfig</tt> schema defined in Section 5 of <xref target="RFC7643"/>
has been omitted for brevity):</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/scim+json

{
   "schemas": [
      "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"],
      ...

   "pagination": {
      "cursor": true,
      "index": true,
      "defaultPaginationMethod": "cursor",
      "defaultPageSize": 100,
      "maxPageSize": 250,
      "cursorTimeout": 3600
   },

   ...
}
]]></artwork>
      <t>Service provider implementers <bcp14>SHOULD</bcp14> ensure that misuse of pagination
by a SCIM client does not deplete service provider resources or
prevent valid requests from other clients being handled.  Defenses
for a SCIM service provider are similar those used to protect other
Web API services -- including the use of a "Web API gateway" layer,
to provide authentication, rate limiting, IP allow/block lists,
logging and monitoring, response caching, etc.</t>
      <t>For example, an obvious protection against abuse is for the service
provider to require client authentication in order to retrieve large
result sets and enforce an overriding <tt>totalResults</tt> limit for non-
authenticated clients.  Another example would be for a service
provider that implements cursor pagination to restrict the number of
cursors that can be allocated by a client or enforce cursor lifetimes.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section elaborates on the security considerations associated with the implementation of cursor pagination in SCIM. This document is under the same security and privacy considerations of those described in <xref target="RFC7644"/>. It is imperative that implementers additionally consider the following security aspects to safeguard against both deliberate attacks and inadvertent misuse that may compromise the system's security posture.</t>
      <section anchor="threat-model-and-security-environment">
        <name>Threat Model and Security Environment</name>
        <t>The threat landscape is characterized by two primary types of actors:</t>
        <ol spacing="normal" type="1"><li>
            <t>Unauthenticated and Authenticated Malicious Actors: These individuals or entities represent a malevolent threat. Their objectives include unauthorized access to data, alteration, or deletion through cursor-enabled queries. They may also seek to deplete service provider resources deliberately, aiming to cause a denial-of-service state, thereby reducing service availability.</t>
          </li>
          <li>
            <t>Authenticated Benign Users: This category includes legitimate users who, due to confusion or a lack of understanding, inadvertently engage in actions that consume service provider resources excessively. Such actions, while not ill-intended, can lead to unintended denial of service by overwhelming the system's capacity.</t>
          </li>
        </ol>
      </section>
      <section anchor="confidentiality">
        <name>Confidentiality</name>
        <t>To ensure that confidential data remains appropriately secured:</t>
        <ul spacing="normal">
          <li>
            <t>Implementers <bcp14>MUST</bcp14> ensure that pagination through results sets is strictly confined to the data that the actor's current identity has been authorized to access. This holds true even in cases where the actor has obtained a cursor pertaining to a result set that was generated by a different actor.</t>
          </li>
          <li>
            <t>Authorization checks <bcp14>MUST</bcp14> BE continuously applied as an actor navigates through the result set associated with a cursor. Under no circumstances should possession of a cursor be interpreted as granting any supplementary access privileges to the actor.</t>
          </li>
          <li>
            <t>In alignment with Section 2, cursor values <bcp14>SHOULD</bcp14> be treated as opaque entities. Clients should avoid making any inferences or assumptions about their internal structure.</t>
          </li>
          <li>
            <t>The system <bcp14>SHOULD</bcp14> handle error scenarios gracefully, while not exposing sensitive data. For instance, if an actor attempts to access a page of results outside their authorized scope, or if a request is made for a non-existent page, the system should respond with identical error messages, so as not to disclose any details of the underlying data or the nature of the authorization failure. It is acceptable, however, for the system to log different messages to a log accessible by administrators or other authorized personnel.</t>
          </li>
        </ul>
      </section>
      <section anchor="integrity">
        <name>Integrity</name>
        <t>The extension discussed herein is query-only and does not inherently pose a substantial risk to data integrity. However, the focus is placed on safeguarding the integrity of the applications and clients that depend on this extension, rather than the integrity of the service provider. Specific considerations include:
It is not required to tie a cursor to specific actor. However, if a cursor is tied to an actor and if the actor's permissions change, and the actor is still using the cursor, the actor may miss records OR there may be unauthorized access to data.</t>
        <ul spacing="normal">
          <li>
            <t>When possible, service providers <bcp14>SHOULD</bcp14> invalidate all tokens/watermarks corresponding to an actor immediately following a change in permissions. This ensures that any queries executed post-permission change, utilizing old tokens/watermarks, will be denied.</t>
          </li>
          <li>
            <t>As an alternative approach, service provider may opt to retain the existing tokens/watermarks but must ensure that any metadata tied to the result set, such as record counts, is updated to reflect the new permissions accurately.</t>
          </li>
        </ul>
      </section>
      <section anchor="availability">
        <name>Availability</name>
        <t>The concern for availability primarily stems from the potential for Denial of Service (DoS) attacks. If the service provider elects to retain substantial data or metadata for each cursor, numerous concurrent queries with &amp;cursor could strain and eventually exhaust service provider resources. This could be orchestrated by an attacker with malicious intent or could occur innocuously as a result of actions taken by a benign but confused actor.</t>
        <t>To mitigate such risks, the following strategies are recommended:</t>
        <ul spacing="normal">
          <li>
            <t>Implementation of rate limiting to control the volume and cadence of cursor requests. This approach should adhere to established standards for rate limiting, details of which can be found in <xref target="RFC6585"/>.</t>
          </li>
          <li>
            <t>Cursor mechanisms must be designed in a manner that avoids any additional consumption of service provider resources with the initiation of new &amp;cursor requests.</t>
          </li>
          <li>
            <t>It is advisable to establish a ceiling on the number of cursors permissible at any given time. Alternatively, the adoption of an opaque identifier system that conservatively utilizes resources may be used.</t>
          </li>
          <li>
            <t>Token invalidation mechanisms (including mechanisms triggered by permissions changes) must be designed to be resource-efficient to prevent them from being exploited for DoS attacks.</t>
          </li>
          <li>
            <t>Actors may face challenges in maintaining a seamless pagination experience if their permissions are in a state of flux. Proactive measures should be taken to ensure that permission changes do not disrupt the user experience.</t>
          </li>
        </ul>
      </section>
      <section anchor="other-security-references">
        <name>Other Security References</name>
        <t>Using URIs to describe and locate resources has its own set of security considerations discussed in Section 7 of <xref target="RFC3986"/>.  Implementations <bcp14>SHOULD</bcp14> also refer to <xref target="BCP195"/> and <xref target="RFC9110"/> for additional security considerations that are relvant for underlying TLS and HTTP protocols.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This specification requests IANA to amends the registry "SCIM Schema URIs for Data Resources" established by <xref target="RFC7643"/>.</t>
      <t>For the <tt>urn:ietf:params:scim:api:messages:2.0:ListResponse</tt>, add section 2 of this document to the References column.</t>
      <t>For the <tt>urn:ietf:params:scim:api:messages:2.0:SearchRequest</tt>, add section 2 of this document to the References column.</t>
      <t>For the <tt>urn:ietf:params:scim:api:messages:2.0:ServiceProviderConfig</tt>, add section 4 of this document to the References column.</t>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>RFC Editor: Please remove this section in the release version of the document.</t>
      <t>-08</t>
      <ul spacing="normal">
        <li>
          <t>Fix several typos and wording consistencies</t>
        </li>
        <li>
          <t>Add reference to RFC7644 in Security Considerations</t>
        </li>
        <li>
          <t>Adjust indenting and wording to clarify the definition of the pagination attribute in serviceProviderConfig</t>
        </li>
        <li>
          <t>Reference RFC section 2.3 (not section 2.2) for unreserved characters</t>
        </li>
        <li>
          <t>Reference section RFC 7644 3.4.3 (not section 3.4.2.4 ) for POST query</t>
        </li>
        <li>
          <t>Added updates 7644, 7643</t>
        </li>
        <li>
          <t>Changed IANA considerations to add sections of this document to References column of SCIM Schema URIs for Data Resources impacted by this document</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Minor grammar change</t>
        </li>
        <li>
          <t>Add informative reference to BCP195 and RFC9110</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Various updates in response to WG/IETF Last Call feedback</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Added IANA Considerations section</t>
        </li>
        <li>
          <t>Added Security Considerations section</t>
        </li>
        <li>
          <t>Added Backwards Compatibility Considerations section</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Minor grammatical/typo fixes, rename + changes to maxPageSize SCP definition</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Typos/semantics, acknowledgements, expansion of cursorTimeout SCP definition</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Updated after Httpdir review.</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Adopted by SCIM WG.</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments-and-contributions">
      <name>Acknowledgments and Contributions</name>
      <t>The authors would like to acknowledge the contribution of Paul Lanzi (IDenovate) in leading the writing of security considerations section.</t>
      <t>The authors would also like to acknowledge the following individuals who provided valuable feedback while reviewing the document:</t>
      <ul spacing="normal">
        <li>
          <t>Aaron Parecki - Okta</t>
        </li>
        <li>
          <t>David Brossard - Axiomatics</t>
        </li>
        <li>
          <t>Dean H. Saxe - Beyond Identity</t>
        </li>
        <li>
          <t>Pamela Dingle - Microsoft</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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="RFC6585">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
        <reference anchor="RFC7643">
          <front>
            <title>System for Cross-domain Identity Management: Core Schema</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="K. Grizzle" initials="K." surname="Grizzle"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The System for Cross-domain Identity Management (SCIM) specifications are designed to make identity management in cloud-based applications and services easier. The specification suite builds upon experience with existing schemas and deployments, placing specific emphasis on simplicity of development and integration, while applying existing authentication, authorization, and privacy models. Its intent is to reduce the cost and complexity of user management operations by providing a common user schema and extension model as well as binding documents to provide patterns for exchanging this schema using HTTP.</t>
              <t>This document provides a platform-neutral schema and extension model for representing users and groups and other resource types in JSON format. This schema is intended for exchange and use with cloud service providers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7643"/>
          <seriesInfo name="DOI" value="10.17487/RFC7643"/>
        </reference>
        <reference anchor="RFC7644">
          <front>
            <title>System for Cross-domain Identity Management: Protocol</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="K. Grizzle" initials="K." surname="Grizzle"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The System for Cross-domain Identity Management (SCIM) specification is an HTTP-based protocol that makes managing identities in multi-domain scenarios easier to support via a standardized service. Examples include, but are not limited to, enterprise-to-cloud service providers and inter-cloud scenarios. The specification suite seeks to build upon experience with existing schemas and deployments, placing specific emphasis on simplicity of development and integration, while applying existing authentication, authorization, and privacy models. SCIM's intent is to reduce the cost and complexity of user management operations by providing a common user schema, an extension model, and a service protocol defined by this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7644"/>
          <seriesInfo name="DOI" value="10.17487/RFC7644"/>
        </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>
        <name>Informative References</name>
        <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/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>
        <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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
