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.