In association with heise online

draft-wahl-scim-jit-profile-00:
SCIM Profile For Enhancing Just-In-Time Provisioning

Author(s): Mark Wahl

This document specifies a profile of the System for Cross-Domain Identity Management Protocol (SCIM) for use by servers which rely upon just-in-time provisioning patterns in a protocol (such as SAML) to create user accounts, and need an additional...


Network Working Group                                           M. Wahl
Internet Draft                                                Microsoft
Intended status: Proposed Standard                    February 18, 2013
Expires: August 2013



           SCIM Profile For Enhancing Just-In-Time Provisioning
                    draft-wahl-scim-jit-profile-00.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 August 18, 2013.

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.






Wahl                   Expires August 18, 2013                 [Page 1]

Internet-Draft      SCIM Profile for use with JIT         February 2013


Abstract

   This document specifies a profile of the System for Cross-Domain
   Identity Management Protocol (SCIM) for use by servers which rely
   upon just-in-time provisioning patterns in a protocol (such as SAML)
   to create user accounts, and need an additional channel to be
   notified of changes to user accounts.

Table of Contents


   1. Introduction...................................................2
      1.1. Conventions used in this document.........................4
   2. Events in the SCIM client database.............................4
      2.1. User is added to the SCIM client database.................4
      2.2. User's username changes...................................4
      2.3. User's display name changes...............................4
      2.4. User's account is disabled................................5
      2.5. User's account is re-enabled..............................5
      2.6. User's account is purged..................................6
   3. SCIM interaction profiles......................................6
      3.1. Locating a user by their user name........................6
      3.2. Modifying a user..........................................7
      3.3. Deleting a user...........................................8
   4. Schema Profile.................................................8
   5. Security Considerations........................................9
   6. IANA Considerations............................................9
   7. References.....................................................9
      7.1. Normative References......................................9
      7.2. Informative References....................................9

1. Introduction

   The SCIM protocol [1] is an application-level, REST protocol for
   provisioning and managing identity data on the web. SCIM can be
   leveraged for numerous use cases, including transfer of attributes to
   a relying party web site (see [4] section 3.6).

   This profile of SCIM illustrates the interactions between a SCIM
   client and a SCIM server, in the following scenario:

   o  The SCIM client has an associated database (SCIM client database)
      of user records, and that SCIM client database is leveraged by an
      identity provider for user authentication.





Wahl                   Expires August 18, 2013                 [Page 2]

Internet-Draft      SCIM Profile for use with JIT         February 2013


   o  The SCIM server has a different associated database (SCIM server
      database) of user records, and that SCIM server database is
      leveraged by a service provider (an application).

   o  The service provider trusts the identity provider to authenticate
      users, and a user's username and other attributes as stored in the
      SCIM client database are transferred (using a federation or
      authentication protocol such as SAML -- not SCIM) from the
      identity provider to the service provider each time a user
      accesses the service provider.

   o  When the service provider receives a user identity from the
      identity provider in the federation/authentication protocol, and
      the service provider cannot find a user record with matching
      username in the SCIM server database, then the service provider
      creates a new record in the SCIM server database.

   o  An identity management system associated with the SCIM client
      database makes changes to users in the SCIM client database, for
      instance to de-activate a user, or change the user's display
      names.  These changes are of interest to the service provider.

   This profile enables the SCIM client to notify the SCIM server of
   changes to users in the SCIM client database, so that the SCIM server
   can make corresponding changes in the SCIM server database, which are
   then available to the service provider.  For example, if the identity
   provider deletes a user, this deletion event can be transferred to
   the service provider via SCIM, so that the service provider can clean
   up any data associated with a user who won't be accessing that
   service provider again. Or if the user changes their username, then
   this can be made known to the service provider, so that subsequent
   requests by that user will be associated to the same account in the
   SCIM server database.

   This profile is not intended to be a comprehensive replication
   protocol; instead, it provides basic consistency for user records for
   in two domain's databases, for all users who choose to access the
   service provider. This profile also explicitly does not create users
   via SCIM, which is assumed to occur out of band from SCIM, such as
   through a "just in time" operation in a federation protocol such as
   SAML [5].  This profile also does not cover establishing common index
   keys of usernames between a SCIM client and a SCIM server. Finally,
   management of other object types besides users, and additional
   attributes beyond basic user status and name, is outside the scope of
   this profile.




Wahl                   Expires August 18, 2013                 [Page 3]

Internet-Draft      SCIM Profile for use with JIT         February 2013


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

