# Progetto B PSD — collaudo manuale Authentik e Aritmolab Questo documento verifica il percorso finale di produzione. Si esegue soltanto dopo il PASS del Progetto A e dopo che Sol ha completato i preflight Authentik, Supabase, Nginx e bilanciatore. ## Regole - Usare identità di prova approvate: una ordinaria, una amministrativa e, se disponibile, una senza gruppi ThothII. - Non acquisire token, cookie, password, chiavi private, claim completi o trace browser contenenti URL di callback con parametri. - Partire dalla home reale di Aritmolab, non da un URL interno di ThothII. - Segnare `PASS`, `FAIL` o `PENDING`; non dedurre il PASS da test automatici. ## Dati iniziali | Campo | Valore redatto | |---|---| | Data/ora UTC | | | SHA ThothII/workspace | | | Origine pubblica | | | SHA/revisione Aritmolab | | | Nome/ID applicazione Authentik | non inserire secret | | Database Supabase | | | Schema sessioni | `thoth_sessions` | | Operatore/revisore | | ## 1. TLS, routing e pagina iniziale | Prova | Azione | Risultato atteso | Esito | Note | |---|---|---|---|---| | HTTP | aprire origine in HTTP | redirect a HTTPS | | | | Certificato | ispezionare il lucchetto/catena | hostname corretto, nessun warning | | | | Home Aritmolab | aprire URL ufficiale | pagina disponibile | | | | Sidebar | individuare ThothII | link presente come prima | | | | Destinazione | aprire il link | nuovo frontend ThothII | | | | API | caricare l’app | nessun 502/404 o mixed content | | | | SSE | avviare attività modello | aggiornamenti continui, niente buffering evidente | | | ## 2. Single sign-on Chiudere ogni precedente sessione di test secondo la procedura concordata. Accedere ad Aritmolab con l’identità ordinaria, quindi aprire ThothII dalla sidebar. | Prova | Risultato atteso | Esito | Note | |---|---|---|---| | Primo login | Authentik autentica l’utente | | | | Passaggio sidebar | nessuna seconda richiesta di credenziali | | | | Callback | ritorno all’origine pubblica ThothII | | | | Identità | nome visualizzato coerente, senza dati grezzi del token | | | | Browser storage | nessun access/id token in Local/Session Storage | | | | Cookie | cookie ThothII HttpOnly/Secure/SameSite secondo configurazione | | | Non copiare il valore del cookie nel rapporto. ## 3. Ruoli e autorizzazione | Identità/caso | Risultato atteso | Esito | Note | |---|---|---|---| | Gruppo utente | può creare, leggere e gestire le proprie sessioni | | | | Gruppo utente | Pi Management e funzioni admin negate con 403/non visibili | | | | Gruppo admin | funzioni amministrative documentate disponibili | | | | Nessun gruppo mappato | autenticato ma operazioni protette negate | | | | Gruppo estraneo aggiuntivo | nessun cambiamento e nessun warning | | | | Header identità forgiato | nessun privilegio aggiuntivo | | | Le prove su claim mancante/malformato possono essere eseguite da Sol con un’identità/provider di test controllato. Il revisore verifica soltanto esito HTTP generico e report redatto, mai il token. ## 4. Logout e riavvio | Prova | Azione | Risultato atteso | Esito | Note | |---|---|---|---|---| | Logout ThothII | usare il comando dell’app | cookie ThothII revocato | | | | SSO ancora attivo | riaprire ThothII | possibile nuovo accesso senza password; documentare | | | | Logout Authentik globale | se configurato e in scope | comportamento conforme alla policy locale | | | | Riavvio core | Sol riavvia in finestra controllata | sessione browser valida secondo TTL/policy | | | | Provider indisponibile | prova controllata | nuovo login fallisce chiuso e redatto | | | | Ripristino provider | ripetere diagnosi/login | servizio torna operativo | | | Non dichiarare “logout globale” se è stato testato soltanto il logout locale di ThothII. ## 5. Sessioni PostgreSQL e isolamento | Prova | Risultato atteso | Esito | Note | |---|---|---|---| | Migrazioni | `pending=[]`, `drifted=[]` | | | | Schema | `thoth_sessions` nel database Supabase esistente | | | | PostgREST | schema non esposto | | | | RLS | forzata sulle tabelle previste | | | | Utente A/B | ciascuno vede soltanto le proprie sessioni | | | | Accesso incrociato | risposta not-found/negata come da contratto | | | | Admin | accesso trasversale solo secondo permessi documentati | | | | Credenziale migratore | non montata nel core | | | | Schema clinico | nessun nuovo privilegio runtime | | | ## 6. Sessione completa sotto OIDC Come utente ordinario, eseguire una domanda innocua approvata e completare F1–F8. | Prova | Risultato atteso | Esito | Note | |---|---|---|---| | Creazione | sessione associata all’identità OIDC | | | | Gate F1–F8 | tutti presentati e registrati correttamente | | | | Resume | ritorna alla sessione corretta | | | | SQL finale | sola lettura e validato | | | | Persistenza | manifest, artefatti e decisioni in PostgreSQL | | | | SSE/chat | funzionano live; non richiesti come artefatti persistiti | | | | Riavvio | sessione di lavoro ancora disponibile | | | ## 7. Integrazione e pulizia finale | Prova | Risultato atteso | Esito | Note | |---|---|---|---| | Endpoint temporaneo A | rimosso/non instradato | | | | Vecchio stack | fermo, non esposto | | | | Link sidebar | punta solo alla nuova release | | | | Servizi privati | core/Qdrant/Ollama non pubblicati | | | | Altri servizi Nginx | invariati e sani | | | | Rollback | procedura verificata e disponibile | | | | Evidenze | nessun secret o dato clinico identificabile | | | ## 8. Decisione Decisione finale: `PROJECT_B_PASS` / `PROJECT_B_FAIL` / `PROJECT_B_PENDING` Revisore e data: ______________________________________ Motivazione sintetica: ______________________________________ Conferma percorso finale “Aritmolab → sidebar → ThothII → SSO”: ______________________________