SCIMREST framework design an functionality overview
An overview of the SCIMREST framework architecture aimed to help you understand how to create SCIM connectors for midPoint that operate via the ConnID layer.
SCIMREST framework functionality overview
- Base Connector Framework Support
-
-
Set of base classes necessary to integrate with ConnId framework.
-
- Schema Mapping & Schema Builder APIs
-
-
Provides a way to define and manage schema, and mappings between protocol representation (SCIM, REST) and ConnId schema.
-
Allows for easy customization of attribute names and types regardless of protocol used.
-
Allows for specifying object classes, attributes, relationships in declarative way.
-
- Authentication & Authorization
-
-
Common configuration model for authentication and authorization mechanisms, such as OAuth 2.0, API keys.
-
Providing initialized REST client with authentication and authorization headers, tokens, and other required parameters to REST and SCIM Support classes.
-
- ConnId Support & Operation Builders
-
-
Support for ConnId operations using strategy design pattern, where based on ConnId request, the appropriate strategies are selected to handle the request.
-
Strategies are configured & provided by protocol specific parts and custom scripts.
-
-
- REST Support
-
-
Declarative support for calling, retrieving, creating, updating and deleting data using REST APIs.
-
Endpoint-based strategies for handling ConnId search, update, create, and delete operations.
-
Support for custom strategies for handling non-standard cases such as complex updates, splitting operations into multiple sub-operations, indirect searches.
-
- SCIM Support
-
-
Supports automatic schema discovery using SCIM 2.0 protocol.
-
Contributes to schema mappings and provides strategies based on discovered SCIM 2.0 schema, so there is no need to manually define schema mappings for SCIM 2.0 compliant applications.
-
Built-in strategies for handling ConnId search, update, create, and delete operations based on SCIM 2.0 protocol.
-
Multiple strategies for update operations, delete operations.
-
Support for custom strategies to be defined for handling non-standard cases such as complex updates, splitting operations into multiple sub-operations, indirect searches.
-
-
- Scripting Support
-
-
Custom Groovy DSL for configuring & defining custom schema mappings, logic, strategies, and operations.
-
Scripting support is intended to implement custom connectors using Groovy with intent to minimize boilerplate code.
-
SCIM2 & REST connector design
-
Providing out-of-the-box support for most used & well-known API desings
-
flexible enough to handle most of REST APIs & their quirks
-
not strongly tied to
Groovywith potential to replace with more declarative approach -
strong leaning on declarative approach instead of scripting ## Design
The base connector framework is based heavily on Strategy &
Delegation pattern. The framework out-of-the-box provides multiple
configurable strategy implementations to handle common scenarios such
as:
-
search
-
selecting correct search strategy based on filter
-
searching & retrieving object list strategy
-
using REST endpoint
-
using SCIM
-
custom implementation
-
-
-
retrieving additional attributes
-
multivalue attributes (references) using other search strategy
-
Groovy Builder API
Most of the groovy scripts are not full-blown scripts, but