- Image:
ghcr.io/parlesec/protocolsoup-scim - Purpose: SCIM 2.0 server for user and group lifecycle provisioning.
- Topology role: Can run standalone or behind the gateway as the
/scimupstream service.
RFC alignment target: RFC 7642, RFC 7643, and RFC 7644.
8080/tcp: SCIM API and service health endpoints.
- No external database required (SQLite-backed storage).
- Optional integration dependencies are external IdPs (Okta, Azure AD, SailPoint, etc.).
| Variable | Required | Default | Description |
|---|---|---|---|
SHOWCASE_LISTEN_ADDR |
No | :8080 |
Listen address |
SHOWCASE_BASE_URL |
No | http://localhost:8080 |
Base URL used in SCIM metadata |
SHOWCASE_CORS_ORIGINS |
No | http://localhost:3000,http://localhost:5173 |
Allowed CORS origins |
SCIM_API_TOKEN |
No (Yes for production) | (none) |
Bearer token for SCIM auth; if unset, auth is disabled |
SCIM_DATA_DIR |
No | ./data (container default path resolves to /app/data) |
SQLite storage directory |
SCIM_LOOKING_GLASS |
No | true |
Enable Looking Glass capture for SCIM events |
- Persist SCIM data by mounting a volume to the storage directory.
- Recommended container mount:
-v scim-data:/app/datawithSCIM_DATA_DIR=/app/data.
GET /healthreturns service health.- Container healthcheck probes
/healthby default.
GET /scim/v2/ServiceProviderConfigGET /scim/v2/ResourceTypesGET /scim/v2/ResourceTypes/{id}GET /scim/v2/SchemasGET /scim/v2/Schemas/{id}
GET /scim/v2/UsersPOST /scim/v2/UsersGET /scim/v2/Users/{id}PUT /scim/v2/Users/{id}PATCH /scim/v2/Users/{id}DELETE /scim/v2/Users/{id}
GET /scim/v2/GroupsPOST /scim/v2/GroupsGET /scim/v2/Groups/{id}PUT /scim/v2/Groups/{id}PATCH /scim/v2/Groups/{id}DELETE /scim/v2/Groups/{id}
POST /scim/v2/BulkPOST /scim/v2/.search
docker run -p 8080:8080 \
-e SHOWCASE_BASE_URL=http://localhost:8080 \
-e SCIM_API_TOKEN=your-secure-token \
-e SCIM_DATA_DIR=/app/data \
-v scim-data:/app/data \
ghcr.io/parlesec/protocolsoup-scim:latestservices:
scim-service:
image: ghcr.io/parlesec/protocolsoup-scim:latest
environment:
- SHOWCASE_BASE_URL=http://localhost:8080
- SCIM_API_TOKEN=${SCIM_API_TOKEN}
- SCIM_DATA_DIR=/app/data
volumes:
- scim-data:/app/data- Set
SCIM_API_TOKENin production; do not run with open auth outside local/demo use. - Use HTTPS at the edge between IdP and SCIM endpoint.
- Restrict
SHOWCASE_CORS_ORIGINSto trusted origins. - Persist data to a managed volume and protect that volume as sensitive identity state.
- Rotate
SCIM_API_TOKENon a regular cadence.
401withinvalidValueerrors: missing/invalidAuthorization: Bearer <SCIM_API_TOKEN>.- SCIM auth unexpectedly open: verify
SCIM_API_TOKENis set in runtime environment. - Data disappears after restart: configure persistent volume and
SCIM_DATA_DIR. - IdP connector test fails: confirm base URL uses
/scim/v2and bearer token matches runtime token.
- Okta: Base URL
http://<host>:8080/scim/v2, auth headerBearer <SCIM_API_TOKEN>. - SailPoint: Base URL
http://<host>:8080/scim/v2, bearer token auth. - Azure AD: Tenant URL
http://<host>:8080/scim/v2, secret tokenSCIM_API_TOKEN.
latestis published from default-branch builds.sha-*tags are emitted per build for immutable traceability.- release tags publish semver variants (
vX.Y.Z,vX.Y,vX).
- Package index: README.md
- SCIM implementation details: ../../backend/internal/protocols/scim/README.md
- Gateway service docs: gateway.md