SSO Connector Sync
This module allows for secure synchronization of Drupal data, including entities and configuration, between different Drupal sites. It supports push, pull, and bidirectional synchronization using signed webhooks and queue-based processing, making it suitable for distributed multi-site SSO platforms.
Cross-site entity and configuration replication for SSO platforms. Running on any site, it pushes saved content entities and allow-listed Drupal configuration to peer sites and receives signed inbound payloads from them, over HMAC-signed webhooks. There is no scheduled pull client and no automatic conflict resolution — data replicates when a peer pushes it.
Features
- Signed outbound push of entity create / update / delete operations, queued on save.
- Inbound endpoint that receives and applies signed payloads from peers.
- Per-direction control: push only, receive only, or both.
- Inbound IP allow-list, fail-closed HMAC verification, a replay window and a nonce cache.
- Outbound SSRF guard: HTTPS-only, private/loopback/reserved IPs blocked, redirects not followed.
- User synchronisation off by default, with a protected-field blocklist (password, roles, status, mail, …).
- Opt-in configuration sync with a prefix allow-list, applied in an all-or-nothing transaction.
- Role/permission privilege-escalation guard on inbound user data.
- Queue-based delivery with bounded per-target retries.
Security model
Per-site HMAC keys live in State, never in exportable configuration. User and configuration sync are both off by default and must be explicitly enabled.
Requirements
- Drupal core
^11.2 || ^12 - PHP
>= 8.1 - SSO Connector
^1.0
Installation
composer require drupal/sso_connector_sync drush en sso_connector_sync
Part of the SSO Connector bundle
Requires SSO Connector (core). See the core project for the full suite.