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
{{ message }}
Repository navigation
Commit 670b288
Browse filesBrowse the repository at this point in the historyBrowse files
refactor(scim): one removal invariant, honest provenance, finished primitive extraction, tests
Findings from an independent three-way audit (architecture, correctness,
tests) after the review rounds:
- Removing a member is one transaction that also revokes sessions and
personal keys and retires the directory row into its tombstone, so a
member can never be gone while the directory says otherwise. The four
defensive re-checks the review rounds had added are gone; deprovision is
one path and the settings UI removal gains the same revocation
- Every satisfied mapping is recorded; access the person already held is
recorded as `adopted` and left alone on withdrawal unless the directory is
the source of truth. Reconcile is idempotent again
- Permission-group conflict rules live once, in the shared membership
primitive; the settings routes and the workspace-member route use the
shared primitives; direct workspace grants honor managed-membership lock
- Lock order: the permission-group leaf lock precedes every write to its
row; deadlocks map to 503 like lock timeouts; credential issue serializes
on the organization lock; reconcile batches shrink to 25
- PATCH keeps unmodelled attributes under `extra` as create and replace do,
so Entra's default mappings no longer fail whole updates
- Unknown group members are dropped with a warning; Entra's legacy User
schema marker is tolerated; the directory re-asserts an account address
that drifted; relink lifts a lingering suspension; a reconcile pass
advances the watermark only when it completes and re-reads settings per
batch; instance-organization deployments refuse a connection for any
other organization; provisioning cleans up through account deletion
- Base URL, credential predicate, request-log type, audit recording, and
seat policy each live in one place; `ssoProviderId` and the unused
credential scope parameter are removed
- Tests for the reconciler, user updates, deprovision, the route builder,
entitlement, auto-map, and the shared conflict rules; docs corrected
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DGXcwsHzYGp6pUDWRtJKpz
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/enterprise/scim.mdx
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ It pairs with [SSO](/platform/enterprise/sso). SSO proves who someone is when th
24
24
| Updates their name or email | Updates the Sim account, and ends their sessions if the address changed |
25
25
| Deactivates them | Blocks sign-in and stops their personal API keys. Everything they own, and every grant they hold, is left untouched; shared workspace keys keep working |
26
26
| Reactivates them | Restores access exactly as it was |
27
-
| Removes them from the app | Removes their organization membership and reassigns what they owned |
27
+
| Removes them from the app | Removes their organization membership, ends their sessions, deletes their personal API keys, and reassigns what they owned |
28
28
| Adds them to a group | Grants whatever that group maps to |
29
29
30
30
Deactivation is reversible and never destructive. Someone on leave keeps their workflows, their credentials, and their workspace history; they simply cannot sign in.
@@ -131,7 +131,7 @@ A group can carry several mappings. When two groups grant the same workspace at
131
131
132
132
Sim records every grant it makes on your behalf. When someone leaves a group, only what the directory granted is taken back — access a workspace administrator granted by hand stays.
133
133
134
-
The one exception is **managed membership locking**, which is on by default. With it on, the directory is the source of truth: Sim refuses invitations, role changes, and manual grants for provisioned members, because the next sync would revert them anyway. Turn it off if you want to layer manual access on top of directory access.
134
+
The one exception is **managed membership locking**, which is on by default. With it on, the directory is the source of truth: Sim refuses invitations, workspace grants, and role changes for provisioned members, because the next sync would revert them anyway. Removals stay possible so an administrator can always act in an emergency. Turn it off if you want to layer manual access on top of directory access.
135
135
136
136
## Provisioning and SSO together
137
137
@@ -143,7 +143,7 @@ If you want the directory to be the only way in, enable **Disable just-in-time p
143
143
144
144
**Settings → SSO → Directory provisioning → Activity** lists recent requests with their status and, for a failure, what was wrong. Providers report a failed cycle without saying what they sent, so this is usually the fastest way to see the cause.
145
145
146
-
Sim also re-applies every group mapping on a schedule, so drift cannot persist. You can run it on demand with **Reconcile now**.
146
+
Sim also re-applies every group mapping once an hour, so drift cannot persist. You can run it on demand with **Reconcile now**, which is also how a change to the connection settings reaches members before the next sync.
0 commit comments