Alex Morel
4446a661b5
Some checks are pending
Keycloak CI / Base IT (push) Blocked by required conditions
Keycloak CI / Check conditional workflows and jobs (push) Waiting to run
Keycloak CI / Build (push) Blocked by required conditions
Keycloak CI / Base UT (push) Blocked by required conditions
Keycloak CI / Quarkus IT (push) Blocked by required conditions
Keycloak CI / Adapter IT (push) Blocked by required conditions
Keycloak CI / Quarkus UT (push) Blocked by required conditions
Keycloak CI / Java Distribution IT (push) Blocked by required conditions
Keycloak CI / Volatile Sessions IT (push) Blocked by required conditions
Keycloak CI / External Infinispan IT (push) Blocked by required conditions
Keycloak CI / AuroraDB IT (push) Blocked by required conditions
Keycloak CI / Store IT (push) Blocked by required conditions
Keycloak CI / Store Model Tests (push) Blocked by required conditions
Keycloak CI / Clustering IT (push) Blocked by required conditions
Keycloak CI / FIPS UT (push) Blocked by required conditions
Keycloak CI / FIPS IT (push) Blocked by required conditions
Keycloak CI / Forms IT (push) Blocked by required conditions
Keycloak CI / WebAuthn IT (push) Blocked by required conditions
Keycloak CI / SSSD (push) Blocked by required conditions
Keycloak CI / Migration Tests (push) Blocked by required conditions
Keycloak CI / Keycloak Test Framework (push) Blocked by required conditions
Keycloak CI / Test PoC (push) Blocked by required conditions
Keycloak CI / Status Check - Keycloak CI (push) Blocked by required conditions
CodeQL / Check conditional workflows and jobs (push) Waiting to run
CodeQL / CodeQL Java (push) Blocked by required conditions
CodeQL / CodeQL JavaScript (push) Blocked by required conditions
CodeQL / CodeQL TypeScript (push) Blocked by required conditions
CodeQL / Status Check - CodeQL (push) Blocked by required conditions
Keycloak Documentation / Check conditional workflows and jobs (push) Waiting to run
Keycloak Documentation / Build (push) Blocked by required conditions
Keycloak Documentation / External links check (push) Blocked by required conditions
Keycloak Documentation / Status Check - Keycloak Documentation (push) Blocked by required conditions
Keycloak Guides / Status Check - Keycloak Guides (push) Blocked by required conditions
Keycloak Guides / Check conditional workflows and jobs (push) Waiting to run
Keycloak Guides / Build (push) Blocked by required conditions
Keycloak JavaScript CI / Admin UI (push) Blocked by required conditions
Keycloak JavaScript CI / Account UI E2E (push) Blocked by required conditions
Keycloak JavaScript CI / Generate Test Seed (push) Blocked by required conditions
Keycloak JavaScript CI / Admin UI E2E (push) Blocked by required conditions
Keycloak JavaScript CI / Status Check - Keycloak JavaScript CI (push) Blocked by required conditions
Keycloak Operator CI / Build distribution (push) Blocked by required conditions
Keycloak JavaScript CI / Check conditional workflows and jobs (push) Waiting to run
Keycloak JavaScript CI / Build Keycloak (push) Blocked by required conditions
Keycloak JavaScript CI / Admin Client (push) Blocked by required conditions
Keycloak JavaScript CI / UI Shared (push) Blocked by required conditions
Keycloak JavaScript CI / Account UI (push) Blocked by required conditions
Keycloak Operator CI / Check conditional workflows and jobs (push) Waiting to run
Keycloak Operator CI / Test local (push) Blocked by required conditions
Keycloak Operator CI / Test remote (push) Blocked by required conditions
Keycloak Operator CI / Test OLM installation (push) Blocked by required conditions
Keycloak Operator CI / Status Check - Keycloak Operator CI (push) Blocked by required conditions
Closes #1234 Signed-off-by: Alex Morel <amorel@codelutin.com>
74 lines
3.1 KiB
Text
74 lines
3.1 KiB
Text
[[_scim]]
|
|
|
|
=== SCIM client capabilities
|
|
|
|
{project_name} includes a http://www.simplecloud.info[SCIM2] client allowing to :
|
|
|
|
* Declare SCIM endpoints (through the identity federation UI). Any tool implementing SCIM protocol can be wired to the
|
|
{project_name} instance through this declaration.
|
|
* Propagate users and groups from {project_name} to SCIM endpoints : when a user/group gets created or modified in {project_name},
|
|
the modification is forwarded to all declared SCIM endpoints through SCIM calls within the transaction scope. If
|
|
propagation fails, changes can be rolled back or not according to a configurable rollback strategy.
|
|
* Synchronize users and groups from SCIM endpoints (through the {project_name} synchronization mechanism).
|
|
|
|
See https://datatracker.ietf.org/doc/html/rfc7643[RFC7643]
|
|
and https://datatracker.ietf.org/doc/html/rfc7644[RFC7644] for further details
|
|
|
|
==== Enabling SCIM extension
|
|
|
|
[NOTE]
|
|
====
|
|
This extension is currently in experimental mode, and requires the ```SCIM``` experimental Profile to be enabled
|
|
====
|
|
|
|
.Procedure
|
|
. Click on *Admin Console > Realm Settings > Events* in the menu.
|
|
. Add `scim` to the list of event listeners
|
|
image:images/scim-event-listener-page.png[Enable SCIM Event listeners]
|
|
. Save
|
|
|
|
==== Registering SCIM Service Providers
|
|
|
|
.Procedure
|
|
. Click on *User federation > Add Scim Providers*
|
|
image:images/scim-federation-provider-page.png[Configure SCIM service provider]
|
|
. Fill required fields according to the SCIM endpoint you are wiring
|
|
. If you enable import during sync then you can choose between to following import actions:
|
|
|
|
- Create Local - adds users to keycloak
|
|
- Nothing
|
|
- Delete Remote - deletes users from the remote application
|
|
|
|
==== Sync
|
|
|
|
You can set up a periodic sync for all users or just changed users - it's not mandatory. You can either do:
|
|
|
|
- Periodic Full Sync
|
|
- Periodic Changed User Sync
|
|
|
|
|
|
==== Technical notes
|
|
|
|
===== Motivation
|
|
|
|
We want to build a unified collaborative platform based on multiple applications. To do that, we need a way to propagate
|
|
immediately changes made in Keycloak to all these applications. And we want to keep using OIDC or SAML as the
|
|
authentication protocol.
|
|
|
|
This will allow users to collaborate seamlessly across the platform without requiring every user to have connected once
|
|
to each application. This will also ease GDRP compliance because deleting a user in Keycloak will delete the user from
|
|
every app. The SCIM protocol is standard, comprehensible and easy to implement. It's a perfect fit for our goal.
|
|
|
|
We chose to build application extensions/plugins because it's easier to deploy and thus will benefit to a larger portion
|
|
of the FOSS community.
|
|
|
|
===== Keycloak specific
|
|
|
|
This extension uses 3 concepts in KeyCloak :
|
|
|
|
- Event Listener : used to listen for changes within Keycloak (e.g. User creation, Group deletion...) and propagate
|
|
them to registered SCIM service providers through SCIM requests.
|
|
- Federation Provider : used to set up all the SCIM service providers endpoint without creating our own UI.
|
|
- JPA Entity Provider : used to save the mapping between the local IDs and the service providers IDs.
|
|
|
|
It is based on https://github.com/Captain-P-Goldfish/SCIM-SDK[Scim SDK].
|