Internet-Draft | draft-ietf-scim-events | January 2023 |
Hunt & Cam-Winget | Expires 24 July 2023 | [Page] |
This specification defines a set of Security Event types using the Security Event Token format (RFC8417). These events can be used across domains by SCIM Service Providers and receivers to exchange security event signals used for: request confirmations, replication, provisioning co-ordination, and security signals.¶
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 24 July 2023.¶
Copyright (c) 2023 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 (https://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. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
This specification defines Security Events for SCIM service providers and receivers as specified by the Security Event Tokens (SET) [RFC8417] specificaiton. These events include: asynchronous transaction confirmations, replication, provisioning co-ordination, and security signals.¶
In a typical HTTP client-server relationship a SCIM Protocol Client issues commands to a SCIM Server using HTTP methods such as GET, POST, PATCH, and DELETE [RFC7644] in many cases to effect a state change. Subsequently, when multiple SCIM protocol client entities update SCIM resources, an individual client may need to be informed of changes that occur over time. This may be achieved through the use of event messages or signals in the form of Security Event Tokens (SET). SET tokens convey information about changes that have occured in a publishing domain that may be of interest to a receiving domain. Unlike SCIM Protocol requests, Security Events do not describe actions that a receiver must take, rather they are simple statements of fact about changes that have already occurred. The intent, is to allow the event receiver to determine the best follow-uip action to take within the context of the receiving domain. This gives each domain independent operation and control.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
For purposes of readability examples are not URL encoded. Implementers MUST percent encode URLs as described in Section 2.1 of [RFC3986].¶
Throughout this documents all figures MAY contain spaces and extra line-wrapping for readability and space limitations. Similarly, some URI's contained within examples, have been shortened for space and readability reasons.¶
This specification uses definitions from the following specifications:¶
Additionally, the following terms are defined:¶
A SCIM event is a message, in the form of a Security Event Token [RFC8417]. A SET event consists of a set of standard JWT "top-level" claims, plus one or more Event Payload claims that contains additional information relevant to a defined event.¶
SCIM Events SHALL use the "sub_id" claim defined by Subject Identifiers for
Security Event Tokens [SUBID] specification to identify the subject of events. Since it is possible
to issue a SCIM SET Event with multiple events, the sub_id
claim MUST NOT be contained
within an Event payload. A SET with multiple event URI's SHALL indicate that the events originate
from the same transaction or resource state change. Finally, to distinguish SET
Events from JWT tokens, the JWT "sub" claim MUST NOT be used.¶
{ "iss": "issuer.example.com", "iat": 1508184845, "aud": "aud.example.com", "sub_id": { "format": "scim", "uri": "/Users/2b2f880af6674ac284bae9381673d462", "externalId": "alice@example.com" }, "events": { ... } }
The top-level claim "sub_id" contains a sub-claim "format" whose value is set to scim
to indicate
the other attributes present are SCIM attributes. The following sub_id attributes are defined:¶
id
. For example /Users/2b2f880af6674ac284bae9381673d462
.
This attributes MUST be provided in a SCIM Event sub_id
claim. Note the relative path
is the path component after the SCIM Service Provider Base URI as defined in Section 1.3 [RFC7644].
In cases where the Event Receiver is unable to match a URI, the Event Receiver MAY issue a call-back
to a previously agreedn SCIM Service Provider Base URI plus the relative uri
value and
perform a SCIM GET request per Section 3.4.1 [RFC7644].¶
externalId
value of the SCIM Resource that MAY be used by a receiver to identify
the corresponding resource in the Event Receiver's domain.¶
uri
claim.¶
id
and externalId
) are insufficient to
identfy a common resource between an Event Publisher and Event Receiver.¶
The following attributes are available for all events defined. Some attributes are defined as SET/JWT claims, while others are "Event Payload" claims as defined in Section 1.2 [RFC8417].¶
jti
claim MAY be used.
Where txn
identifies uniqueness within a SCIM Service Provider, multiple SETs may be
issued each with distinct JTI's stemming from a common originating transaction with identical
txn
values.¶
id
value.¶
"attributes": ["username","emails"]
¶
Only one of data
or
attributes
claims SHALL be provided depending on the event definition.¶
This specifications defines a new URI prefix urn:ietf:params:event:SCIM
which is used
as the prefix for the following defined SCIM Events.¶
This section defines events related to notices about which resources are being added or removed from
an event feed. These events are used in Co-operative Provisioning scenarios where only a sub-set of
entities are shared across an Event Feed. The URI prefix for these events is:
urn:ietf:params:event:SCIM:feed
¶
The specified resource was added to the Event Feed. A feed:add
does not indicate a
resource is new or has been recently created. For example,
an existing user has had a new role (e.g. CRM_User) added to
their profile which has caused their resource to join a feed.¶
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "txn": "b7b953f11cc6489bbfb87834747cc4c1", "sub_id": { "format": "scim", "uri": "/Users/2b2f880af6674ac284bae9381673d462", "externalId": "jdoe" }, "events":{ "urn:ietf:params:event:SCIM:feed:add": {} }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
The specified resource has been removed from the feed. Removal does not indicate that the resource was deleted or otherwise deactivated. This event has minimal disclosure.¶
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "sub_id": { "format": "scim", "uri": "/Users/2b2f880af6674ac284bae9381673d462" "externalId": "jdoe", }, "events":{ "urn:ietf:params:event:SCIM:feed:remove": {} }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
This section defines provisioning events that have occurred within a
SCIM Service Provider. These events are used in both Domain Based Replication (DBR) and Co-operative
Provisioning (CP) mode. The URI prefix for these events is:
urn:ietf:params:event:SCIM:prov
¶
Indicates a new SCIM resource has been created by the SCIM Service Provider
and has been added to the Event Feed. Note that when a create
event is sent,
a corresponding urn:ietf:params:event:SCIM:feed:add
event SHOULD NOT be issued in the
same feed. In DBR mode mode, all claims of the new resource are included. In CP mode,
the attributes
returned discloses what attributes were created at the publisher. In
DBR mode, the set of values reflecting the final
state of the resource at the service provider are provided
using the "data" attribute. Note that because this is a replication request, the uri
attribute that was assigned by the SCIM Service Provider is shared so that all replicas in the
domain use the same resource identifier.¶
{ "jti": "4d3559ec67504aaba65d40b0363faad8", "iat": 1458496404, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754", "https://scim.example.com/Feeds/5d7604516b1d08641d7676ee7" ], "sub_id": { "format": "scim", "uri": "/Users/44f6142df96bd6ab61e7521d9", "externalId":"jdoe" } "events":{ "urn:ietf:params:event:SCIM:prov:create":{ "data":{ "schemas":[ "urn:ietf:params:scim:schemas:core:2.0:User"], "emails":[ {"type":"work","value":"jdoe@example.com"} ], "userName":"jdoe", "name":{ "givenName":"John", "familyName":"Doe" } } } } }
{ "jti": "4d3559ec67504aaba65d40b0363faad8", "iat": 1458496404, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754", "https://scim.example.com/Feeds/5d7604516b1d08641d7676ee7" ], "sub_id": { "format": "scim", "uri": "/Users/44f6142df96bd6ab61e7521d9", "externalId": "jdoe" }, "events": { "urn:ietf:params:event:SCIM:prov:create": { "attributes": [ "id", "name", "userName", "password", "emails" ] } } }
The event above notifies the Event Receiver which attributes
have changed but does not convey
the actual information. The Event Receiver MAY retrieve that information
by performing a SCIM GET to the sub
value specified.¶
The specified
resource has been updated using SCIM PATCH. When in DBR mode, the
data
attribute contains the PATCH Request body. In CP mode, only
the modified attribute name is included.¶
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "sub_id": { "format": "scim", "uri": "/Groups/176f397ec4c44b94b2cfcb759780b8c2", "externalId": "crmUsers" }, "events":{ "urn:ietf:params:event:SCIM:prov:patch": { "version": "a330bc54f0671c9", "data": { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations":[{ "op":"add", "path":"members", "value":[{ "display": "Babs Jensen", "$ref": "/Users/2819c223...413861904646", "value": "2819c223-7f76-453a-919d-413861904646" }] }] } } }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "sub_id": { "format": "scim", "uri": "/Groups/176f397ec4c44b94b2cfcb759780b8c2", "externalId": "crmUsers" }, "events":{ "urn:ietf:params:event:SCIM:prov:patch": { "attributes": ["members"], "version": "a330bc54f0671c9" } }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
The specified resource has been updated (e.g. one or more attributes has
changed). In DBR mode, the SCIM PUT request body is included in the data
attribute; or, In CP mode the modified attributes are listed using attributes
.¶
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "sub_id": { "format": "scim", "uri": "/Users/2819c223-7f76-453a-919d-413861904646" }, "events":{ "urn:ietf:params:event:SCIM:prov:put": { "version": "a330bc54f0671c9", "data": { "schemas":["urn:ietf:params:scim:schemas:core:2.0:User"], "userName":"jdoe", "externalId":"jdoe", "name":{ "formatted":"Mr. Jon Jack Doe III", "familyName":"Doe", "givenName":"Jon", "middleName":"Jack" }, "roles":[], "emails":[ {"value":"jdoe@example.com"}, {"value":"anon@jdoe.org"} ] } } }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "sub_id": { "format": "scim", "uri": "/Users/2819c223-7f76-453a-919d-413861904646" }, "events":{ "urn:ietf:params:event:SCIM:prov:put": { "version": "a330bc54f0671c9", "attributes": ["userName","externalId","name","roles","emails"] } }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
The specified resource has been deleted from the SCIM publisher.
The resource is also removed from the feed. When a
DELETE is sent, a corresponding feedRemove
is not issued. A delete
event has minimal disclosure profile only.¶
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "sub_id": { "format": "scim", "uri": "/Users/2b2f880af6674ac284bae9381673d462", "externalId": "jDoe" }, "events":{ "urn:ietf:params:event:SCIM:prov:delete": {} }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
The specified resource (e.g. User) has been activated. This event indicates a high-level change in state as agreed between the Event Publisher and Event Receiver. For example, an activated resource is one that can now have an active session (may log in) from a security perspective.¶
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "sub_id": { "format": "scim", "uri": "/Users/2b2f880af6674ac284bae9381673d462" }, "events":{ "urn:ietf:params:event:SCIM:prov:activate": {} }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
The specified resource (e.g. User) has been deactivated and disabled. The exact meaning must be agreed to by the Event Publisher and its corresponding Event Receiver. Typically this means the sub may no longer have an active security session. As with the activate event, this event has minimal disclosure requirements.¶
This section defines security signal events that have occured within a
SCIM Service Provider.The URI prefix for these events is:
urn:ietf:params:event:SCIM:signal
¶
A new authentication method has been added to the User profile. As attackers often use new authentication methods to lock-out Users from their account, this signal can be used by the receiver that the chance of account them may be temporarily elevated. The receiver MAY also wish to take action such as resetting current authorizations or sessions.¶
{ "jti": "3d0c3cf797584bd193bd0fb1bd4e7d30", "sub_id": { "format": "scim", "uri": "/Users/44f6142df96bd6ab61e7521d9" }, "events":{ "urn:ietf:params:event:SCIM:sig:authMethod": {} }, "iat": 1458496025, "iss": "https://scim.example.com" }
The specified resource (e.g. User) has changed its password or the password
has been reset. When the password has changed, the
attributes
attribute is supplied with the value "password".¶
{ "jti": "3d0c3cf797584bd193bd0fb1bd4e7d30", "sub_id": { "format": "scim", "uri": "/Users/44f6142df96bd6ab61e7521d9" }, "events": { "urn:ietf:params:event:SCIM:sig:pwdReset": {} }, "iat": 1458496025, "iss": "https://scim.example.com", "aud":[ "https://jhub.example.com/Feeds/98d52461fa5bbc879593b7754", "https://jhub.example.com/Feeds/5d7604516b1d08641d7676ee7" ] }
This section defines events related miscellaneous events such as Asynchronous Request complettion that have occured within a
SCIM Service Provider. The URI prefix for these events is:
urn:ietf:params:event:SCIM:misc
¶
This event signals the completion of a SCIM request. The payload contains the attributes defined in SCIM Bulk Section 3.7 [RFC7644] and is the same a single SCIM Bulk Response Operation as per Section 3.7.3.¶
{ "jti": "6164f3bbf6ff41a88dc94f18cb0620e8", "sub_id": { "format": "scim", "uri": "/Users/b7c14771-226c-4d05-8860-134711653041" }, "txn": "7880fc68a2f0428ebbb5a906e5aeae53", "events":{ "urn:ietf:params:event:SCIM:misc:asyncResp": { "method": "PUT", "version": "W\/\"huJj29dMNgu3WXPD\"", "status": "200" } }, "iat": 1458505044, "iss":"https://scim.example.com", "aud":[ "https://scim.example.com/Feeds/98d52461fa5bbc879593b7754" ] }
For the purposes of SCIM, this draft uses the following methods exchange of events using the Security Event Token exchange methods:¶
In the figure below, a possible distribution architecture is shown. This specification is only normatively concerned with the actual Security Event Transfer mechanism. SCIM Service providers MAY choose to implement SET transfer directly or they may use a method of allowing a single Event Publisher to assemble streams of events for transfer to a receiver. Likewise, on the receiving side, the only normative requirement is to be able to receive events and implement storage of Events to local recovery needs.¶
┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ │ │ │ │ │ │ SCIM Server 1 │ │ SCIM Server 2 │ ... │ SCIM Server n │ │ │ │ │ │ │ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ │ │ │ ┌───────▼──────────────────▼─────────────────────▼───────┐ │ Local Event Delivery System │ └───────────────────────────┬────────────────────▲───────┘ │ │ ┌────────▼────────┐ ┌──────┴───────┐ │ │ │ Recovery │ │ Event Publisher ◄────► Buffer │ │ │ └──────────────┘ └────────┬────────┘ ┌── │ │ ┌────────▼────────┐ │ │ SET Trans Txmtr │ │ │ (RFC 8935/8936) │ Minimum │ └────────┬────────┘ Interop │ │ Requirement│ │ │ ┌────────▼────────┐ ┌──────────────┐ │ │ SET Trans Rcvr │ │ Event │ │ │ (RFC 8935/8936) ├────► Storage │ │ └────────┬────────┘ └──────────────┘ └── │ ┌────────▼────────┐ │ Receiver Domain │ │ Event Processor │ └────────┬────────┘ │ ▼
As Security Event Tokens are based on JWT tokens, it is possible to exchange events by a number of transfer mechanisms such as: XMPP [RFC6120], HTTP [RFC7540], and Message Buses (e.g. [RFC3259], Apache Kafka [Kafka]). For example, on the publishing side, a cluster or network of SCIM servers may publish events to a common SET publisher service for distribution to 1 or more receivers. The Event Publisher MAY be incorporated directly into each SCIM Server, or a Local Event Delivery System might be used to collect events for an Event Publisher service for forwarding. How this is done is up to the implementer. This specification is only concerned with the interoperability of SET transfer between domains using [RFC8935] and [RFC8936].¶
The SET Transfer specifications provide a short-term method of recovery to ensure SET Events are successfully transferred. Once a receiving domain has successfully stored events to its own recovery needs, the receiving domain acknowledges the transfer of SET Events to the publisher using the method defined in [RFC8935] and [RFC8936]. SET does not specify local server event recovery mechanisms, this is up to the service implementation within each domain. This is done to enable cross-domain independence between domains. As an example, a hosted SCIM service provider with a series of SCIM servers replicates through a proprietary system. An enterprise customer who is the common client across both providers wants to establish a single administrative domain and wants to share SCIM change events between providers. Each domain has its own SCIM implementation and its own local replication strategy. The publishing domain issues events that the receiving domain picks up. Once the receiving domain has processed the event, the receiving domains own internal replication and recovery takes over. Because there is no need for the publishing domain to retain the event, it has the option to purge the event once the receiving domain has acknowledged it. This may be particularly critical if a publishing domain has dozens or even thousands of event receiving domains each with their own sub-set of data. Retaining all events for all receivers would become impracticle.¶
This specification uses Security Event Tokens as the message format for SCIM Events. As SETs are based on JWT tokens [RFC7519], they can be transmitted unsecurity, signed, or encrypted. For more information see the JWT Cookbook specification [RFC7520] for examples. The decision on whether to use JWS and JWE depends on operational considerations. For each SCIM Feed relationship, it is up to deployers to decide on signing, encryption and algorithm requirements. Deployers SHOULD be aware that too much emphasis on turning on every possible encryption feature may cause operational performance to suffer. Deployers MUST weigh the security trade-offs of up-to-date SCIM services, vs. the potential information loss of an event.¶
{"alg":"none"}
.
This mode speeds up processing and is best used in DBR scenarios. Unencrypted tokens MUST be
transferred over authenticated TLS layer encryption and SHOULD only be used in a restricted
network environment.¶
Security Event Tokens MAY be delivered using push-based HTTP delivery [RFC8935], or pull-based HTTP Polling [RFC8936]. Both of these protocols define a method of transfer and acknowledgement to prevent loss-of-information and to provide re-transmission and recover. The method of transfer is best decided by considering the following advantages and disadvantages in a production scenario:¶
Push-based delivery has the following advantages:¶
Push-delivery has the following disadvantages:¶
Delivery by HTTP Polling has the following advantages:¶
Polling-based delivery has the following disadvantages:¶
This specification depends on the Security Considerations for [RFC8417].¶
The use of Json Web Encryption (JWE) [RFC7516] can impose performance limitations when used in high event frequency scenarios. JWE is primarily useful only when the transfer of SETs involves an unsecured transfer method (e.g. URL) that would not otherwise be protected by the transfer protocol (e.g. SET Transfer over TLS [RFC5246]).¶
For SCIM Provisioning events, the long-term series of changes may be critical to both sides. As such Event Publishers SHOULD consider storing events for receivers for longer periods of time in the case of an extended SET Transfer service failure. Similarly Event Receivers MUST ensure events are persisted directly or indirectly sufficient to meet local recovery needs before acknowledging received SET Events.¶
When SET Events are stored for future delivery or retained local recovery MUST be limited only to the parties needed to support recovery or SET forwarding.¶
JWS [RFC7515] signed SET Events SHOULD be used to verify authenticity of the origin of a SET Event. Validating event signatures is both useful on the initial transfer of SET Events, and may also be useful for auditing purposes.¶
In operation, some SCIM resources such as SCIM Groups may have a high rate of change. Implementors and operators SHOULD consider use of throttling techniques to balance immediacy and frequency. For example, a large group whose members change dozens of times per second may not need discrete SET Patch Events per change. Instead, issuing a single consolidated change per second or even minute may be beneficial to keeping Event Receivers up-to-date. Likewise, a Co-ordinated Provisioning Event Receiver (Section 2.2), does not necessarily need to retrieve the full Group on every change request. It MAY choose to do lookups on a less frequent scale for reconciliation.¶
This specification enables the sharing of information between domains. The specification assumes that implementers and deployers are operating under one of the following scenarios:¶
In general the sharing of SCIM Event information falls within a pre-existing SCIM Client and Service Provider relationship. In the case of SCIM Risk Signals Events, the existing relationship may need to be reviewed. By their nature, however, SCIM Signals carry no personal information and aid parties in ensuring the protection of privacy information and account security.¶
This section registers the schema extensions found in Section 2 in the "Event" registry as per Section 4.2 [RFC8417].¶
Summary of schema URI registrations:¶
Schema URI | Name | Reference |
---|---|---|
urn:ietf:params:event:SCIM:feed:add | Resource added to Feed Event | Section 2.3.1 |
urn:ietf:params:event:SCIM:feed:remove | Remove resouce From Feed Event | Section 2.3.2 |
urn:ietf:params:event:SCIM:prov:create | New Resource Event | Section 2.4.1 |
urn:ietf:params:event:SCIM:prov:patch | Resource Patch Event | Section 2.4.2 |
urn:ietf:params:event:SCIM:prov:put | Resource Put Event | Section 2.4.3 |
urn:ietf:params:event:SCIM:prov:delete | Resource Deleted Event | Section 2.4.4 |
urn:ietf:params:event:SCIM:prov:activate | Resource Activated Event | Section 2.4.5 |
urn:ietf:params:event:SCIM:prov:deactivate | Resource Deactivated Event | Section 2.4.6 |
urn:ietf:params:event:SCIM:sig:authMethod | New authentication method added | Section 2.5.1 |
urn:ietf:params:event:SCIM:sig:pwdReset | Password Reset Event | Section 2.5.2 |
SCIM Events may be used in a number of ways. The following non-normative sections describe some of the expected uses.¶
The objective of "Domain Based Replication" events (DBR) is to synchronize resource changes between SCIM service providers in a common administrative domain. In this mode, complete information about changes for resources are shared between replicas for immediate processing.¶
From a security perspective, it is assumed that servers sharing DBR events are secured by a common access policy and all servers are required to be up-to-date. From a Privacy Perspective, because all servers are in the same administrative domain, the primary objective is to keep individual service provider nodes or cluster synchronized.¶
In "Co-ordinated Provisioning" (CP), SCIM resource change events perform the function of change notification without the need to provide raw data. In any Event Publisher and Receiver relationship, the set of SCIM resources (e.g. Users) that are linked or co-ordinated is managed within the context of a an event feed and which MAY be a subset of the total set of resources on either side. For example, an event feed could be limited to users who have consented to the sharing of information between domains. To support capability, "feed" specific events are defined to indicate the addition and removal of SCIM resources from a feed. For example, when a user consents to the sharing of information between domains, events about the User MAY be added to the feed between the Event Publisher and Receiver.¶
In CP mode, the receiver of an event must call back to the originating SCIM Service Provider (e.g. using a SCIM GET request) to reconcile the newly changed resource in order to obtain the changes.¶
Co-ordinated provisioning has the following benefits:¶
A disadvantage of the CP approach is that it may be considered costly in the sense that each event received might trigger a call back to the event issuer. This cost should be weighed against the cost producing filtered information in each event for each receiver. Further a receiver is not required to make a call-back on every provisioning event.¶
It is assumed that an underlying relationship between domains exists that permits the exchange of personal information and credentials. For example the decision to perform SCIM provisioning operations at the SCIM Service Provider issuing change events, was previously authorized and appropriate confidentiality and privacy agreements have been met in cross-domain scenarios. Examples of this might be services for hire by an employer or a specific consent from an end-user as part of a online authorization where individual consent was obtained.¶
When sharing information between parties, CP Events minimize the information shared in each message requiring the Security Event Receiver to call back to the event publisher to retrieve more information if required. In this way, the Event Publisher is able to regular access to information through normal SCIM protocol access restrictions.¶
The sharing of risk signals (RS) is used for the purpose of co-ordinating account change events between a SCIM Service Provider and another related security service. For example, when a password or other authentication factor has changed, a receiving security system can choose to terminate current User sessions to force a re-authentication against the modified User resource.¶
These signals MAY also include those described in the OpenID Shared Signals Working Group Specifications [SSWG].¶
These events are intended for receivers where there is a prior relationship on behalf of the users described in the SCIM Service Provider. The intent of sharing information about security events is for the purpose of securing a user account and ensuring privacy.¶
A SCIM provisioning client MAY wish to request "asynchronous" processing using the "Prefer Header
for HTTP", Section 4.1 [RFC7240]. In this mode, a normal SCIM protocol POST, PUT,
PATCH, or DELETE request is
made, and the HTTP Header Prefer
is included with the value respond-async
.
When a SCIM Client signals respond-async, the SCIM server response changes to HTTP Status 202 Accepted
as defined in [RFC7231]. The Location
header returned is the final resource
location and no payload is present. Following acceptance of an asynchronous request, a notification of
completion can be issued using the Async Event Notification per Section 2.6.1. The
location returned SHALL correspond to the sub claim in the future Async Event SET message.¶
Thanks to Morteza Ansari who contributed significantly to draft-hunt-idevent-scim-00, upon which this draft is based.¶
The editor would like to thank the participants in the SCIM working group and the id-event list for their support of this specification.¶
Draft 00 - PH - First Draft¶