[VS-NfD] Map IdP groups and roles onto the permission model #217
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#217
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plan reference:
20-massnahmenplan.md-> P1-1ADR: ADR 0021
Effort: M (2–3 AT)
Depends on: #214
Context
Without claim mapping, every authority deployment administers permissions
twice — and the second copy drifts. Drifted permissions on classified
content is exactly the finding to avoid.
Current state
(
apps/api/src/permissions/, deny-wins, default-closed, ADR-documentedroute-enumeration test). Grants are created through the API — the project
rule is that raw grant rows bypass the
PondPermissionCache.Acceptance criteria
and the site-admin flag; the mapping is instance configuration, not
code.
grants, so the permission cache stays correct (no raw row writes).
live collab sessions are terminated by the existing revocation path
(
pg_notifyaccess listener) — asserted by test.documented rule says which wins.
docs/architecture/permissions.mddocuments the mapping.Out of scope
SCIM provisioning, and just-in-time user creation policy beyond what #214
defines.
Implemented in PR #285 (commit
6aac785), merged fast-forward (run 604 green); CD 609 green, readyz test+int ok. Declarative idpMapping.rules (instance setting) map ID-token claims to pond roles and the site-admin flag on every OIDC login. Mapped grants go through the SAME GrantsService path as manual grants - permission cache invalidation and the collab access notify (pg_notify revocation path) asserted by test - never raw rows. Ownership via role_grants.origin and users.is_site_admin_managed: manual wins, always; claim removal revokes mapped state on next login; every change audited with origin idp_mapping; unknown slugs and the last-Pond-Admin protection log-and-skip (never a login lockout). Documented in permissions.md (own section), ADR 0021, data-model.md, hardening guide. 4 e2e tests drive real OIDC logins with group claims.