Tabella dei contenuti
Accesso in modalità Single Sign-On (SSO)
L’accesso al BackOffice avviene in modalità Single Sign-On (SSO) tramite il meccanismo di Token Exchange. L’utente si autentica una sola volta sull’Area Riservata e viene reindirizzato al BackOffice mantenendo il contesto di sessione in modo sicuro.
1. Definizioni Chiave (I Token)
Prima di analizzare il flusso, è fondamentale distinguere i tre tipi di token coinvolti:
- SelfCareSessionToken: Gestisce la sessione generale dell'utente sul portale SelfCare. Identifica la persona fisica.
- IdentityToken: È il "token di scambio" (JWT) generato da SelfCare e passato al Back Office del prodotto. Contiene l'identità dell'utente, l'ente selezionato e il ruolo specifico (company.role). Ha una scadenza brevissima (es. 5 secondi).
- SessionToken: È il token di sessione finale, generato autonomamente dal Back Office del prodotto una volta validato l'IdentityToken.
2. Flusso Operativo Step-by-Step
Fase A: Autenticazione e Selezione su SelfCare
- Login: L'utente effettua il login sul portale SelfCare e riceve il SelfCareSessionToken.
- Selezione Ente: L'utente visualizza la lista degli enti per cui è abilitato e ne seleziona uno. L'ente e il ruolo vengono salvati localmente (Local Storage/SPA).
- Dashboard: L'utente accede alla dashboard dell'ente selezionato.
- Azione: L'utente clicca su "Gestisci" nel riquadro di un prodotto specifico (es. IO).
Fase B: Richiesta dell'IdentityToken (Exchange)
- Chiamata API: Il Front-end di SelfCare invoca l'API di back-office: GET https://api.selfcare.pagopa.it/products/{productId}/back-office?institutionId={institutionId}
- Emissione Token: Se l'utente è autorizzato, l'API risponde restituendo l'URL del Back Office del prodotto richiesto, che include l'IdentityToken come parametro. (Esempio URL: https://io.selfcare.pagopa.it/path/acs#token=<IdentityToken>) Nota: L'IdentityToken contiene l'aud (audience) specifico per il prodotto, una scadenza breve (exp) e un desired_exp per sincronizzare la sessione.
Fase C: Accesso e Validazione sul Back Office del Prodotto
- Redirect: Il Front-end di SelfCare esegue una chiamata GET verso l'URL ricevuto (il Back Office del prodotto).
- Validazione (Lato Prodotto): Il backend del prodotto riceve la richiesta e deve obbligatoriamente verificare l'IdentityToken:
- Audience (aud): Verifica che coincida con il proprio dominio.
- Firma: Recupera la chiave pubblica usando il kid (Key ID) presente nell'header del token e valida la firma del JWT.
- Creazione Sessione Finale: Una volta validato il token, il Back Office del prodotto ha la certezza che l'utente è autenticato e autorizzato. A questo punto, il prodotto genera la propria sessione locale (es. emettendo un cookie o un proprio SessionToken) secondo le proprie logiche interne.