keycloak/realm-export.json
Realm scouthub con feature Organizations abilitata, importato automaticamente
all'avvio di Keycloak (--import-realm nel docker-compose.yml alla radice).
Basato su keycloak/realm.json (bozza di riferimento), con l'aggiunta del
ruolo admin richiesto da POST /gruppi e GET /gruppi in
scouthub-home-be: creazione/elenco diretti restano riservati ad admin,
mentre un utente normale passa dal flusso self-service di richiesta
creazione gruppo (POST /richieste-creazione-gruppo), che alla review
positiva invoca la stessa createGruppo() internamente.
Contiene già:
- i realm role usati dal backend, in gerarchia composite (
adminincludecapo-gruppoincludecapo-unitaincludecapoincludecensito;admininclude anchemoderatore):admin,capo-gruppo,capo-unita,capo,censito,moderatore, più il placeholdermanage-organizations - il client scope
organization(aggiunge id/attributi della Organization nei token OIDC) - il client confidential
scouthub-home-be(service account abilitato, usato dal backend per il flow client-credentials verso le Admin REST API — il suoclientId/secretdevono corrispondere aKEYCLOAK_ORG_SERVICE_CLIENT_ID/_SECRETinscouthub-home-be/.env.example) - il client pubblico
scouthub-frontend(login utente, condiviso da tutti i frontend Angular del progetto, redirect suhttp://localhost:7000-7003/*)
Passi manuali ancora da fare dopo l'import (non automatizzabili in un realm export senza conoscere gli id generati a runtime):
- assegnare al service account di
scouthub-home-bei client role del clientrealm-management:manage-organizations,manage-users,manage-groups,view-users(permessi minimi, nonmanage-realm). Con le Fine-Grained Admin Permissions (26.7+,admin-fine-grained-authz:v1, già abilitata viaKC_FEATURES) si può poi restringere ulteriormente per singola Organization - eventuali mapper aggiuntivi sui client per garantire che
email,realm_access.roleseorganizationcompaiano nel token come atteso dasrc/middleware/authenticate.tsinscouthub-home-be(i default di Keycloak per organization scope e realm roles di solito bastano, ma vanno verificati contro la versione effettivamente in uso)
I passaggi da fare sono:
- Apri http://localhost:8081/admin e fai login (admin / admin, realm master).
- In alto a sinistra, cambia realm da master a scouthub.
- Menu laterale → Clients → clicca su scouthub-home-be.
- Vai sul tab "Service account roles" (visibile perché il client ha "Service accounts enabled").
- Clicca "Assign role".
- Nella finestra che si apre, in alto c'è un filtro impostato su "Filter by realm roles" — cambialo in "Filter by clients".
- Cerca/seleziona il client realm-management.
- Spunta questi ruoli — attenzione: ho già controllato via API l'elenco reale dei client role disponibili su realm-management in questa istanza Keycloak 26.7, e manage-groups non esiste come ruolo separato in questa versione (probabilmente
la gestione gruppi è coperta da manage-users). Quindi vedrai solo questi 3, spuntali tutti:- manage-organizations
- manage-users
- view-users
- Clicca Assign.
- Dopo fatto questo bisogna fare un user admin
I passaggi da fare per admin:
- Apri http://localhost:8081/admin, login admin/admin, cambia realm in scouthub.
- Menu laterale → Users → clicca su movioletto@yahoo.it.
- Vai sul tab "Role mapping".
- Clicca "Assign role".
- Assicurati che il filtro sia su "Filter by realm roles" (dovrebbe esserlo di default per gli utenti normali).
- Cerca e seleziona admin.
- Clicca Assign.
⚠️ Il secret del client scouthub-home-be (CAMBIA-QUESTO-SECRET-IN-UN-VAULT)
è un placeholder di sviluppo committato in chiaro, coerente con le altre
credenziali dev del progetto (vedi .env alla radice): da sostituire con un
segreto reale gestito a parte prima di qualunque uso condiviso o di
produzione.