link-it / govway

API Gateway per la Pubblica Amministrazione italiana
https://govway.org
GNU General Public License v3.0
55 stars 11 forks source link

Fruizione api ANPR configurate tramite GovLet #140

Open hal-berto opened 12 months ago

hal-berto commented 12 months ago

Buongiorno, ho configurato l'accesso alle API di ANPR tramite l'apposito GovLet messo a disposizione. Sto ora effettuando alcune chiamate di test, ma senza successo. Le chiamate avvengono nel seguente modo:

Endpoint: http:///govway/out/Ente/ANPR/NotificheN000/v1 (dove "Ente" è un ente di test configurato in Govway)

Headers: Content-Type: text/xml; charset=utf-8; SOAPAction: test

Basic-autentication: ho inserito le credenziali configurate in fase di installazione della GovLet

Request body:

`

{ "idOperazioneClient":"22", "criteriRicerca":{ "codiceFiscale":"PGNLRT82C01C139P" }, "datiRichiesta":{ "dataRiferimentoRichiesta":"2023-10-25", "motivoRichiesta":"PROT.NUM.12345", "casoUso":"C001" } } ` Ottengo purtroppo in risposta il seguente errore: ` SOAP-ENV:Client.BadRequest Bad request http://govway.org/integration ` Nella console di monitoraggio delle transazioni il messaggio di errore è un po' più dettagliato: "Processo di trasformazione (freemarker-context) della richiesta fallito: Trasformazione richiesta terminata con errore: Il codiceMittente non risulta presente nella richiesta" Manca qualche dettaglio nella configurazione? Se apro il wsdl che contiene le specifiche dell'API non viene menzionato il "codiceMittente". Dove devo metterlo? Eventualmente non sarebbe possibile cambiare la configurazione per fare in modo che venga accettato un body in formato JSON?
andreapoli commented 12 months ago

Buongiorno @hal-berto, la govlet consente di realizzare tramite un wizard la configurazione necessaria a fruire dei servizi ANPR disponibili alle url 'https://wsfree.anpr.interno.it/...' (o altri ambienti wstest.anpr.interno.it, wspre.anpr.interno.it o ws.anpr.interno.it).

Le fruizioni che vengono configurate dalla GovLet si occupano di aggiungere alle richieste originali SOAP, che deve produrre il client, la sovrastruttura di sicurezza richiesta da ANPR.

Tanto premesso, la richiesta che stai utilizzando non è una richiesta SOAP valida rispetto al wsdl del servizio. Hai utilizzato un ibrido inserendo un contenuto json all'interno del soap body.

Di seguito un comando corretto per invocare il servizio 'NotificheN000':

`curl -v -X POST -u ApplicazioneANPR:123456 "http://127.0.0.1:8080/govway/out/Ente/ANPR/NotificheN000/v1?operatore=USERSFREETEST116&postazione=888116-CO-0000" -H 'Content-Type: text/xml;charset=UTF-8' -H 'SOAPAction: ""' -d '

tipoNotifica0 003106 ANPR02 2006-05-04T18:13:51.0 0 ZGVmYXVsdA== '` >> Eventualmente non sarebbe possibile cambiare la configurazione per fare in modo che venga accettato un body in formato JSON? Come detto in precedente, il wizard realizza una configurazione che richiede in input una richiesta SOAP e non consente quindi di inviare richieste JSON. Se vuoi cimentarti nella realizzazione di una configurazione come da te indicato, dovresti effettuare una nuova registrazione di API Rest (caricando un'interfaccia OpenAPI che descriva i messaggi di richiesta e risposta in json) e una nuova fruizione che implementa oltra alla logica di aggiunta dei criteri di sicurezza anche una trasformazione che realizza l'esigenza attraverso: - [trasformazione di protocollo REST to SOAP della richiesta](https://govway.org/documentazione/console/profiloApiGateway/trasformazioni/Conversione-REST-SOAP.html) - [trasformazione di protocollo SOAP to REST della risposta](https://govway.org/documentazione/console/profiloApiGateway/trasformazioni/trasformazioneRisposta.html)