Skip to content

fix(security): fail closed on ambiguous and stale directory identities - #54

Merged
Cenn0 merged 7 commits into
mainfrom
fix/directory-reconciliation-fail-closed-20261020
Oct 20, 2026
Merged

Cenn0 merged 7 commits into
mainfrom
fix/directory-reconciliation-fail-closed-20261020

Conversation

@Cenn0

@Cenn0 Cenn0 commented Oct 20, 2026

Copy link
Copy Markdown
Owner

Scope

  • Reject duplicate same-realm directory subject IDs at the domain admission boundary before a new grant is queued.
  • Stop connector role writes (including ambiguous revocations) if multiple directory entries resolve to one principal ID.
  • Convert duplicate, unknown-type, empty remote-ID, stale and disabled/protected identity states into explicit reconciliation drift findings. Reconciliation must not be marked clean; avoid guessed Keycloak Admin REST endpoints.
  • Add C#/xUnit negative regressions and update the P4 roadmap and test matrix.

Security model and limitations

  • Grants fail closed; ambiguous revocations deliberately do not guess which remote Keycloak identity to delete. Remediation requires a fresh authoritative mapping and an operator action.
  • Drift detection alone does not revoke existing Keycloak mappings or access tokens.
  • This PR does not resolve the upstream Keycloak FGAP Groups.manage privilege breadth (#46); group grants remain default-denied unless exactly allowlisted.
  • No real Microsoft AD, multi-host HA, or security-release signoff is implied.

Verification

  • Request exact-SHA GitHub Actions validation: core .NET xUnit/PostgreSQL/API, Keycloak/OIDC, worker/recovery, accessibility, documentation. Merge only if the applicable checks pass; review the CI output before asserting completion.

@Cenn0
Cenn0 merged commit 5017624 into main Oct 20, 2026
15 checks passed
@Cenn0
Cenn0 deleted the fix/directory-reconciliation-fail-closed-20261020 branch October 20, 2026 09:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant