Vai al contenuto

Architettura

Come si incastrano i pezzi, e perché l'immagine è costruita in questo modo.

Cosa contiene l'immagine

Il repository produce un'unica immagine Keycloak autosufficiente. Tre componenti vengono integrati al momento del build, così il container di produzione non ha bisogno di altro che di un database:

  • Lo Stage 1 compila il tema di login keycloakify/ in un provider jar per Keycloak.
  • Lo Stage 2 scarica la lista rockyou delle password compromesse.
  • Lo Stage 3 copia il jar del tema ed esegue kc.sh build - un build ottimizzato, fissato su Postgres, con health check e metriche attivi, per un avvio rapido in produzione.
  • Lo Stage 4 assembla l'immagine di runtime: il server ottimizzato, la blacklist e i file di import del realm schuly.

Perché un build ottimizzato

kc.sh build risolve in anticipo il vendor del database e i feature flag. Il runtime parte poi con start --optimized, saltando il passaggio di build a ogni avvio. Il compromesso: le impostazioni fissate al momento del build (in particolare KC_DB) restano bloccate nell'immagine - cambiarle richiede una ricostruzione. I dettagli di connessione e l'hostname restano invece variabili d'ambiente a runtime. Vedi il riferimento di configurazione.

Flusso di richiesta/login

L'app Schuly si autentica sul realm schuly tramite OIDC (il client pubblico schuly-app, con PKCE). Keycloak serve le pagine di login personalizzate, applica il flusso 2FA browser-2fa e conserva utenti e sessioni in Postgres. Health check e metriche sono esposti separatamente sulla porta 9000, riservata al solo monitoraggio interno.

Mappa dei sorgenti

Consulta la tabella sulla struttura del repository nell'indice della documentazione per sapere quale file fa cosa.