Phase 4: Keycloak Realm + Auth
Goal: Dedicated Keycloak realm with user/admin roles, JWT validation in API, protected endpoints ready for Phase 5 routes.
Owner: Dev agent
Repo:
forgejo_admin/mcd-tracker-apiDepends on: Phase 3 (COMPLETED — models + DB live)
Scope
- Create
mcd-trackerrealm in Keycloak via admin API: - Add
src/mcd_tracker_api/auth.py— copy basketball-api pattern: - Add config:
MCD_TRACKER_KEYCLOAK_REALM_URL - Update kustomize deployment-patch.yaml with Keycloak env var (pal-e-deployments)
- Create test user + admin user in realm
- Add auth tests: valid token → 200, no token → 401, wrong role → 403
Architecture Touch
arch-dataflow-mcd-tracker#auth-flow-keycloak-oidc — this phase implements the auth flow sequence diagram. Two OIDC clients (web confidential + iOS public/PKCE) as designed.Verification
- Keycloak realm
mcd-trackeraccessible athttps://keycloak.tail5b443a.ts.net/realms/mcd-tracker - Unauthenticated request to protected endpoint → 401
- Authenticated request with valid JWT → 200
- Wrong role → 403
- CI tests pass
- pending
Related
plan-mcd-tracker— parent planphase-mcd-tracker-3-data-model— depends onarch-dataflow-mcd-tracker— auth flow diagram