<?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.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scim-cursor-pagination-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="SCIM Cursor Pagination">Cursor-based Pagination of SCIM Resources</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scim-cursor-pagination-05"/>
    <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="2024" month="July" day="08"/>
    <area>IETF</area>
    <workgroup>SCIM</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>SCIM</keyword>
    <abstract>
      <?line 41?>

<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>
  </front>
  <middle>
    <?line 49?>

<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 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>
      <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>
        <?line -18?>

</section>
    </section>
    <section anchor="query-parameters-and-response-attributes">
      <name>Query Parameters and Response Attributes</name>
      <t>The following table describes the URL pagination 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 contained characters from the unreserved characters set defined in section 2.2 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 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

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 <tt>cursorTimeout</tt> (600 sec) 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 maxPageSize (500)</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>
      </section>
      <section anchor="default-pagination-method">
        <name>Default Pagination Method</name>
        <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.2.4 of <xref target="RFC7644"/> defines how clients <bcp14>MAY</bcp14> execute the HTTP
<tt>POST</tt> method combined with the <tt>/.search</tt> path extension to issue
execute queries without passing parameters on the URL.  When using
<tt>/.search</tt>, the client would pass the parameters defined in Section 2</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>.</t>
        </dd>
        <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 maximum number seconds that a
cursor is guaranteed to be valid between page requests.  Clients waiting too long
between cursor pagination requests may receive an invalid cursor
error response.  <bcp14>OPTIONAL</bcp14>.</t>
        </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 implementors <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 draft is under the same security and privacy considerations of those described in RFC 7644. It is imperative that implementers 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>Implementors <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"/>.
IANA Considerations</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"/>, for the <tt>urn:ietf:params:scim:api:messages:2.0:SearchRequest</tt> message URI and adds the following new fields:</t>
      <t>SCIM <tt>cursor</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>cursor</tt>.</t>
        </li>
        <li>
          <t>Status: permanent.</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 2</t>
        </li>
        <li>
          <t>Comments: see section 3.4.3 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
      <t>SCIM <tt>count</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>count</tt></t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 2</t>
        </li>
        <li>
          <t>Comments: see section 3.4.3 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
      <t>This specification amends the entry  for urn:ietf:params:scim:api:messages:2.0:ListResponse message URI, and adds the following fields:</t>
      <t>SCIM <tt>nextCursor</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>nextCursor</tt></t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 2</t>
        </li>
        <li>
          <t>Comments: see section 3.4.2 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
      <t>SCIM <tt>previousCursor</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>previousCursor</tt></t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 2</t>
        </li>
        <li>
          <t>Comments: see section 3.4.2 of <xref target="RFC7644"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
      <t>This specification amends the entry  for urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig schema URI, and adds the following field:</t>
      <t>SCIM <tt>pagination</tt> attribute</t>
      <ul spacing="normal">
        <li>
          <t>Field Name: <tt>pagination</tt></t>
        </li>
        <li>
          <t>Status: permanent</t>
        </li>
        <li>
          <t>Specification Document: this specification, Section 4</t>
        </li>
        <li>
          <t>Comments: see section 5 of <xref target="RFC7643"/> System for Cross-domain Identity Management: Protocol</t>
        </li>
      </ul>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <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 numbered="false" 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 draft:</t>
      <ul spacing="normal">
        <li>
          <t>Aaron Parecki - Okta</t>
        </li>
        <li>
          <t>David Brossard - Axiomatics</t>
        </li>
        <li>
          <t>Dean H. Saxe - Amazon Web Services</t>
        </li>
        <li>
          <t>Pamela Dingle - Microsoft</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <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="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>
  </back>
  <!-- ##markdown-source:
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
3F0AAA==

-->

</rfc>