2. Events in the SCIM Client Database

   A SCIM client will, either upon specific change in the SCIM client
   database, or at intervals, provide one or more changes to the SCIM
   server.

2.1. User is added to the SCIM client database

   The SCIM client does not notify the SCIM server of this event. (In
   this profile, user creation is assumed to occur out of band from
   SCIM, such as through a "just in time" operation in a federation
   protocol such as SAML [5].)

2.2. User's username changes

   When a user's username changes in the SCIM client database, then the
   SCIM client will perform the following procedure.

   o  The SCIM client will attempt to locate the user in the SCIM server
      using the old username, as described in section 3.1 of this
      document.

   o  If the user could not be located (no matching record is returned
      from the GET request), then the procedure ends.

   o  Otherwise, if the user's record was found in the SCIM server, then
      the SCIM client will send a patch, as described in section 3.2 of
      this document, to set the value of the username attribute to the
      new username.

   o  If the SCIM server returns a 400-series error indication from the
      patch, then the SCIM client SHOULD NOT retry the operation.

2.3. User's display name changes

   When a user's display name changes in the SCIM client database, then
   the SCIM client will perform the following procedure.

   o  The SCIM client will attempt to locate the user in the SCIM server
      using the user's username, as described in section 3.1 of this
      document.


Wahl                   Expires August 18, 2013                 [Page 4]

Internet-Draft      SCIM Profile for use with JIT         February 2013


   o  If the user could not be located (no matching record is returned
      from the GET request), then the procedure ends.

   o  Otherwise, if the user's record was found in the SCIM server, then
      the SCIM client will send a patch, as described in section 3.2 of
      this document, to set the value of the displayName attribute, and
      OPTIONALLY the value of the name attribute, to the new name.

   o  If the SCIM server returns a 400-series error indication from the
      patch, then the SCIM client SHOULD NOT retry the operation.

2.4. User's account is disabled

   When a user's account is disabled in the SCIM client database, then
   the SCIM client will perform the following procedure.

   o  The SCIM client will attempt to locate the user in the SCIM server
      using the user's username, as described in section 3.1 of this
      document.

   o  If the user could not be located (no matching record is returned
      from the GET request), then the procedure ends.

   o  If the user's record was found in the SCIM server, and the GET
      returned the "active" attribute type in that record and that
      attribute had the value false, then the procedure ends.

   o  Otherwise, then the SCIM client will send a patch, as described in
      section 3.2 of this document, to set the value of the active
      attribute to false.

   o  If the SCIM server returns a 400-series error indication from the
      patch, then the SCIM client SHOULD NOT retry the operation.

2.5. User's account is re-enabled

   When a user's account is re-enabled in the SCIM client database after
   having previously been disabled, then the SCIM client will perform
   the following procedure.

   o  The SCIM client will attempt to locate the user in the SCIM server
      using the user's username, as described in section 3.1 of this
      document.

   o  If the user could not be located (no matching record is returned
      from the GET request), then the procedure ends.



Wahl                   Expires August 18, 2013                 [Page 5]

Internet-Draft      SCIM Profile for use with JIT         February 2013


   o  If the user's record was found in the SCIM server, and the GET
      returned the "active" attribute type in that record and that
      attribute had the value true, then the procedure ends.

   o  Otherwise, then the SCIM client will send a patch, as described in
      section 3.2 of this document, to set the value of the active
      attribute to true.

   o  If the SCIM server returns a 400-series error indication from the
      patch, then the SCIM client SHOULD NOT retry the operation.

2.6. User's account is purged

   When a user's account is purged in the SCIM client, then the SCIM
   client will perform the following procedure.

   o  The SCIM client will attempt to locate the user in the SCIM server
      using the user's username, as described in section 3.1 of this
      document.

   o  If the user could not be located (no matching record is returned
      from the GET request), then the procedure ends.

   o  Otherwise, then the SCIM client will send a delete, as described
      in section 3.3 of this document.

   o  If the SCIM server returns a 400-series error indication from the
      delete, then the SCIM client SHOULD NOT retry the operation.

3. SCIM Interaction Profile

3.1. Locating a user by their user name

   In order to modify or delete a user record in a SCIM server, the SCIM
   client needs to first discover the id of that record as stored in the
   SCIM server. This is done by searching for the userName attribute,
   which is defined in section 6.1 of the SCIM Core Schema [3].

   The client can issue a SCIM query request for the namespace ending
   with /Users with a query parameter of a filter for userName matching
   the user name.  For example (lines wrapped for clarity):








Wahl                   Expires August 18, 2013                 [Page 6]

