Description
Problem
Currently, if I setup a SCIM Client Entity, and use this integration to create users (that is, FusionAuth is the SCIM Server), each user created will have an externalId which creates a join between FusionAuth the SCIM server and the SCIM client.
FusionAuth currently validates if an [scim client] entity is "in-use" (that is, the SCIM client entity, user, and eternalId are linked). If so, this [scim client] entity can not be removed until the FusionAuth user is removed. Functionally this externalId
acts as a foreign key to the SP/SCIM client for this user. If this link is severed (that is the [scim client] entity removed from FusionAuth) then the user will be orphaned
(in a way).
Solution
Allowing an [scim client] entity to be removed but blocking when the SCIM Client Entity has a user created (externalId) makes sense. It prevents accidentally completely "messing up" a SCIM integration in production. However, FusionAuth should offer a seperate API endpoint to remove [scim client] entities, even when attached/connected to a user in FusionAuth via SCIM (with all disclaimers provided in the API doc - ie - this action is very dangerous and destructive).
Perhaps something like
//...
DELETE `<host>/api/entity-scim/<entityId>
//...
This would offer a completely discrete endpoint that would not allow for inadvertent destruction of SCIM connections.
Alternatives/workarounds
- Remove all FusionAuth users that have an
externalId
to the specific client entity (SCIM connection) in FusionAuth.- These users cannot be searched for in FusionAuth itself, but would have to be identified in the other side of the SCIM connection.
- Once these users have been removed, the FusionAuth [scim client] entity can be removed.
Additional context
https://inversoft.slack.com/archives/C03P8K9R69Z/p1702674277517269
Community guidelines
All issues filed in this repository must abide by the FusionAuth community guidelines.
How to vote
Please give us a thumbs up or thumbs down as a reaction to help us prioritize this feature. Feel free to comment if you have a particular need or comment on how this feature should work.