From b51d9147aba99cacef8f01cade6d0b1ef697a802 Mon Sep 17 00:00:00 2001 From: pollutri Date: Mon, 8 Jun 2026 11:59:50 +0200 Subject: [PATCH] Aggioranto il readme --- README.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3abd0a8..126af40 100644 --- a/README.md +++ b/README.md @@ -543,14 +543,19 @@ Apri il file vhost (quello con i segnaposto `@@@REDIRECT@@@`, `@@@DIRECTORY@@@`, L'amministratore è identificato dal **`preferred_username` Keycloak**, controllato nei `` Apache. Per gestire più amministratori: 1. **In Keycloak** (Admin Console → Users): crea/verifica gli utenti con gli username che vuoi promuovere ad admin (es. `admin`, `alice`, `bob`). Imposta le credenziali normalmente. -2. **In Apache** (in tutti i blocchi ``, ``): elenca gli username separati da spazi sulla riga `Require claim`: +2. **In Apache** (in tutti i blocchi ``, ``): usa un blocco **``** con **una riga `Require claim` per ogni username**: ```apache - Require claim preferred_username:admin pollutri russi + + Require claim preferred_username:admin + Require claim preferred_username:alice + Require claim preferred_username:bob + ``` - (I valori multipli sono in OR — passa chiunque abbia uno di quegli username.) 3. **Reload Apache**: `apachectl configtest && systemctl reload apache2`. -**Rimuovere un admin**: togli lo username dalla riga `Require claim` di Apache (e ricarica), oppure disabilita l'utente in Keycloak. +> ⚠ **Non usare la forma compatta `Require claim preferred_username:admin alice bob`** sulla stessa riga: su alcune versioni di `mod_auth_openidc` (incluse quelle in uso sui server MajorNet) il parser dei valori space-separated è buggy e finisce per accettare solo il primo username. Il blocco `` con una riga `Require claim` per username delega la OR-logic ad Apache (`mod_authz_core`) e funziona affidabilmente. Stesso schema anche dentro ``. + +**Rimuovere un admin**: togli la riga `Require claim preferred_username:` corrispondente da `` (e ricarica Apache), oppure disabilita l'utente direttamente in Keycloak. #### Variante avanzata: ruoli Keycloak invece di username @@ -570,7 +575,9 @@ In linea di principio si potrebbe gestire la lista degli amministratori interame A quel punto, ogni nuovo admin si gestisce solo in Keycloak (assegnando/rimuovendo `cpc-admin`), senza toccare Apache. -**Quale scegliere:** se hai pochi amministratori stabili → resta con `preferred_username`, più semplice e già funzionante. Se ne hai molti o ruotano → vale la pena configurare il Mapper e passare al ruolo. +**Quale scegliere:** se hai pochi amministratori stabili → resta con `preferred_username` + ``, più semplice e già funzionante. Se ne hai molti o ruotano → vale la pena configurare il Mapper e passare al ruolo. + +> ⚠ **Sulle build MajorNet attuali anche `Require claim cpc_roles:cpc-admin` può fallire**, perché la stessa code-path che gestisce i valori space-separated gestisce anche il match contro claim di tipo array (`cpc_roles` è un array di stringhe). Se dopo aver configurato il Mapper e ricaricato Apache vedi che la `` viene bypassata (chiunque accede, anche senza il ruolo) → **resta sul pattern `` con `preferred_username`**: è l'unico schema testato come affidabile su quella build. ### Pagine inesistenti → redirect alla home Qualsiasi percorso non corrispondente a una pagina o API reale del progetto **non mostra una schermata d'errore**: viene reindirizzato alla home. È gestito lato Next da una rotta catch-all ([app/[...not_found]/page.tsx](app/%5B...not_found%5D/page.tsx)) che esegue `redirect('/')`. Le rotte reali (`/`, `/admin`, `/api/*`) hanno priorità; solo i path inesistenti finiscono lì. Le API inesistenti restano `404` (il redirect riguarda le pagine).