<?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-10" 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-10"/>
    <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="July" day="03"/>
    <area>IETF</area>
    <workgroup>SCIM</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>SCIM</keyword>
    <abstract>
      <?line 44?>

<t>This document updates RFC7643 and 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 NOT</bcp14> 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:
H4sIAAAAAAAAA8Vc63Ybt7X+z7X0DiizTm2nJC3JSmJzNU1lyXGUWrZqSc1J
Xa8KnAFJRMMZZjAjiU7TZznPcp7s7BswGHJoOz0rbX441FyAjY19+fYFMxwO
d3qVrTIzVv2junRFOZxoZ1J1pmc215UtclVM1fnRyal6bVxRl4lx/Z2enkxK
cwMv0R1+M3oHnkiLJNcLGDct9bQaWlNNhy6xi2HC0yzDw8O93Z3eTi/RlZkV
5WqsXJXiBbssx6oqa1ft7+4+2d2HWUujx+rk2cXXO73boryelUW9HBN1O71r
s4Jr6Vi9OckrU+amGh7j1AO6/3anVy9TmMKN1RefHzwa4L8HOI2rdJ7+XWdF
DsSujIMrC11Wf/+xLujpvNjpLS0MWxXJQAHpVWmmDn6tFvgDBnb1ZGGdg6Vc
rJbGEwjk1tW8KMc7PaXUkP5VzJJTXVXqzACVrsj5RlHOdG7fEUPG6llO6+Zb
ZqFtNlYLeGm0lJf+aPiJUVIsNsc/1nm+Un8tsiw3Zdf4J3lqlgb+ydtzpPji
H9/xi2kYXJUFSohJbVWUm9Md5j/ozKpzM5/prGu6w4V+B4L0nZnAQ+WNTZDL
0bSaBnCzP2p6kOfd6eVFCYu2N4ZY+Prro0dPHn/uf3/+2ePP/G/c0Oj3wZjE
J5+23n96dLb3JLzyZG9vlx4bDodKT1xV6qTCvy/m1ikQ3noBzFEiM34SoDT1
k6jJSqVmanObz5ROgTewVp2xrtw/X7nKLBSQoI7KwrnhcQFrzdUJ8txWK5CB
XM8MTvJA/VibcqWWugR24v7SNKVxdVYp2PXSTmokoiqUzrLiVtXOoFYmscI2
+qRgGlYJx8xWy7K4sSkOXM01DFkaZRfLjGaHV29tNVfmzroKl5IUqVE4Jsg4
LF7LT1jI4dmJU7dzA69vnRpoz0BL05W6NVmmDGjXBLZ2btKR5/bCpmlm8K9P
QBCrskjrBF9m7htV3RZAxGIBwy1h9aDKjvgoDIlmo4WAFN9tEALKByzcQuUI
JEBXsA5kBz4KkyyWFfIX5l3iqPR2AcRpB9eBKJ3e6LyCHePNSa2LrhRTMF/w
piEGRgR6+gcwRixWDtm/ghUlxQzUxPDG7PT+BdnZ3GOkn/kHU8T7rJF2VAyg
qViaUk9shsNlegW8AHKrYoly5XcwiIReLjObCGNRPjbFA5jy0IsIC5kMMtc3
wL0NaejgEgnIRalzl2madloWCxhY1bDFZbYi4dwidzIEbiHsFq6xSypYX+ES
aoghoVOPRgej/dEBrvuNaDb6iqyyYDsMbdKPtS1piwwr9zrLcdZpnSG3gQh4
i2nYIBt8BthPuivCzIzDCzmNKuLMRKORJBbg8/SmNwoOJJjsVKXdNVLej9ZY
eQ6SG7Z5AvsAW0SincGWwobjnAuzAGfrV4cSQloGb3iJoZ3vXjGTvdArNUFd
QSkD50CiXRUixjotlkQQyrErFiYWI9Yi6wXakcS70aYB5h2Dx1lnTLC0stVM
H9AF3rnIRI3ISrpu0smMlgZN6MYGOTKFRQ1DmDvwjw58R8xPYPt5vVwCBKBF
fdD+mjwBxEQmYlIWGkUlIYWOONEwYRG0ukNHwdn40ZDebjkMW8c8BvEBKj/I
9febdKClbdOH6zZ9q8d0KvhMdpgm0ch3W+EuurZrQ5aLuQFnDB6hRp0T+S/g
LT8D6gzMZ1wCL7Muk3FFgYY/dnpv3t7/xLF27z8YgaIYeDsBS0/Gm1zGTXGN
fg/VrnY4JUpSnznQbxwxP7HQ1xHLdZnMSWuADU7efv7sAv3j2avzCyADyE1Z
lD/5RL0seDMAGBwV+Q1ynnaGXR1gVoWg1an+6eX5RX/A/1cvX9Hv18/+fHny
+tkx/j7/5vDFi/CjJ0+cf/Pq8sVx86t58+jV6emzl8f8MlxVrUu9/unh931W
4/6rs4uTVy8PX/QDL8NuIrtAXybINGDIsjTsSHot/gO0+t//2TtQP/30G9j2
/b29Jz//LH883vviAP5ARvJs5JX4T2D6qgfiCTzFUUBrVaKXttIZ77GbF7e5
QuEc9XqfvkHOvB2r30+S5d7BH+QCLrh10fOsdZF4tnll42VmYseljmkCN1vX
1zjdpvfw+9bfnu/Rxd9/lYG5U8O9x1/9oScidEwgU+RmTdmc+CXYm4WL3Zso
gNob7Ueu7dFbhl1/JsB51gacEN8tYQ6jDhu9/Clo0s9eZqcFWldSGjADJmgi
E3L5+kVsCjeQLQM50p73+HNC5v9oCFT/AC7gNOxR/oE3r/jdK7h3QQ6yxAFv
dFYTOEZicnNXSWwabI2gCjCa5sYWtYtgpSFjITTJSCRjIP4IEFeo5MXCVqgD
uBCcY2pLgIiyJEJPqh3hwrPEhRG7bB4WXSdpAoJMxHZgnzACIRZ5n1/nQBui
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
9+KKacWb9n/pgZYgr1cAAA==

-->

</rfc>
