A Flask extension serving a SCIM 2.0 server, as RFC7643 and RFC7644 define it. It is built upon scim2-server and scim2-models. The application provides the storage.
- Resource endpoints:
POST,GET,PUT,PATCHandDELETE, for every resource type - Search:
GETandPOST /.search, per resource type and at the server root - Discovery endpoints:
/ServiceProviderConfig,/ResourceTypesand/Schemas - Bulk operations:
POST /Bulk, withbulkIdreferences,failOnErrors,maxOperationsandmaxPayloadSize /Me, once the application tells which resource the authenticated client stands for- Schema extensions, and several resource types sharing a schema
- Conditional requests with ETags:
If-MatchandIf-None-Match - SCIM error payloads for every failure
from flask import Flask
from scim2_models import ScimProvider, User
from scim2_server.storage import ScimStorage
from scim2_flask import ScimServer
class MyStorage(ScimStorage):
"""Implement get, search, create, update and delete against your own storage."""
...
app = Flask(__name__)
ScimServer(MyStorage(), ScimProvider(models=[User]), app=app)pip install scim2-flask- Overview introduces the parts of a SCIM server built with Flask.
- Integrate with the application covers authentication, transactions, URLs and request sizes.
- Reference lists the public API.
SCIM stands for System for Cross-domain Identity Management, and it is a provisioning protocol. Provisioning is the action of managing a set of resources across different services, usually users and groups. SCIM is often used between Identity Providers and applications, alongside standards like OAuth2 and OpenID Connect. It allows users and groups creations, modifications and deletions to be synchronized between applications.
Questions and bug reports go to the issue tracker.
The contribution page describes how to run the tests, the style checks and the documentation build.
scim2-flask is released under the Apache-2.0 license.
scim2-flask belongs in a collection of SCIM tools developed by Yaal Coop, with scim2-models, scim2-client, scim2-server, scim2-tester and scim2-cli.