Adeguamento al formato di errori
Le Linee Guida di Interoperabilità prevedono l’adozione del formato Problem Details , come definito nella specifica RFC 7807 (https://tools.ietf.org/html/rfc7807), per la rappresentazione strutturata delle informazioni di errore.
Tutti gli errori generati da GovWay (ad esempio, errori di autenticazione o indisponibilità del backend) rispettano tale specifica e risultano conformi alle Linee Guida, come descritto nella sezione REST Problem Details - RFC 7807.
Al contrario, il formato degli errori previsto dalle specifiche SUAP e SUE non risulta conforme, in quanto prevede la trasmissione degli errori attraverso oggetti JSON con una struttura differente, di cui si riporta di seguito un esempio:
{ "code": "ERROR_401_001", "message": "PDND token not found"}
Utilizzando GovWay per la gestione dell’interoperabilità ModI, non è possibile delegare direttamente a livello di backend tutti i casi di errore previsti dalle specifiche tecniche (SUAP - DPR-160, SUE - Allegato Tecnico). Ciò è dovuto al fatto che alcune comunicazioni vengono gestite direttamente da GovWay stesso, in presenza di errori di interoperabilità (ad esempio, token PDND non valido) o di problematiche di connettività verso il backend (ad esempio, connection refused o timeout).
Per garantire la conformità con i formati di errore attesi è possibile attivare un plugin di tipo ‘message handler’ (Opzioni Avanzate per Erogazioni/Fruizioni) all’interno dell’erogazione dei servizi SUAP o SUE.
Questo plugin consente di gestire i casi di errore e di trasformarli nella struttura JSON attesa dalle rispettive specifiche tecniche.
Gli errori gestiti da GovWay sono i seguenti:
ERROR_400_001 - incorrect request input: uno o più parametri e/o la forma del body dell’operation non rispettano la sintassi definita nell’IDL OpenAPI.
ERROR_401_001 - PDND token not found: token di autorizzazione della PDND non presente nella richiesta.
ERROR_401_002 - Invalid PDND token: token di autorizzazione della PDND non valido.
ERROR_401_003 - AgID-JWT-Signature token not found: la richiesta non contiene l’header AgID-JWT-Signature.
ERROR_401_004 - invalid AgID-JWT-Signature token: token nell’header AgID-JWT-Signature non valido.
ERROR_404_001 - resource not found: risorsa richiesta non esistente.
ERROR_428_001 - hash not found: gestisce esclusivamente il caso in cui il parametro obbligatorio “If-Match” non sia presente nella richiesta.
ERROR_500_007 - response processing error: copre solamente i due casi seguenti:
backend non disponibile: rappresenta la casistica in cui il backend non è raggiungibile per vari motivi (es. connection refused, connection timeout, read timeout).
backend torna una risposta 5xx senza content-type o con un content-type differente da application/json.
Nota
Rimangono a carico dell’implementazione del backend gli altri codici di errore.
Per attivare il plugin agire come segue:
Utilizzando la console in modalità avanzata (sezione Modalità Avanzata) accedere al dettaglio dell’erogazione per cui si intende abilitare la gestione personalizzata dell’errore. Entrare quindi nella sezione ‘Configura -> Opzioni Avanzate’
Fig. 542 Sezione “Opzioni Avanzate” di una erogazione o fruizione
Nella sezione ‘Handlers’, sotto-sezione ‘Handlers per la Risposta’, cliccare sul link ‘Out (precedente all’inoltro dei dati)’ per poter registrare l’handler che realizza la personalizzazione dell’errore come atteso dalle specifiche SUAP/SUE.
Fig. 543 Attivazione plugin per la personalizzazione degli errori SUAP/SUE.
Infine per gestire l’errore ‘ERROR_400_001’ deve essere abilitata la validazione dei contenuti agendo come segue nella sezione: “Erogazione -> Dettaglio -> Configurazione -> Validazione”
Fig. 544 Attivazione validazione dei contenuti per la personalizzazione dell’errore “ERROR_400_001”
Nota
Le GovLet descritte nella sezione GovLet per la configurazione delle erogazioni attivano già il plugin e la validazione dei contenuti su tutte le erogazioni che configurano.