A partial implementation of the SCIM 2.0 provider specification for use with Django. It enables automatic provisioning and deprovisioning of user accounts and groups, facilitating identity synchronization across various identity providers and applications. The current stable version, as listed on PyPI, is 0.19.1, with development being stable and new releases occurring periodically, often focusing on Fridays.
pip install django-scim2Verified import paths — ran on the pinned version, not inferred.
To integrate `django-scim2`, add `django_scim` to `INSTALLED_APPS` and configure the `SCIM_SERVICE_PROVIDER` settings. Crucially, include `django_scim.urls` in your project's `urls.py` with the mandatory namespace `scim`. Note that as of version 0.18.0, the `SCIMAuthCheckMiddleware` is applied as a decorator to views, so it typically no longer needs to be added directly to the `MIDDLEWARE` setting. If you implement custom authentication, ensure it runs before SCIM processing.
Review Django project settings for `USE_L10N`. If present, remove it or ensure compatibility with Django 5+. Test thoroughly after upgrading.
Remove `SCIMAuthCheckMiddleware` from your Django `MIDDLEWARE` setting. If custom authentication checks are needed, configure them via `SCIM_SERVICE_PROVIDER['AUTH_CHECK_MIDDLEWARE']`.
Ensure all SCIM IDs are unique in your data. Upgrade your Django project to version 2.2.13 or newer before upgrading `django-scim2` to 0.16.0 or later.
Integrate a separate authentication/authorization solution (e.g., Django REST Framework authentication, Django OAuth Toolkit) into your Django project. Ensure SCIM endpoints are protected appropriately.
Verify the order of your middleware. Place any authentication-related middleware (e.g., `AuthenticationMiddleware`) before `django_scim`'s authentication checks.
Ensure your Django project is configured to use PostgreSQL as its database backend for applications leveraging `django-scim2`.