Internet-Draft SCIM Referential Value Location Extensio July 2022
Zollner Expires 30 January 2023 [Page]
Workgroup:
SCIM
Internet-Draft:
draft-zollner-scim-referential-value-location-01
Published:
Intended Status:
Informational
Expires:
Author:
D. Zollner
Microsoft

SCIM Referential Value Location Extension

Abstract

The System for Cross-domain Identity Management standard's schema RFC [RFC7643], as well as custom schemas, may have attribute values that have a finite set of acceptable values. These acceptable values are frequently tied to a value on another resource. For instance, an organization may only allow values in the Enterprise User schema's costCenter attribute that are valid identifiers of cost centers defined in another location. This draft aims to provide a way for a SCIM client to determine if an attribute in a schema is limited to a specific set of values, and where those values may be located on another SCIM resource type.

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). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

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

This Internet-Draft will expire on 30 January 2023.

1. Introduction

The System for Cross-domain Identity Management standard's schema RFC [RFC7643], as well as custom schemas, may have attribute values that have a finite set of acceptable values. These acceptable values are frequently tied to a value on another resource. For instance, an organization may only allow values in the Enterprise User schema's costCenter attribute that are valid identifiers of existing cost centers defined in another location. This draft aims to provide a way for a SCIM client to determine if an attribute in a schema is limited to a specific set of values, and where those values may be located on another SCIM resource type.

The mechanism that this draft proposes is an extension to the schema of [RFC7643]'s "attributes" attribute in the schema definition. This extension will define three new sub-attributes of the "attributes" attribute. These attributes will indicate if the attribute is constrained by a referential relationship, and if it is what resource type and attribute is the value linked to.

This problem that this aims to solve is a problem of discovery and efficiency. Without a standardized way to determine when an attribute is constrained by the existence of and linked to the values of another resource's attribute, a SCIM client cannot know which values will be accepted and which will fail. This leads to failed requests due to invalid values being provided for attributes in requests, and reduces efficiency and success rate of requests being made.

2. ServiceProviderConfig Extension

SCIM Service Providers that have implemented this extension must advertise its availability via the following serviceProviderConfig attribute:

referentialValueLocation

A complex type that specifies configuration related to referential value location information. REQUIRED.

supported

A boolean type that indicates if the referential value location extension has been implemented. REQUIRED.

3. Schema Definition Extension

This extension implements the following new sub-attributes of the "attributes" attribute in urn:ietf:params:scim:schemas:core:2.0:Schema as defined in [RFC7643]. These attributes are:

referentialValue

A complex type that indicates if the value of the attribute is constrained by values present on a SCIM resource type. REQUIRED.

required

A boolean type that indicates if the attribute's allowed values are constrained by those present on a SCIM resource type.

referentialValueURI

A reference type that contains the URI of the SCIM schema attribute that the attribute is constrained against. REQUIRED if required is true.

referentialValueResourceType

A reference type that contains the relative URI of the root resource type that is referenced. REQUIRED if required is true.

4. Normative Examples

4.1. Manager Example

The following example shows a section of the core user schema adapted to support the referential value location attributes in this extension for the user resource's "manager" attribute.

{
        "name" : "manager",
        "type" : "complex",
        "multiValued" : false,
        "description" : "The User's manager.  A complex type that
optionally allows service providers to represent organizational
hierarchy by referencing the 'id' attribute of another User.",
        "required" : false,
        "subAttributes" : [
          {
            "name" : "value",
            "type" : "string",
            "multiValued" : false,
            "description" : "The id of the SCIM resource representing
the User's manager.  REQUIRED.",
            "required" : false,
            "caseExact" : false,
            "mutability" : "readWrite",
            "returned" : "default",
            "uniqueness" : "none"
            "referentialValue" : {
                "required" : true,
                "referentialValueURI" : "urn:ietf:params:scim:
                    schemas:core:2.0:User:id",
                "referentialValueResourceType" : "Users"
            }
          }
          ...

In the above example, the extension indicates that the value of the user resource's "manager" attribute is constrained by the id value of the core schema's User resource located at <baseUrl>/Users.

A request of GET <baseUrl>/Users would return a list of results containing all visible cost centers. The id value of any of the users returned should be valid for the value of the user resource's "manager" attribute.

5. Cost Center Example

The following example shows a section of the Enterprise User schema adapted to support the referential value location attributes in this extension for the user resource's enterprise costCenter attribute.

      {
        "name" : "costCenter",
        "type" : "string",
        "multiValued" : false,
        "description" : "Identifies the name of a cost center.",
        "required" : false,
        "caseExact" : false,
        "mutability" : "readWrite",
        "returned" : "default",
        "uniqueness" : "none",
        "referentialValue" : {
            "required" : true,
            "referentialValueURI" : "urn:foo:bar:schema:corporate:
                costCenter:displayName",
            "referentialValueResourceType" : "costCenters"
        }
      },
        ...

In the above example, the extension indicates that the value of urn:ietf:params:scim:schemas:enterprise:2.0:User:costCenter is constrained by the displayName value of a custom resource located at <baseUrl>/costCenters.

A request of GET <baseUrl>/costCenters would return a list of results containing all visible cost centers. The displayName values of any of the cost centers returned by the request should be valid for the value of the user resource's urn:ietf:params:Scim:schemas:enterprise:2.0:User:costCenter attribute.

6. Change Log

v00 - July 28, 2022: Initial version v00 - July 29, 2022: Fixes of small errors in initial draft's examples and incorrect title

Author's Address

Danny Zollner
Microsoft