Internet-Draft      SCIM Profile for use with JIT         February 2013


      GET /TBD/scimbase/Users?filter=username%20eq%20%22matt@example.co
      m%22 HTTP/1.1
      Host: example.com
      Accept: application/json
      Authorization: Bearer deadbeef


   If found, the server will respond with a HTTP 200 message containing
   a single result resource, with one or more attributes:

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

      {
        "totalResults":1,
        "schemas":["urn:scim:schemas:core:1.0"],
        "Resources":[
          {
            "id":"2819c223-7f76-453a-919d-413861904646,
   ...
            "userName":"matt@example.com"
          }
        ]
      }


   If not found, the SCIM server will respond with a HTTP 200 message
   containing zero result resources.

3.2. Modifying a user

   For this interaction, the SCIM client needs the id of the user.  If
   it does not already have it, it can obtain the id of the user as
   described in section 3.1.

   If the SCIM client can locate the user record, then the client can
   modify the attributes of the user in the SCIM server by issuing a
   POST with an override to PATCH. The body of the message will be a
   JSON structure with a "schemas" key, and one or more keys.  For
   example (lines wrapped for clarity)









Wahl                   Expires August 18, 2013                 [Page 7]

Internet-Draft      SCIM Profile for use with JIT         February 2013


      POST /TBD/scimbase/Users/acbf3ae7-8463-4692-b4fd-9b4da3f908ce
      HTTP/1.1
      Host: example.com
      Accept: application/json
      Content-Type: application/json
      Authorization: Bearer deadbeef
      X-HTTP-Method-Override: PATCH
      Content-Length: 72

      {
        "schemas": ["urn:scim:schemas:core:1.0"],
        "displayName": "Babs Jensen"
      }


3.3. Deleting a user

   For this interaction, the SCIM client needs the id of the user.  If
   it does not already have it, it can obtain the id of the user as
   described in section 3.1.

   If the SCIM client can locate the user record, then the client can
   request deletion of user in the server by issuing a POST with an
   override to DELETE. For example (lines wrapped for clarity)

      POST /TBD/scimbase/Users/acbf3ae7-8463-4692-b4fd-9b4da3f908ce
      HTTP/1.1
      Host: example.com
      Authorization: Bearer deadbeef
      X-HTTP-Method-Override: DELETE

   If the user cannot be found, the server will return error code 404.

4. Schema Profile

   A server that implements this profile is REQUIRED to recognize and
   store in its database the "username" attribute of the SCIM User
   Schema. (This attribute is described in section 6 of the SCIM Schema
   [3].)

   The SCIM server MUST recognize and SHOULD store the "displayName",
   "active" and "name" (with components "givenName" and "familyName")
   attributes of the SCIM User Schema. If the SCIM server does not store
   one or more of those attributes, then any changes to them requested
   by the SCIM client SHOULD be silently discarded.




Wahl                   Expires August 18, 2013                 [Page 8]

Internet-Draft      SCIM Profile for use with JIT         February 2013


   The SCIM server MUST recognize the "schemas" attribute of the SCIM
   Core Schema (in section 5 of the SCIM Schema [3]), but the value is
   not modified by the SCIM client in this profile.

   The password attribute is not used in this profile.

5. Security Considerations

   As described in the SCIM protocol security considerations [1], the
   SCIM interactions are to be protected using TLS.

   Note that for each of the interactions in section 3, the SCIM client
   will need an OAuth bearer token. Such tokens are normally short-lived
   (hours). How the SCIM client locates an OAuth endpoint to obtain this
   token is currently outside the scope of this document.

6. IANA Considerations

   There are no IANA considerations in this document.

7. References

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

7.2. Informative References

   [4]   Hunt, P., Khasnabish, B., Nadalin, A., Zeltsan, Z., Li, K.,
         "SCIM Use Cases", draft-zeltsan-scim-use-cases-01, February
         2013.

   [5]   Cantor, S., Kemp, J., Philpott, R., Maler, E., "Assertions and
         Protocols for the OASIS Security Assertion Markup Language
         (SAML) V2.0", http://docs.oasis-
         open.org/security/saml/v2.0/saml-core-2.0-os.pdf , March 2005.




Wahl                   Expires August 18, 2013                 [Page 9]

Internet-Draft      SCIM Profile for use with JIT         February 2013


Authors' Addresses

   Mark Wahl

   Microsoft Corporation
   1 Microsoft Way
   Redmond WA 98052 USA

   Email: mark.wahl@microsoft.com








































Wahl                   Expires August 18, 2013                [Page 10]





  • May's Community Calendar






The H Open

The H Security

The H Developer

The H Internet Toolkit