rfc9865v1.txt | rfc9865.txt | |||
---|---|---|---|---|
skipping to change at line 72 ¶ | skipping to change at line 72 ¶ | |||
4. Service Provider Configuration | 4. Service Provider Configuration | |||
5. Security Considerations | 5. Security Considerations | |||
5.1. Threat Model and Security Environment | 5.1. Threat Model and Security Environment | |||
5.2. Confidentiality | 5.2. Confidentiality | |||
5.3. Availability | 5.3. Availability | |||
5.4. Other Security References | 5.4. Other Security References | |||
6. IANA Considerations | 6. IANA Considerations | |||
7. References | 7. References | |||
7.1. Normative References | 7.1. Normative References | |||
7.2. Informative References | 7.2. Informative References | |||
Acknowledgments and Contributions | Acknowledgments | |||
Contributors | ||||
Authors' Addresses | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The two common patterns for result pagination are index-based | The two common patterns for result pagination are index-based | |||
pagination and cursor-based pagination. Rather than attempt to | pagination and cursor-based pagination. Rather than attempt to | |||
compare and contrast the advantages and disadvantages of competing | compare and contrast the advantages and disadvantages of competing | |||
pagination patterns, this document simply recognizes that System for | pagination patterns, this document simply recognizes that System for | |||
Cross-Domain Identity Management (SCIM) service providers are | Cross-Domain Identity Management (SCIM) service providers are | |||
commonly implemented as an interoperability layer on top of already | commonly implemented as an interoperability layer on top of already | |||
skipping to change at line 188 ¶ | skipping to change at line 189 ¶ | |||
For example, to retrieve the first 10 users with userName starting | For example, to retrieve the first 10 users with userName starting | |||
with J, use an empty cursor and set the count to 10: | with J, use an empty cursor and set the count to 10: | |||
GET /Users?filter=userName%20sw%20J&cursor&count=10 | GET /Users?filter=userName%20sw%20J&cursor&count=10 | |||
Host: example.com | Host: example.com | |||
Accept: application/scim+json | Accept: application/scim+json | |||
Authorization: Bearer U8YJcYYRMjbGeepD | Authorization: Bearer U8YJcYYRMjbGeepD | |||
The SCIM service provider in response to the query above returns | The SCIM service provider in response to the query above returns | |||
metadata regarding pagination similar to the following example | metadata regarding pagination similar to the following example | |||
(actual resources removed for brevity): | (Resources omitted for brevity): | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Type: application/scim+json | Content-Type: application/scim+json | |||
{ | { | |||
"totalResults":100, | "totalResults":100, | |||
"itemsPerPage":10, | "itemsPerPage":10, | |||
"nextCursor":"VZUTiyhEQJ94IR", | "nextCursor":"VZUTiyhEQJ94IR", | |||
"schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"], | "schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"], | |||
"Resources":[{ | "Resources":[{ | |||
skipping to change at line 268 ¶ | skipping to change at line 269 ¶ | |||
| | value for subsequent queries. | | | | | value for subsequent queries. | | | |||
+---------------+----------------------------------+---------------+ | +---------------+----------------------------------+---------------+ | |||
| expiredCursor | Cursor has expired. Do not wait | GET (Section | | | expiredCursor | Cursor has expired. Do not wait | GET (Section | | |||
| | longer than service provider's | 3.4.2 of | | | | longer than service provider's | 3.4.2 of | | |||
| | cursorTimeout to request | [RFC7644]) | | | | cursorTimeout to request | [RFC7644]) | | |||
| | additional pages. | | | | | additional pages. | | | |||
+---------------+----------------------------------+---------------+ | +---------------+----------------------------------+---------------+ | |||
| invalidCount | Count value is invalid. Count | GET (Section | | | invalidCount | Count value is invalid. Count | GET (Section | | |||
| | value must be between 0 and | 3.4.2 of | | | | value must be between 0 and | 3.4.2 of | | |||
| | service provider's maxPageSize | [RFC7644]) | | | | service provider's maxPageSize | [RFC7644]) | | |||
| | and must value identical count | | | | | and must be equal to the count | | | |||
| | of the initial query. | | | | | value of the initial query. | | | |||
+---------------+----------------------------------+---------------+ | +---------------+----------------------------------+---------------+ | |||
Table 3: Pagination Errors | Table 3: Pagination Errors | |||
2.2. Sorting | 2.2. Sorting | |||
If sorting is implemented as described Section 3.4.2.3 of [RFC7644], | If sorting is implemented as described Section 3.4.2.3 of [RFC7644], | |||
then cursor-paged results should be sorted. | then cursor-paged results should be sorted. | |||
2.3. Implementing Cursors as the Only Pagination Method | 2.3. Implementing Cursors as the Only Pagination Method | |||
skipping to change at line 341 ¶ | skipping to change at line 342 ¶ | |||
with the /.search path extension execute. When posting to /.search, | with the /.search path extension execute. When posting to /.search, | |||
the client would pass the parameters defined in Section 2 in the body | the client would pass the parameters defined in Section 2 in the body | |||
of the POST request. For example: | of the POST request. For example: | |||
POST /User/.search | POST /User/.search | |||
Host: example.com | Host: example.com | |||
Accept: application/scim+json | Accept: application/scim+json | |||
Authorization: Bearer U8YJcYYRMjbGeepD | Authorization: Bearer U8YJcYYRMjbGeepD | |||
{ | { | |||
"schemas": ["urn:ietf:params:scim:api:messages:2.0:SearchRequest"], | "schemas": [ | |||
"urn:ietf:params:scim:api:messages:2.0:SearchRequest"], | ||||
"attributes": ["displayName", "userName"], | "attributes": ["displayName", "userName"], | |||
"filter": "displayName sw \"smith\"", | "filter": "displayName sw \"smith\"", | |||
"cursor": "", | "cursor": "", | |||
"count": 10 | "count": 10 | |||
} | } | |||
Which would return a result containing a nextCursor value that may be | Which would return a result containing a nextCursor value that may be | |||
used by the client in a subsequent call to return the next page of | used by the client in a subsequent call to return the next page of | |||
resources: | resources: | |||
skipping to change at line 643 ¶ | skipping to change at line 645 ¶ | |||
"Recommendations for Secure Use of Transport Layer | "Recommendations for Secure Use of Transport Layer | |||
Security (TLS) and Datagram Transport Layer Security | Security (TLS) and Datagram Transport Layer Security | |||
(DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November | (DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November | |||
2022, <https://www.rfc-editor.org/info/rfc9325>. | 2022, <https://www.rfc-editor.org/info/rfc9325>. | |||
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Ed., "HTTP Semantics", STD 97, RFC 9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
DOI 10.17487/RFC9110, June 2022, | DOI 10.17487/RFC9110, June 2022, | |||
<https://www.rfc-editor.org/info/rfc9110>. | <https://www.rfc-editor.org/info/rfc9110>. | |||
Acknowledgments and Contributions | Acknowledgments | |||
The authors would like to acknowledge the contribution of Paul Lanzi | ||||
(IDenovate) in leading the writing of the Security Considerations | ||||
section. | ||||
The authors would also like to acknowledge the following individuals | The authors would also like to acknowledge the following individuals | |||
who provided valuable feedback while reviewing the document: | who provided valuable feedback while reviewing the document: Aaron | |||
Parecki, David Brossard, Dean H. Saxe, and Pamela Dingle. | ||||
Aaron Parecki | ||||
Okta | ||||
David Brossard | ||||
Axiomatics | ||||
Dean H. Saxe | Contributors | |||
Independent | ||||
Pamela Dingle | The authors would like to acknowledge the contribution of Paul Lanzi | |||
Microsoft | (IDenovate) in leading the writing of the Security Considerations | |||
section. | ||||
Authors' Addresses | Authors' Addresses | |||
Matt Peterson (editor) | Matt Peterson (editor) | |||
Entrust | Entrust | |||
Email: matt.peterson@entrust.com | Email: matt.peterson@entrust.com | |||
Danny Zollner | Danny Zollner | |||
Independent | Independent | |||
Email: danny@zollnerd.com | Email: danny@zollnerd.com | |||
End of changes. 8 change blocks. | ||||
21 lines changed or deleted | 14 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |