
i2scim is a Kubernetes (K8S) deployable server implementation of the IETF SCIM
specification for provisioning of
Identities as an directory service. i2scim is as a generalized SCIM engine that supports configured endpoints
and schemas defined in json. Unlike other SCIM implementations, i2scim does not have fixed resource types.
i2scim reads a K8S configMap containing JSON formatted definitions of resources and attributes (aka SCIM Schema).
At its core, i2scim is a JSON document centric engine that converts from the SCIM Restful HTTP API to backend
persistence services such as MongoDb.
This open source project licensed under the Apache License 2.0.
i2scim is extensible in key ways:
It has a built in events interface that can be used to trigger async events and notifications (more to come).
This release collapses the build from ten Maven modules into three (i2scim-core, i2scim-client, i2scim-server) and hardens the deployment image.
i2scim-server. Root mvn install works without the prior -N workaround. See DECISIONS.md, 2026-05-04 entry.independentid/i2scim-universal:<tag> is the only published image. Backend selection is runtime via scim.prov.providerClass. The previous per-backend images (i2scim-mem, i2scim-mongo) are no longer built.org.opencontainers.image.*), an embedded CycloneDX SBOM at /sbom/i2scim.cdx.json, and SLSA build provenance. build.sh -p produces multi-arch (linux/amd64, linux/arm64) attested builds.i2scim-server sets maven.deploy.skip=true. To restore, follow docs/publishing.md.i2scim-core — scimSchema.json, scimCommonSchema.json, scimFixedSchema.json, resourceTypes.json are loaded from the core JAR’s classpath instead of duplicated in each module.This release introduces several enhancements and bug fixes, including support for RESTEasy Reactive and improved test stability.
scim.signals.ssf.trust.certs.path and scim.signals.ssf.trust.certs.value configuration properties.ConcurrentModificationException in PollStream.pollEvents by using CopyOnWriteArrayList for tracking acknowledgments and pending operations in SignalsEventHandler, and reduced initialization sleep during tests to prevent stalls.This release adds support for specifying CA trust certificate roots for the SSF (Shared Signals Framework) server via environment variables and updates the project to Quarkus 3.30.8.
scim.signals.ssf.trust.certs.path and scim.signals.ssf.trust.certs.value configuration properties. This enables secure HTTPS connections to SSF servers using self-signed or SPIFFE cluster certificates for discovery, JWKS retrieval, and event streams.3.30.8 and resolved compatibility issues for Java 17/21.InaccessibleObjectException failures in i2scim-signals tests by adding necessary JVM --add-opens exports for SSL context introspection.I2 SCIM has been updated to support the latest SCIM Events draft which includes:
Other bug fixes include:
In this release:
i2scim is a K8S deployable service that supports scenarios such as:
i2scim is a three-module Maven project (i2scim-core, i2scim-client, i2scim-server) on Java 25 and Quarkus 3.34.x.
# Build everything (skips tests by default):
mvn install
# Build + run tests (requires MongoDB on localhost:27017 with admin/t0p-Secret):
mvn install -DskipTests=false
# Run the server in dev mode at http://localhost:8080/ :
mvn -pl i2scim-server quarkus:dev
# Build a multi-arch Docker image and push to docker.io/independentid:
./build.sh -p --tag <ver>
The published Docker image is independentid/i2scim-universal:<tag>. The same image runs against the in-memory backend or MongoDB; the choice is made at runtime via scim.prov.providerClass. See Configuration for the full property list and k8s/README.md for cluster deployment.
IScimPlugin interface enables pre and post transaction custom actions.IEventHandler interface enables deployment of asynchronous event handlers (e.g. for replication or security
events)
IVirtualValue enables support for derived or calculated values.Note: Inter-SCIM server replication services are not currently part of this project and are currently only supported as part of a database cluster. For fault-tolerant scaled systems use i2scim deployed with a MongoDB cluster on K8S along with an enterprise MongoDB deployment.
Open Source i2scim is maintained by Independent Identity Incorporated on a best effort sponsored basis. For more information, please email info@independentid.com. —–
SCIM (System for Cross-domain Identity Management) is an IETF specified protocol and schema designed to support simple cloud identity management over a REST-ful HTTP service. See:
In SCIM, objects are called Resources which have an identified schema. Like XML, a SCIM Schema describes an object,
the attributes contained, along with their syntax, mutability, etc. For example a username is usually unique across
a domain. Unlike XML, SCIM schema is not used as a strict enforcement mechanism. After-all JSON is just JSON.
However Schema definitions help inform parties on how to parse and use data discovered in an endpoint. These can be
discovered using the /Schemas endpoint. To help SCIM protocol clients understand what resources types are
available, SCIM servers provide and endpoint called
Resourcetypes that lists the resources available on the server.
At the time of writing the SCIM protocols, REST-ful APIs were in vogue. One of the observations of the SCIM Working Group, is that SCIM was an HTTP based service that would be implemented by many different developers and organizations. This stood in stark contrast to services like the Facebook API. There were many client implementers but only 1 organization supporting Facebook’s API. Unlike most APIs, SCIM needed mutual interoperability. WG members recognized that every SCIM service provider would likely be somewhat different. In order to make interop possible, the SCIM schema was developed.
i2scim provides proper supply chain attestations to ensure the integrity and provenance of its builds.
How SCIM and XML are alike:
How SCIM and XML are NOT alike: