You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As an administrator, I want to configure outbound SCIM provisioning for users, manage SCIM servers, and define which users are provisioned to external systems, so that I can ensure users exist in external applications before SSO login attempts and maintain consistent user lifecycle management across multiple applications.
Description:
To support applications that require user pre-existence for SSO login and to enable consistent lifecycle management across multiple applications, we need to implement outbound SCIM provisioning for users.
This feature will allow administrators to configure SCIM servers, define which users are provisioned to external systems, and automatically synchronize user data.
By ensuring users exist in external systems before SSO login attempts, we can streamline the login process and prevent authorization issues.
Furthermore, by synchronizing user lifecycle events (e.g., deactivation, deletion), we can ensure that user access is consistently managed across all applications. The initial implementation will focus on the user resource.
Acceptance Criteria
SCIM Server Management:
Given: An administrator wants to configure outbound SCIM provisioning.
Then: The system should provide a management interface for SCIM servers, allowing administrators to:
Add new SCIM server configurations.
Configure SCIM server endpoints (URL).
Configure authentication credentials (e.g., API keys, tokens).
Test SCIM server connectivity.
Edit and delete existing SCIM server configurations.
User Provisioning Configuration:
Given: An administrator wants to define which users are provisioned.
Then: The system should provide configuration options to:
Select specific users or groups of users to be provisioned.
Define attribute mappings between ZITADEL user attributes and external SCIM server attributes.
Specify the provisioning behavior (e.g., create, update, delete).
Enable/disable provisioning for individual users or groups.
Automatic User Synchronization:
Given: A user is created, updated, or deleted in ZITADEL.
When: Outbound SCIM provisioning is enabled for the user.
Then: ZITADEL should automatically send SCIM requests to the configured external SCIM server to synchronize the user data.
Error Handling and Logging:
Given: An error occurs during outbound SCIM provisioning.
Then: The system should:
Log the error with detailed information.
Provide error notifications or alerts to administrators.
Implement a retry mechanism for failed provisioning attempts.
Data Consistency:
Given: User data is synchronized between ZITADEL and an external SCIM server.
Then: The user data should be consistent across both systems.
SCIM Standard and RFC Compliance:
Given: The outbound SCIM provisioning feature is implemented.
Then: The implementation must adhere to the SCIM standard framework and relevant RFCs, including:
Support for required SCIM operations (e.g., create, read, update, delete).
Given: An administrator or developer accesses the system documentation.
Then: The documentation should explain:
How to configure outbound SCIM provisioning.
How to manage SCIM servers.
How to define user provisioning rules.
How to handle errors and troubleshoot issues.
Testing:
Given: The outbound SCIM user provisioning feature is implemented.
Then:
Unit tests should verify individual components of the provisioning logic.
Integration tests should verify the interaction between ZITADEL and external SCIM servers.
End-to-end tests should simulate user provisioning workflows, including creation, updates, and deletions.
Test cases should cover valid and invalid configuration scenarios.
Architecture
The implementation requires specific behaviours (such as searching for the user in the external SCIM endpoint, etc.) which cannot be implemented using the actions alone. On the other hand (as mentioned) likely a lot of vendors will not be fully compliant or need additional fields (custom schema) / very custom mapping.
Provide Standard SCIM Client with default Implementation/Mapping (analog generic idps)
With actions we allow customers to extend/customize the generic implementation
In the future we might provide specific implementations for specific providers
The handling of the subscribed events (I would start with predefined e.g User Added, User Updated, Delete etc, which also includes subresources such as metadata), will be handled using the existing queue as with event actions.
The server and provisioning configuration need to be possible on a instance and organization level, where the latter can be used to specifically create a configuration or partially overwrite the instance, e.g. when to provision.
This feature might also be used for applications that don't support federated authentication (SAML, OpenID Connect). We strongly discourage use of such a feature to provision credentials. Instead users should look into a reverse-proxy / zero trust pattern to secure their applications.
As an administrator, I want to configure outbound SCIM provisioning for users, manage SCIM servers, and define which users are provisioned to external systems, so that I can ensure users exist in external applications before SSO login attempts and maintain consistent user lifecycle management across multiple applications.
Description:
To support applications that require user pre-existence for SSO login and to enable consistent lifecycle management across multiple applications, we need to implement outbound SCIM provisioning for users.
This feature will allow administrators to configure SCIM servers, define which users are provisioned to external systems, and automatically synchronize user data.
By ensuring users exist in external systems before SSO login attempts, we can streamline the login process and prevent authorization issues.
Furthermore, by synchronizing user lifecycle events (e.g., deactivation, deletion), we can ensure that user access is consistently managed across all applications. The initial implementation will focus on the user resource.
Acceptance Criteria
Architecture
The implementation requires specific behaviours (such as searching for the user in the external SCIM endpoint, etc.) which cannot be implemented using the actions alone. On the other hand (as mentioned) likely a lot of vendors will not be fully compliant or need additional fields (custom schema) / very custom mapping.
Technical Considerations
Integrations / References
Additional Context
This feature might also be used for applications that don't support federated authentication (SAML, OpenID Connect). We strongly discourage use of such a feature to provision credentials. Instead users should look into a reverse-proxy / zero trust pattern to secure their applications.
Out of scope