Skip to content

EPIC: replace the bespoke auth runtime with Keycloak and retain only the custom theme #96

Description

@Xore

Outcome

Replace the bespoke Go authentication runtime with Keycloak in one hard cutover. Keycloak owns identity, credentials, sessions, MFA/passkeys, recovery, authorization policy, and protocol behavior.

Xore/auth-backend retains only a supported custom Keycloak theme (themes/apiary), based on the vendored xore/theme system, reproducing the current auth-backend look and feel. Updated 2026-08-09: Keycloak deployment/realm configuration and validation ended up owned by Xore/APIARY instead, not here -- see "Cross-repository dependency" below for the reconciled split.

Fixed decisions

  • This is a greenfield identity launch. All administrators and users are created fresh in Keycloak.
  • Do not import, preserve, synchronize, export, or restore legacy users, passwords, MFA seeds, recovery codes, passkeys, roles, or sessions.
  • Do not keep the Go service as a forward-auth adapter or fallback.
  • Do not create a parallel custom CSS layer. Shared tokens, components, and assets live in xore/theme.
  • Cutover is one-way. Recovery procedures restore the new Keycloak system, not the old authentication runtime.
  • The new system must work in every supported functional path before production cutover.
  • The current visual experience must remain recognizable and materially equivalent across all enabled Keycloak flows.

Workstreams

Cross-repository dependency

Verified completed work (audited 2026-08-09)

Epic completion gates

  • Empty environment builds a working Keycloak/PostgreSQL/realm/theme release deterministically.
  • Fresh administrator and user provisioning, password, recovery, TOTP, WebAuthn/passkey, logout, revocation, role, and session paths pass.
  • Security, audit, observability, key rotation, outage, and new-system backup/restore paths pass.
  • Screenshot and interaction evidence confirms all enabled Keycloak pages match the current auth-backend look and feel using xore/theme.
  • APIARY dashboard and every protected hostname pass functional and authorization validation.
  • Bespoke Go auth runtime, Redis coupling, old routes, old secrets, and legacy identity paths are absent from the active auth-backend/main tree after cutover.

Milestone: https://github.com/Xore/auth-backend/milestone/1

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions