Network Working Group                                       C. McMurtry
Internet Draft                                                Microsoft
Intended status: Proposed Standard                        April 4, 2016
Expires: October 4, 2016



                        SCIM Polling Protocol
                  draft-mcmurtry-scim-polling-01.txt


Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This Internet-Draft will expire on October 4, 2016.

Copyright Notice

   Copyright (c) 2013 IETF Trust and the persons identified as the
   document authors. All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.






McMurtry                   Expires October 4, 2016                [Page 1]


Internet-Draft                SCIM Polling Protocol                April 2016

Abstract

   This document specifies a protocol by which a System for Cross-Domain
   Identity Management Protocol (SCIM) client can poll a SCIM service
   provider for the current states of resources that have changed since a
   given point in time.


Table of Contents

   1. Introduction...................................................2
      1.1. Conventions used in this document.........................3
      1.2. Definitions...............................................3
   2. Polling for Changed Resources..................................3
      2.1. Initializing the Change Watermark.........................3
      2.2. Filtering the Current States of Resources by the
           Change Watermark..........................................5
      2.3. Filtering Changes to Resources by the Change Watermark....7
   3. Security Considerations........................................8
   4. IANA Considerations............................................8
   5. References.....................................................9
      5.1. Normative References......................................9

1. Introduction

   The SCIM protocol [1] is an application-level, REST protocol by which
   clients can send identity data to, and request identity data from a
   service provider.  This document supplements that protocol to permit a
   client  to query a service provider for any changes to the data that may
   have occurred since the client was issued a watermark by the service
   provider.

   If a SCIM client's representation of some resources is to be kept in sync
   with a SCIM service provider's representation of those resources, then one
   solution would be for the client to poll the service provider for changes
   to its representation of the resources.  Another solution would be for the
   client to subscribe to notifications of changes published by the service
   provider.  Because the former solution may be expected to result in
   redundant polls, the latter solution may be preferred.  However, absent a
   tractable way of guaranteeing that any notification that should be
   published by the service provider is successfully processed by the client,
   the latter solution may not be practical.






McMurtry                   Expires October 4, 2016                [Page 2]


Internet-Draft                SCIM Polling Protocol                April 2016

   A SCIM client could poll a service provider for changes by filtering
   resources by the meta.lastModified attribute, as suggested by Section
   3.4.2.2 of the SCIM protocol document [1].  However, that polling solution
   does not permit the service provider to control the polling frequency, or
   the client to request only attributes that were changed since a given
   time.

1.1. Conventions used in this document

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [2].

1.2. Definitions

   Change Watermark
     A SCIM String, as defined in Section 2.3.1 of the SCIM Core Schema
     Document [3].

2. Polling for Changed Resources

2.1. Initializing the Change Watermark

    The example query below requests the current state of all resources:

    GET /Changes
    Host: example.com
    Accept: application/scim+json
    Authorization: Bearer h480djs93hd8

    The following is an example response to the query above:

















McMurtry                   Expires October 4, 2016                [Page 3]


Internet-Draft                SCIM Polling Protocol                April 2016

    HTTP/1.1 200 OK
    Content-Type: application/scim+json

    {
      "schemas":[
        "urn:ietf:params:scim:api:messages:2.0:ListResponse",
        "urn:ietf:params:scim:schemas:extension:polling:1.0:Changed"],
      "totalResults":2,
      "changePollingInterval":"PT10M",
      "changeWatermark":"8AB6AE592FAF4AEF86B1B73D606A92A7",
      "changeWatermarkLifetime":"P1D",
      "Resources":[
       {
         "id":"2819c223-7f76-453a-919d-413861904646",
         "userName":"bjensen",
         "schemas":[
             "urn:ietf:params:scim:schemas:core:2.0:User"]
       },
       {
         "id":"e9e30dba-f08f-4109-8486-d5c6a331660a",
         "displayName":"Tour Guides",
         "schemas":[
             "urn:ietf:params:scim:schemas:core:2.0:Group"]
       }
      ]
    }

    The list response resource includes the attribute, "changeWatermark,"
    which is an extension to the core schema of the resource, in accordance
    with Section 3.2 of the SCIM Core Schema Document [3].  The URI
    of the schema extension is
    "urn:ietf:params:scim:schemas:extension:polling:1.0:Changed".  The
    variety of types of resources included in the response SHOULD include all
    of the types of resources that the service provider supports.

    Pagination parameters can be used as specified by Section 3.4.2.4 of the
    SCIM Protocol document [1].  A value for the "changeWatermark" attribute
    MUST be given on the last page of results, and MUST NOT be given on any
    other page.

    When the "changeWatermark" attribute is included in a response, the
    "changePollingInterval" and "changeWatermarkLifetime" attributes MAY be
    included as well.  The values of those attributes are durations in the
    ISO 8601 format.




