django-scim2
A partial implementation of the SCIM 2.0 provider specification for use with Django.
What it is and what it does
django-scim2 is a Django application that exposes your user and group data via the SCIM 2.0 protocol, allowing external identity providers and workforce management systems to provision, deprovision, and synchronize users through standardized API endpoints. It handles the protocol mechanics—parsing SCIM filter syntax via scim2-filter-parser, serializing resources, managing schemas—so you don't have to build that layer yourself.
The package is designed as a provider (your Django app publishes the SCIM endpoints), not a client. It requires you to wire authentication separately and currently works only with Postgres. The library is built for extensibility: you define adapters to control how SCIM operations map to your actual user and group models, giving you fine-grained control over what gets synced and how.
Use it for:
- Integrate your Django app with external identity providers that use SCIM for automated user provisioning.
- Build a multi-tenant platform where customers' identity systems can manage their own user accounts via SCIM.
- Sync user and group membership from a centralized directory service into your Django application without custom polling.
- Expose user lifecycle events (create, update, deactivate) to external systems through a standards-compliant API.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Implements the SCIM 2.0 provider specification as a Django app, enabling standardized user and group provisioning endpoints for identity management systems.
Yes. The package is production-stable, actively maintained with a recent release, has no known vulnerabilities, and solves a specific and non-trivial problem (SCIM 2.0 provider implementation). Install it if you need to expose user provisioning via SCIM; the main constraint is the Postgres-only database requirement and the need to implement authentication separately.
Install
django-scim2 on PyPI
pip
pip install django-scim2uv
uv add django-scim2poetry
poetry add django-scim2Installing django-scim2
Before you install
Low friction: pure Python wheel with only three runtime dependencies (django, pygments, scim2-filter-parser). Active maintenance with a release 2 days old; development is deliberate rather than continuous (Friday-focused), so response times on issues may extend to a week.
License in practice
MIT license is permissive; you can use, modify, and distribute this package freely in commercial and private projects without restriction or attribution requirement.
Quickstart
pip install django-scim2
# In settings.py INSTALLED_APPS:
INSTALLED_APPS = [
...
'django_scim',
]
# In urls.py:
path('scim/v2/', include('django_scim.urls')),
# In settings.py:
SCIM_SERVICE_PROVIDER = {
'NETLOC': 'localhost',
'AUTHENTICATION_SCHEMES': [{'type': 'oauth2', 'name': 'OAuth 2'}],
}
Requires Postgres as the database backend; other databases are not currently supported. Requires Python 3.10 or later.
Verify before relying
- Whether the extensible adapter system covers all common SCIM resource types or requires significant custom implementation.
- Performance characteristics and scalability limits for high-volume provisioning workloads.
- Specific Django versions tested and recommended beyond the Python version classifiers.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — django, pygments, scim2-filter-parser |
| Maintenance | actively maintained — 2 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,340,770/month — #3,126 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: django_scim2-0.23.0-py3-none-any.whl
Keywords: django, scim, scim2, 2.0
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
scim2-modelsProvides Pydantic models for SCIM2 (System for…
permissive · top 15,000 on PyPI
scim2-serverProvides a lightweight SCIM2 server…
permissive · top 15,000 on PyPI
django-oidc-providerProvides OpenID Connect and OAuth 2.0 server…
permissive · top 15,000 on PyPI
django-oauth-toolkitAdds OAuth2 authorization server capabilities…
permissive · top 5,000 on PyPI
scim2-filter-parserParses SCIM 2.0 filter query strings into…
permissive · top 5,000 on PyPI
pydantic-scimProvides Pydantic data models for SCIM (System…
unclear · top 15,000 on PyPI
djangosaml2idp2Implements the SAML 2.0 Identity Provider side…
permissive · top 15,000 on PyPI
oauth2Implements OAuth 1.0 authentication for Python…
permissive · top 15,000 on PyPI
django-google-ssoAdds Google OAuth 2.0 authentication to Django…
permissive · top 15,000 on PyPI
mozilla-django-oidcIntegrates Django applications with OpenID…
copyleft · top 5,000 on PyPI