<?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.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scim-cursor-pagination-09" 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-09"/>
    <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>Independent</organization>
      <address>
        <email>danny@zollnerd.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="June" day="23"/>
    <area>IETF</area>
    <workgroup>SCIM</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>SCIM</keyword>
    <abstract>
      <?line 44?>

<t>This document updates <xref target="RFC7643"/> and <xref target="RFC7644"/> by defining additional SCIM (System for Cross-Domain Identity Management) query parameters and result attributes to allow use of cursor-based pagination in SCIM
service providers 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>
    <?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 (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"
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
<xref target="section2"/>. These changes are invoked when using the “cursor” parameter
when making SCIM search requests using GET or POST methods.</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 anchor="definitions">
        <name>Definitions</name>
        <t>This document uses the terms defined in section 1.2 of <xref target="RFC7643"/></t>
      </section>
    </section>
    <section anchor="section2">
      <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">Specifies the desired maximum number of query results per page, e.g., 10.  A negative value <bcp14>SHALL</bcp14> be interpreted as "0".  A value of "0" indicates that no resource results are to be returned except for "totalResults". When specified, the service provider <bcp14>MUST NOT</bcp14> return more although it <bcp14>MAY</bcp14> return fewer results. If unspecified, the maximum number of returned 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> <bcp14>MUST</bcp14> be 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>.  <tt>previousCursor</tt> <bcp14>MUST</bcp14> not be returned with the first page.</td>
          </tr>
        </tbody>
      </table>
      <t>Cursor values are URL-safe strings that are opaque to the client.
To retrieve another result page for a query, the client <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 <tt>cursor</tt> value
which <bcp14>SHOULD</bcp14> be set to a <tt>nextCursor</tt> (or <tt>previousCursor</tt>) value that
was returned by the 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 optional
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 should
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="section2.1">
        <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"/>.</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 section 3.12 of <xref target="RFC7644"/>, 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 0 and service provider's maxPageSize and must value identical count of the initial query.</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 should be sorted.</t>
      </section>
      <section anchor="implementing-cursors-as-the-only-pagination-method">
        <name>Implementing 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="implementing-both-cursors-and-index-pagination">
        <name>Implementing Both Cursors and Index Pagination</name>
        <t>When a service provider supports both index-based and cursor-based pagination, clients can use the 'startIndex' or 'cursor' query parameters to request a specific method.  Additionally, service providers supporting both pagination methods <bcp14>MUST</bcp14> choose a default pagination method to use when responding to requests that have not specified a pagination query parameter.</t>
        <t>Implementers of SCIM service providers that previously supported only index-based pagination and are adding support for cursor-based pagination should use index as the default pagination method to avoid incompatibility with clients that expect index-based pagination behaviors when no pagination query parameters are specified.</t>
        <t>SCIM clients can query the <xref target="section4">service provider configuration</xref> endpoint to determine if index-based, cursor-based or both types of pagination are supported and which of these is the default.</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 may 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 <xref target="section2"/> in the body of the POST request. For example:</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="section4">
      <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>
    </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 service provider'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>When possible, service providers <bcp14>SHOULD</bcp14> invalidate all cursors corresponding to an actor immediately following a change in permissions. This ensures that any queries executed post-permission change, utilizing old cursors, will be denied. As an alternative approach, service provider may opt to retain the existing cursors 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>
          <li>
            <t>In alignment with <xref target="section2"/>, cursor values are URL-Safe strings that are opaque to clients.  Server providers should obfuscate cursors
values to prevent clients from interpreting cursors or forging new cursors.  Service providers should be able to easily detect forged cursor values and immediately return an <tt>invalidCursor</tt> as described in <xref target="section2.1"/></t>
          </li>
          <li>
            <t>The service provider <bcp14>MUST</bcp14> handle error scenarios without 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 service provider 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 service provider to log different messages to a log accessible by administrators or other authorized personnel.</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 initial queries that allocate cursors could strain and eventually exhaust service provider resources. Such an attack could be orchestrated by an attacker with malicious intent or could occur unintentionally as a result of client testing or bugs.</t>
        <t>To mitigate risks, the following strategies are recommended for service providers:</t>
        <ul spacing="normal">
          <li>
            <t>Clients should authenticate to retrieve large result sets.  Anonymous queries yielding numerous results, may return an HTTP status code 400 (Bad Request) with the error type "tooMany," as outlined in <xref target="RFC7644"/> section 3.12.</t>
          </li>
          <li>
            <t>Implement 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>Allow administrator of the service provider to set a ceiling on the number of cursors permissible at any given time or to specify a maxPageSize value. Guidance on configuring such values should be documented in the implementation administrator/installation guide.</t>
          </li>
          <li>
            <t>Cursor 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>
        </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 should also refer to <xref target="BCP195"/> and <xref target="RFC9110"/> for additional security considerations that are relevant 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 <xref target="section2"/> of this document to the References column.</t>
      <t>For the <tt>urn:ietf:params:scim:api:messages:2.0:SearchRequest</tt>, add <xref target="section2"/> of this document to the References column.</t>
      <t>For the <tt>urn:ietf:params:scim:api:messages:2.0:ServiceProviderConfig</tt>, add <xref target="section4"/> 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 anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="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 anchor="sec-informative-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>