McMurtry                   Expires October 4, 2016                [Page 4]


Internet-Draft                SCIM Polling Protocol                April 2016

    Both the service provider and the client must support the
    urn:ietf:params:scim:schemas:extension:polling:1.0:Changed schema
    extension if the client is to be able to poll the service provider for
    changed resources.  The reason is that no attribute included in the the
    SCIM Core Schema Document [3] is suitable for a service provider to use
    to convey to a client a value, relative to which the client would
    late be able to query the service provider for subsequent changes.

    If a value of the "changePollingInterval" is included in the response,
    then the client SHOULD NOT attempt to filter resources by the change
    watermark as described in Section 2.2 below, until the duration specified
    by the value of the "changePollingInterval" has elapsed.  If the client
    attempts to filter resources by the change watermark before the duration
    specified by the value of the "changePollingInterval" has elapsed then
    the service provider MAY reject the filtering request endpoint by
    returning an HTTP response with HTTP status code 429 (Too Many Requests).

    If a value of the "changeWatermarkLifetime" is included in the response,
    then the client SHOULD attempt to filter resources by the change
    watermark as described in Section 2.2 below, before the duration
    specified by the value of the "changeWatermarkLifetime" has elapsed.  If
    the client attempts to filter resources by the change watermark after
    the duration specified by the value of the "changeWatermarkLifetime" has
    elapsed then the service provider MAY respond as it would if did not
    recognize the change watermark as described in Section 2.2 below.

    The client MAY control which attributes SHALL be included with returned
    resources by using the OPTIONAL parameters provided by Section 3.4.2.5 of
    the SCIM Protocol document [1].  That document states that those
    parameters MUST be supported by SCIM service providers.

    If the attributes to be included with returned resources are not specified
    by the client, then the returned resources MUST include the id attribute
    defined in Section 3.1 of the SCIM Core Schema Document [3] and SHOULD
    include all of the attributes of those resources.

    If the service provider does not support polling for changes, then the
    service provider SHALL reject any request to the Changes endpoint by
    returning an HTTP response with HTTP status code 404 (Not Found).

2.2. Filtering the Current States of Resources by the Change Watermark

    The example query below requests the current state of all resources that
    have been changed since the change watermark supplied in the filter was
    issued:



McMurtry                   Expires October 4, 2016                [Page 5]


Internet-Draft                SCIM Polling Protocol                April 2016

    GET /Changes?filter=changeWatermark eq "8AB6AE592FAF4AEF86B1B73D606A92A7"
    Host: example.com
    Accept: application/scim+json
    Authorization: Bearer h480djs93hd8

    The following is an example response to the query above, signifying that
    one resource has been added or changed since the change watermark was
    issued:

    HTTP/1.1 200 OK
    Content-Type: application/scim+json

    {
      "schemas":[
        "urn:ietf:params:scim:api:messages:2.0:ListResponse",
        "urn:ietf:params:scim:schemas:extension:polling:1.0:Changed"],
      "totalResults":1,
      "changePollingInterval":"PT10M",
      "changeWatermark":"ABDA5F9F5B284A198C8D571A706205A1",
      "changeWatermarkLifetime":"P1D",
      "Resources":[
       {
         "id":"e9e30dba-f08f-4109-8486-d5c6a331660a",
         "displayName":"Local Tour Guides",
         "schemas":[
             "urn:ietf:params:scim:schemas:core:2.0:Group"]
       }
      ]
    }

    Here is an example response to the same query above, signifying that no
    resources have been changed since the watermark was issued:

    HTTP/1.1 200 OK
    Content-Type: application/scim+json

    {
      "schemas":[
        "urn:ietf:params:scim:api:messages:2.0:ListResponse",
        "urn:ietf:params:scim:schemas:extension:polling:1.0:Changed"],
      "totalResults":0,
      "changePollingInterval":"PT10M",
      "changeWatermark":"ABDA5F9F5B284A198C8D571A706205A1",
      "changeWatermarkLifetime":"P1D",
      "Resources":[
      ]
    }

McMurtry                   Expires October 4, 2016                [Page 6]


