<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-scim-cursor-pagination-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SCIM Cursor Pagination">Cursor-based Pagination of SCIM Resources</title>

    <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="March" day="31"/>

    <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>



  </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 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"></xref>
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>

</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>

<texttable title="Query Parameters">
      <ttcol align='left'>Parameter</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">cursor</spanx></c>
      <c>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.2 of <xref target="RFC3986"></xref></c>
      <c><spanx style="verb">count</spanx></c>
      <c>A positive integer. Specifies the desired maximum number of query results per page, e.g., <spanx style="verb">count=10</spanx>. 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.</c>
</texttable>

<t>The following table describes cursor-based pagination attributes
returned in a paged query response:</t>

<texttable title="Response Attributes">
      <ttcol align='left'>Element</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">nextCursor</spanx></c>
      <c>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 <spanx style="verb">nextCursor</spanx> in all paged query responses except when returning the last page. <spanx style="verb">nextCursor</spanx> is omitted from a response only to indicate that there are no more result pages.</c>
      <c><spanx style="verb">previousCursor</spanx></c>
      <c>A cursor value string that <bcp14>MAY</bcp14> be used in a subsequent request to obtain the previous page of results. Returning <spanx style="verb">previousCursor</spanx> is <bcp14>OPTIONAL</bcp14>.</c>
</texttable>

<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 <spanx style="verb">nextCursor</spanx> (or <spanx style="verb">previousCursor</spanx>) value that
was returned by service provider in a previous response.</t>

<t>For example, to retrieve the first 10 Users with <spanx style="verb">userName</spanx> starting
with <spanx style="verb">J</spanx>, use an empty cursor and set the count to 10:</t>

<figure><artwork><![CDATA[
GET /Users?filter=userName%20sw%20J&cursor&count=10
Host: example.com
Accept: application/scim+json
Authorization: Bearer U8YJcYYRMjbGeepD
]]></artwork></figure>

<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>

<figure><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></figure>

<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 <spanx style="verb">nextCursor</spanx> (<spanx style="verb">VZUTiyhEQJ94IR</spanx>):</t>

<figure><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></figure>

<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"></xref> 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"></xref>.  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"></xref> Section 3.12, Table 9: SCIM Detail Error Keyword Values.</t>

<texttable title="Pagination Errors">
      <ttcol align='left'>scimType</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Applicability</ttcol>
      <c><spanx style="verb">invalidCursor</spanx></c>
      <c>Cursor value is invalid. Cursor value <bcp14>SHOULD</bcp14> be empty to request the first page and set to the <spanx style="verb">nextCursor</spanx> or <spanx style="verb">previousCursor</spanx> value for subsequent queries.</c>
      <c><spanx style="verb">GET</spanx> (Section 3.4.2 of <xref target="RFC7644"></xref>)</c>
      <c><spanx style="verb">expiredCursor</spanx></c>
      <c>Cursor has expired. Do not wait longer than <spanx style="verb">cursorTimeout</spanx> (600 sec) to request additional pages.</c>
      <c><spanx style="verb">GET</spanx> (Section 3.4.2 of <xref target="RFC7644"></xref>)</c>
      <c><spanx style="verb">invalidCount</spanx></c>
      <c>Count value is invalid. Count value must be between 1 - and maxPageSize (500)</c>
      <c><spanx style="verb">GET</spanx> (Section 3.4.2 of <xref target="RFC7644"></xref>)</c>
</texttable>

</section>
<section anchor="sorting"><name>Sorting</name>

<t>If sorting is implemented as described Section 3.4.2.3 of <xref target="RFC7644"></xref>,
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 <spanx style="verb">nextCursor</spanx> value in
the response even when the query does not include the <spanx style="verb">cursor</spanx>
parameter.</t>

<t>For example:</t>

<figure><artwork><![CDATA[
GET /Users
Host: example.com
Accept: application/scim+json
]]></artwork></figure>

<t>The service provider may respond to the above query with a page
containing defaultPageSize results and a <spanx style="verb">nextCursor</spanx> value as shown
in the below example (Resources omitted for brevity):</t>

<figure><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></figure>

</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"></xref> defines how clients <bcp14>MAY</bcp14> execute the HTTP
<spanx style="verb">POST</spanx> method combined with the <spanx style="verb">/.search</spanx> path extension to issue
execute queries without passing parameters on the URL.  When using
<spanx style="verb">/.search</spanx>, the client would pass the parameters defined in Section 2</t>

<figure><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></figure>

<t>Which would return a result containing a <spanx style="verb">nextCursor</spanx> value which may
be used by the client in a subsequent call to return the next page of
resources</t>

<figure><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></figure>

</section>
<section anchor="service-provider-configuration"><name>Service Provider Configuration</name>

<t>The <spanx style="verb">/ServiceProviderConfig</spanx> resource defined in Section 4 of <xref target="RFC7644"></xref>
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
<spanx style="verb">/ServiceProviderConfig</spanx> 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>

<t><list style="symbols">
  <t>Service providers containing multiple resource types may have different values set for each resource type.</t>
  <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>
</list></t>

<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>

<figure><artwork><![CDATA[
GET /ServiceProviderConfig
Host: example.com
Accept: application/scim+json
]]></artwork></figure>

<t>A service provider supporting both cursor-based pagination and index-
based pagination would return a document similar to the following
(full <spanx style="verb">ServiceProviderConfig</spanx> schema defined in Section 5 of <xref target="RFC7643"></xref>
has been omitted for brevity):</t>

<figure><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></figure>

<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 <spanx style="verb">totalResults</spanx> 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>

<t><list style="numbers">
  <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>
  <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>
</list></t>

</section>
<section anchor="confidentiality"><name>Confidentiality</name>

<t>To ensure that confidential data remains appropriately secured:</t>

<t><list style="symbols">
  <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>
  <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>
  <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>
  <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>
</list></t>

</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>

<t><list style="symbols">
  <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>
  <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>
</list></t>

</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>

<t><list style="symbols">
  <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"></xref>.</t>
  <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>
  <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>
  <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>
  <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>
</list></t>

</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"></xref>.  Implementations <bcp14>SHOULD</bcp14> also refer to <xref target="BCP195"></xref> and <xref target="RFC9110"></xref> 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"></xref>, for the <spanx style="verb">urn:ietf:params:scim:api:messages:2.0:SearchRequest</spanx> message URI and adds the following new fields:</t>

<t>SCIM <spanx style="verb">cursor</spanx> attribute</t>

<t><list style="symbols">
  <t>Field Name: <spanx style="verb">cursor</spanx>.</t>
  <t>Status: permanent.</t>
  <t>Specification Document: this specification, Section 2</t>
  <t>Comments: see section 3.4.3 of <xref target="RFC7644"></xref> System for Cross-domain Identity Management: Protocol</t>
</list></t>

<t>SCIM <spanx style="verb">count</spanx> attribute</t>

<t><list style="symbols">
  <t>Field Name: <spanx style="verb">count</spanx></t>
  <t>Status: permanent</t>
  <t>Specification Document: this specification, Section 2</t>
  <t>Comments: see section 3.4.3 of <xref target="RFC7644"></xref> System for Cross-domain Identity Management: Protocol</t>
</list></t>

<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 <spanx style="verb">nextCursor</spanx> attribute</t>

<t><list style="symbols">
  <t>Field Name: <spanx style="verb">nextCursor</spanx></t>
  <t>Status: permanent</t>
  <t>Specification Document: this specification, Section 2</t>
  <t>Comments: see section 3.4.2 of <xref target="RFC7644"></xref> System for Cross-domain Identity Management: Protocol</t>
</list></t>

<t>SCIM <spanx style="verb">previousCursor</spanx> attribute</t>

<t><list style="symbols">
  <t>Field Name: <spanx style="verb">previousCursor</spanx></t>
  <t>Status: permanent</t>
  <t>Specification Document: this specification, Section 2</t>
  <t>Comments: see section 3.4.2 of <xref target="RFC7644"></xref> System for Cross-domain Identity Management: Protocol</t>
</list></t>

<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 <spanx style="verb">pagination</spanx> attribute</t>

<t><list style="symbols">
  <t>Field Name: <spanx style="verb">pagination</spanx></t>
  <t>Status: permanent</t>
  <t>Specification Document: this specification, Section 4</t>
  <t>Comments: see section 5 of <xref target="RFC7643"></xref> System for Cross-domain Identity Management: Protocol</t>
</list></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>-07</t>

<t><list style="symbols">
  <t>Minor grammar change</t>
  <t>Add informative reference to BCP195 and RFC9110</t>
</list></t>

<t>-05</t>

<t><list style="symbols">
  <t>Various updates in response to WG/IETF Last Call feedback</t>
</list></t>

<t>-04</t>

<t><list style="symbols">
  <t>Added IANA Considerations section</t>
  <t>Added Security Considerations section</t>
  <t>Added Backwards Compatibility Considerations section</t>
</list></t>

<t>-03</t>

<t><list style="symbols">
  <t>Minor grammatical/typo fixes, rename + changes to maxPageSize SCP definition</t>
</list></t>

<t>-02</t>

<t><list style="symbols">
  <t>Typos/semantics, acknowledgements, expansion of cursorTimeout SCP definition</t>
</list></t>

<t>-01</t>

<t><list style="symbols">
  <t>Updated after Httpdir review.</t>
</list></t>

<t>-00</t>

<t><list style="symbols">
  <t>Adopted by SCIM WG.</t>
</list></t>

</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 draft:</t>

<t><list style="symbols">
  <t>Aaron Parecki - Okta</t>
  <t>David Brossard - Axiomatics</t>
  <t>Dean H. Saxe - Amazon Web Services</t>
  <t>Pamela Dingle - Microsoft</t>
</list></t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<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 title='Informative References'>



<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>



  </back>

<!-- ##markdown-source:
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

-->

</rfc>

