| Internet-Draft | IPSIE AL1 SCIM | December 2025 |
| Maguire & Schreiber | Expires 15 June 2026 | [Page] |
This document defines a profile for SCIM 2.0 to meet the security and interoperability requirements for identity lifecycle management within enterprises. Within the context of SCIM, The profile establishes requirements for provisioning, account management, client authentication, and identity synchronization.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at https://openid.github.io/ipsie-scim-al1/draft-ipsie-scim-al1-profile.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-ipsie-scim-al1-profile/.¶
Discussion of this document takes place on the IPSIE Working Group mailing list (mailto:openid-specs-ipsie@lists.openid.net), which is archived at https://openid.net/wg/ipsie/.¶
Source for this draft and an issue tracker can be found at https://github.com/openid/ipsie-scim-al1.¶
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 15 June 2026.¶
Copyright (c) 2025 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.¶
This document defines the IPSIE Account Lifecycle 1 (AL1) Profile for SCIM 2.0. It provides a clear reference for SCIM deployments that require a well-defined security baseline meeting best practices for interoperable enterprise identity management.¶
The profile addresses critical aspects of secure identity management, with particular emphasis on:¶
Client authentication¶
Retrieve, add, and modify Users.¶
Retrieve, add, and modify Groups.¶
Synchronization of data from the Identity Service to the Application¶
By adhering to this profile, organizations can implement SCIM-based integrations that meet stringent security requirements while ensuring interoperability across different implementations.¶
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.¶
SCIM¶
SCIM Client¶
An application that uses the SCIM protocol to manage identity data maintained by the service provider. The client initiates SCIM HTTP requests to a target service provider.¶
SCIM Service Provider¶
An HTTP web application that provides identity information via the SCIM protocol.¶
Role¶
TODO: Add definition¶
Identity Service¶
Acts as the SCIM client, initiating all provisioning operations.¶
Application¶
Acts as the SCIM service provider, hosting SCIM endpoints and processing all provisioning requests.¶
Note: When SCIM is applied to the context of IPISIE, the Identity Service acts as the SCIM client and the Application acts as the SCIM service provider. The document will use the Role terms below for consistency between across IPSIE Profiles.¶
The Identity Service and Application MUST use OAuth 2.0 [RFC6749] for authentication and authorization of SCIM protocol.¶
// TODO: Should this link back to SL1?¶
// TODO: Expand Section¶
The following requirements ensure consistent and secure handling of access tokens and authorization server configuration:¶
// TODO: Be more explicit with token names.¶
OAuth 2.0 interactions MUST comply with JWT Client Authentication as defined in [RFC7523]¶
The token SHALL exchange a signed JWT for an access token and present that token in the {Authorization: Bearer} header on all subsequent SCIM requests.¶
The token MUST contain a "token_endpoint" value which is the URL of the Identity Service's OAuth 2.0 token endpoint.¶
The Acess Token MUST include the "scim" scope and not grant broader permissions.¶
All Authorization Server parameters SHOULD be discovered from OAuth Authorization Server metadata as defined in [RFC8414].¶
The Identity Service SHOULD expose a jwks_uri to allow the Application to perform signature verification¶
The Identity Service SHALL implement the required functionality of a SCIM client as defined in [RFC7643] and [RFC7644].¶
The Application SHALL implement the required functionality of a SCIM service provider as defined in [RFC7643] and [RFC7644].¶
All SCIM operations SHALL be authenticated and authorized via OAuth 2.0 as specified in Section 3.1.¶
Local modifications to Users or Groups in the Application are prohibited.¶
The Application MUST provide support all User provisioning operations defined in this section.¶
User creation is performed by the SCIM operation POST /Users.¶
In addition to the user attributes required by [RFC7643], the following attributes are required to be part of the User schema:¶
// TODO: Should we keep this vauge or refer be explicit with attributes we are requiring? email vs emails?¶
User updates are performed by the SCIM operation PATCH /Users/{id}¶
Changes to the user activation status, such deactivation and reactivation, are performed by the SCIM operation PATCH /Users/{id}¶
The Identity Service SHOULD propagate user deactivation events to the Application within 5 minutes of the user being deactivated.¶
The Application SHOULD respond to user deactivation events by revoking the ability for the user to continue accessing the Application, including the revocation of currently active sessions. The revocation mechanism outside the scope of this profile. Revocation SHOULD occur within 5 minutes of receiving the deactivation request.¶
When a user account is deactivated, all access mechanisms and authorizations associated with that account MUST also be deactivated. This includes, but is not limited to:¶
Web sessions¶
API tokens¶
Refresh tokens¶
Personal access tokens¶
SSH keys associated with the user¶
Device-based authentication credentials¶
The Application MUST allow reactivation of a deactivated user.¶
User deletions are performed by the SCIM operation DELETE /Users/{id}¶
After a user is deleted, the Application MUST allow the creation of a new user with the same username.¶
// TODO: this could be tricky RE: maintianing the user's data¶
Get all users in the system is performed by the SCIM operation GET /Users¶
This endpoint ensures that all users are managed by the Identity Service.¶
To ensure that large amounts of data can be read from the Application, the application must support with index-based or cursor-based pagination for the GET /Users request. To ensure system stability and prevent abuse, the Application SHALL enforce rate limits on this endpoint and must respond with appropriate headers, such as "429 Too Many Requests" and "Retry-After," when limits are exceeded.¶
User searches by id are performed by the SCIM operation GET /Users/{id}¶
User searches by alternate identifier are performed via the SCIM operation: GET /Users?filter={filterExpression}¶
Application Providers MUST support the following filter expressions:¶
The Application MUST provide support all Group provisioning operations defined in this section.¶
Note: Within the IPSIE standard, Application permissions are referred to as "Roles." Within SCIM, Application permissions are referred to as "Groups." The term "Role" in IPSIE is functionally equivalent to the term "Group" in SCIM.¶
Group creation is performed by the SCIM operation POST /Group.¶
// TODO: Add more details¶
A search for all groups in the system is performed by the SCIM operation GET /Groups¶
This endpoint ensures that all groups are managed by the Identity Service.¶
To ensure that large amounts of data can be read from the Application, the application MUST support with index-based or cursor-based pagination for the GET /Groups request. To ensure system stability and prevent abuse, the Application SHALL enforce rate limits on this endpoint and MUST respond with appropriate headers, such as "429 Too Many Requests" and "Retry-After," when limits are exceeded.¶
Group searches by id are performed by the SCIM operation GET /Group/{id}?excludedAttributes=members¶
User lookups by alternate identifier are performed by the SCIM operation GET /Groups?filter={filterExpression}&excludedAttributes=members¶
Application Providers MUST support the following filter expressions:¶
// TODO: Add what filters are required to be supported¶
Application MUST host a /ResourceTypes endpoint, as defined in Section 4 of [RFC7644].¶
The supported ResourceTypes MUST include Users and Groups.¶
Application Providers MUST host a /ServiceProviderConfig endpoint to describe the operations they support, as defined in Section 4 of [RFC7644]¶
The operations MUST include, at minimum, the set of SCIM capabilities required for compatibility with this IPSIE profile.¶
For SCIM security considerations, see [RFC7643] and [RFC7644]¶
Additionally, the following requierements are included to address security considerations.¶
Transport Security: All endpoints SHALL enforce TLS 1.2 or later with strong cipher suites and certificate validation.¶
Error Handling: Error responses SHALL use the SCIM error format and SHALL NOT leak internal details.¶
Replay Resistance: Access tokens SHALL expire and nonces SHALL be validated to prevent replay.¶
Auditing: All provisioning actions and responses SHALL be logged for audit and troubleshooting.¶
Rate Limiting: All endpoints SHALL enforce rate limiting and must respond with "429 Too Many Requests" when limits are exceeded.¶
Implementation of all mandatory requirements in this profile will result in a SCIM 2.0 deployment that satisfies IPSIE Identity Lifecycle Level 1 (IL1). Specifically:¶
By conforming to this profile, implementations will achieve a consistent, secure, and interoperable baseline for enterprise identity lifecycle management.¶