Internet-Draft                SCIM Polling Protocol                April 2016

    If the service provider does not recognize the value of a change watermark
    in a query filter then the response from the server SHALL include an
    empty value for the "changeWatermark" attribute and an empty array as the
    value for the "Resources" attribute.  A client receiving that response MAY
    proceed to initialize a new change watermark as described in Section 2.1
    above.  The following is an example of such a response:

    HTTP/1.1 200 OK
    Content-Type: application/scim+json

    {
      "schemas":[
        "urn:ietf:params:scim:api:messages:2.0:ListResponse",
        "urn:ietf:params:scim:schemas:extension:polling:1.0:Changed"],
      "totalResults":0,
      "changeWatermark":"",
      "Resources":[
      ]
    }

    The client MAY control which attributes SHALL be included with returned
    resources by using the OPTIONAL parameters provided by Section 3.4.2.5 of
    the SCIM Protocol document [1].  That document states that those
    parameters MUST be supported by SCIM service providers.

    If the attributes to be included with returned resources are not specified
    by the client, then the returned resources MUST include the id attribute
    defined in Section 3.1 of the SCIM Core Schema Document [3] and SHOULD
    include all of the attributes of those resources.

2.3. Filtering Changes to Resources by the Change Watermark

    The example query below requests the current state of all resources that
    have been changed since the change watermark supplied in the filter was
    issued, and that, in addition to the id attribute, which MUST be included,
    only those attributes of which the values have changed since the change
    watermark was issued MUST be included with any returned resources:

    GET /Changes?filter=changeWatermark eq "8AB6AE592FAF4AEF86B1B73D606A92A7"
    and changeDelta eq true
    Host: example.com
    Accept: application/scim+json
    Authorization: Bearer h480djs93hd8

    If the service provider does not support the changeDelta parameter then
    then the service provider SHALL reject any request with that parameter
    by returning an HTTP response with HTTP status code 501 (Not Implemented).

McMurtry                   Expires October 4, 2016                [Page 7]


Internet-Draft                SCIM Polling Protocol                April 2016

    The client MAY further control which attributes SHALL be included with
    returned resources by using the OPTIONAL parameters provided by Section
    3.4.2.5 of the SCIM Protocol document [1].  That document states that
    those parameters MUST be supported by SCIM service providers.

    If the attributes to be included with returned resources are not specified
    by the client, then the returned resources MUST include the id attribute
    defined in Section 3.1 of the SCIM Core Schema Document [3], MUST include
    all of the attributes of those resources of which the values have changed
    since the change watermark supplied in the request filter was issued and
    MUST NOT include any other attributes.

    The example query below requests that, for all resources that have
    changed since the change watermark supplied in the filter was issued, the
    id, userName and externalId attributes MUST be included, the members
    attribute must be excluded and any other attributes of which the values
    have changed since the change watermark was issued MUST be included:

    GET /Changes?filter=changeWatermark eq "8AB6AE592FAF4AEF86B1B73D606A92A7"
    and changeDelta eq true&attributes=userName,externalId&
    excludedAttributes=members
    Host: example.com
    Accept: application/scim+json
    Authorization: Bearer h480djs93hd8

3. Security Considerations

   Interactions between SCIM clients and the service providers may contain
   personally identifiable information.  This document does not provide any
   means or guarantee of confidentiality of information passed back in the
   service providers' responses.  Implementers should refer to section 7.2
   of the SCIM Protocol document [1], which specifies that SCIM clients and
   service providers MUST require the use of a transport-layer security
   mechanism when communicating with SCIM service providers.

4. IANA Considerations

   There are no IANA considerations in this document.










McMurtry                   Expires October 4, 2016                [Page 8]


Internet-Draft                SCIM Polling Protocol                April 2016

5. References

5.1. Normative References

   [1]   Drake, T., Mortimore, C., Ansari, M., Grizzle, K., Wahlstroem,
         E., "System for Cross-Domain Identity Management:Protocol",
         draft-ietf-scim-api-00, August 2012.

   [2]   Bradner, S., "Key words for use in RFCs to Indicate Requirement
         Levels", BCP 14, RFC 2119, March 1997.

   [3]   Mortimore, C., Harding, P., Madsen, P., Drake, T., "System for
         Cross-Domain Identity Management:Core Schema", draft-ietf-scim-
         core-schema-00, August 2012.

   [4]  International Organization for Standardization, "Data elements and
        interchange formats - Information interchange - Representation of
        dates and times ", ISO 8601:2004, December 2014, <http://www.iso.org>.

Authors' Addresses

   Craig McMurtry

   Microsoft Corporation
   1 Microsoft Way
   Redmond WA 98052 USA

   Email: craigmcm@microsoft.com




















McMurtry                   Expires October 4, 2016                [Page 9]


Internet-Draft                SCIM Polling Protocol                April 2016





















McMurtry                   Expires October 4, 2016                [Page 8]

Internet-Draft                SCIM Polling Protocol                April 2016