Chiarimenti su API ANPR e problemi con ambiente di test
Buongiorno, sto lavorando a un progetto che prevede il monitoraggio delle richieste di cambio residenza, e ho necessità di interfacciarmi con i servizi ANPR.
API disponibili: esistono solo WebService SOAP o anche API REST? In caso affermativo, dove posso reperire la documentazione ufficiale anche per quest'ultime?
Ambiente di test: mi è stata configurata un'utenza su TEST COMUNI (SVILUPPO) - Comune di Napoli. Sto seguendo la documentazione nella sezione "Strumenti di Supporto" ed effettuando test sui servizi SOAP (con il tool tool-testconn), utilizzando il certificato di postazione generato e l’endpoint https://wspre.anpr.interno.it, ma ottengo errore “Rejected by policy”.
Supporto richiesto: Esiste un modo per verificare se la configurazione (certificato, endpoint, chiamata) è corretta?
Quali informazioni è utile fornire per ricevere supporto (es. log, struttura della request, ecc.)? Esistono altri canali ? @e-mattei posso chiedere a te?
Grazie in anticipo per ogni chiarimento che potrete fornire. Saverio
Buongiorno, purtroppo per la gestione delle richieste di cambio residenza non esistono API REST ma solo WS SOAP, probabilmente sta prendendo errore a causa dell'endpoint errato, quello corretto è https://wstest.anpr.interno.it/.
A disposizione, saluti.
Buongiorno, prima di tutto grazie per le risposte.
Sempre con lo stesso tool, se uso il certificato presente nel pacchetto 888888-PC-0000.p12 e utilizzando la configurazione PRE e quindi https://wspre.anpr.interno.it ottengo "certificato scaduto" se invece uso
https://wstest.anpr.interno.it/ unable to find valid certification path to requested target
Al netto di ciò, con il certificato di postazione che mi hanno creato per TEST COMUNI (SVILUPPO) - Comune di Napoli posso accedere sempre a test o a pre?
Provando con il certificato di postazione invece ottengo Rejected by policy” con https://wspre.anpr.interno.it/ e anche qui se invece uso
https://wstest.anpr.interno.it/ unable to find valid certification path to requested target.
Cosa posso verificare? C'è qualche documentazione più aggiornata che posso consultare?
Saluti Saverio
Ciao @saverios84 , se non ricordo male il certificato 888888-PC-0000.p12 serviva per accedere ad un Ambiente di Test agganciato ad un Comune fittizio (FREE) con dati fittizi, che però è stato dismesso da circa 3 anni. Quindi, non funziona più. Saluti
Buongiorno, sta provando con il certificato 063049-PC-0232? Se è quello è scaduto
Buongiorno, @Eduardo1977 ok grazie, quindi conviene provare solo con il mio certificato di postazione..
@Eduardo1977 No è il certificato 063049-PC-0002 emesso il 7 giugno.
Grazie Saluti
Non vedo chiamate su wstest con 063049-PC-0002. Ne vedo sempre con 063049-PC-0232 (per esempio ce ne è una alle 16) che invoca il P000 Penso che per qualche motivo stiate puntando il certificato sbagliato
Salve, ho effettuate diverse chiamate di test (intorno alle 14:16) con il certificato 063049-PC-0002 anche direttamente dal server con indirizzo comunicato (e che dovrebbe essere autorizzato). Le chiamate le ho fatte verso : https://wstest.anpr.interno.it/ANPRTestConn/TestConn https://wspre.anpr.interno.it/ANPRTestConn/TestConn
In entrambi i casi ricevo 500
Esiste una modalità per debuggare le diverse chiamate per distinguere i vari problemi? es :
- Ip non autorizzato
- payload errrato
- certificato non valido
Grazie ancora per il supporto Saverio
Salve @saverios84
Come diceva anche @amollicone1982 continuiamo a vedere solo un certo numero di chiamate con il certificato 063049-PC-0232, ad esempio :
IDP=063049-PC-0232,IDA=12345,IDS=063049,IDE=,CF=LFFXXXXXXXXXXX,MSG=certificate has expired
In test comuni non ci sono problemi di ip non autorizzati.
Riuscite a fornirci il payload completo di richiesta risposta del server? (un pò come fosse l'output di una curl?)
Grazie in anticipo.
Saluti
Assistenza ANPR
@saverios84 se può esservi di aiuto, ho effettuato un fork del progetto che originariamente era stato messo a disposizione per l'ambiente di free test ora dimesso.
E' stato riadattato per essere usato in test comuni.
Se volete provarlo potete :
- Aggiungere il vostro certificato client di postazione nella cartella keystore/TEST
- Creare un file src/main/resources/config/TEST_Keystore.properties con seguendo l'esempio di src/main/resources/config/Example_TEST_Keystore.properties come indicato nel README.md
- Lanciare una build con maven + java 8 o da un IDE lanciare la junit : it.sogei.ws.client.ConnessioneTestComuniTest
Il progetto è un pò datato ma da una idea dei passaggi necessari per l'integrazione software , dovreste avere un output di questo tipo (lo ho appena provato con un certificato funzionante) :
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [it.interno.anpr] additivity to [false].
log4j: Level value for it.interno.anpr is [DEBUG].
log4j: it.interno.anpr level set to DEBUG
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].
log4j: Adding appender named [console] to category [it.interno.anpr].
log4j: Level value for root is [INFO].
log4j: root level set to INFO
log4j: Adding appender named [console] to category [root].
2025-07-02 15:57:35 INFO BusApplicationContext:510 - Refreshing org.apache.cxf.bus.spring.BusApplicationContext@23fe1d71: startup date [Wed Jul 02 15:57:35 CEST 2025]; root of context hierarchy
2025-07-02 15:57:35 INFO BusApplicationContext:449 - Loaded configuration file cxf.xml.
2025-07-02 15:57:35 INFO ControlledValidationXmlBeanDefinitionReader:317 - Loading XML bean definitions from class path resource [META-INF/cxf/cxf.xml]
2025-07-02 15:57:36 INFO ControlledValidationXmlBeanDefinitionReader:317 - Loading XML bean definitions from class path resource [cxf.xml]
2025-07-02 15:57:36 INFO ReflectionServiceFactoryBean:390 - Creating Service {http://sogei.it/ANPR/TestConn}TestConn from WSDL: file:/omnia/workspace/git/fork/anpr-client-example/target/classes/wsdl/testConnettivita.wsdl
2025-07-02 15:57:36 DEBUG ConfigHandler:65 - Key: (URL_WS):https://wstest.anpr.interno.it
2025-07-02 15:57:36 INFO RequestHandler:58 - ENDPOINT=https://wstest.anpr.interno.it/ANPRTestConn/TestConn
2025-07-02 15:57:36 DEBUG ConfigHandler:65 - Key: (org.apache.ws.security.crypto.merlin.keystore.alias):XXXXXX-PC-0001
2025-07-02 15:57:36 INFO TestConnHandler:40 - testConnessione invoke...
2025-07-02 15:57:37 DEBUG ConfigHandler:65 - Key: (org.apache.ws.security.crypto.merlin.keystore.alias):XXXXXX-PC-0001
2025-07-02 15:57:37 DEBUG ConfigHandler:65 - Key: (ID_OPERATORE):XXXXXXXXXXXXXXX
2025-07-02 15:57:55 DEBUG ConfigHandler:65 - Key: (ID_SEDE):XXXXXX
2025-07-02 15:57:55 DEBUG ConfigHandler:65 - Key: (ID_POSTAZIONE):XXXXXX-PC-0001
2025-07-02 15:57:55 DEBUG ConfigHandler:65 - Key: (ID_POSTAZIONE):XXXXXX-PC-0001
2025-07-02 15:57:55 DEBUG ConfigHandler:65 - Key: (PATH_KEYSTORE_POSTAZIONE):keystore/TEST/XXXXXX-PC-0001.p12
2025-07-02 15:57:55 DEBUG ConfigHandler:65 - Key: (PASS_KEYSTORE_POSTAZIONE):XXXXXX
2025-07-02 15:57:56 DEBUG ConfigHandler:65 - Key: (ID_APPLICAZIONE):12345
2025-07-02 15:57:56 DEBUG ConfigHandler:65 - Key: (org.apache.ws.security.crypto.merlin.keystore.alias):XXXXXX-PC-0001
2025-07-02 15:57:56 DEBUG ConfigHandler:65 - Key: (org.apache.ws.security.crypto.merlin.keystore.password):9DE46429
2025-07-02 15:57:56 DEBUG ConfigHandler:65 - Key: (org.apache.ws.security.crypto.merlin.keystore.password):9DE46429
2025-07-02 15:57:56 INFO AnprPortTypeTestConn:273 - Outbound Message
---------------------------
ID: 1
Address: https://wstest.anpr.interno.it/ANPRTestConn/TestConn
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml
Headers: {Accept=[*/*], SOAPAction=[""]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header>XXXXXXXX</soap:Header><soap:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="_8db5c37d-889b-4a96-9414-e1cfd6ab6541"><ns2:RichiestaConnessione xmlns:ns2="http://sogei.it/ANPR/connessione"><testataRichiesta><idOperazioneComune>1</idOperazioneComune><codMittente>aaaaaa</codMittente><codDestinatario>giusep</codDestinatario><operazioneRichiesta>OP01</operazioneRichiesta><dataOraRichiesta>2017-03-23T17:22:44.868+01:00</dataOraRichiesta><tipoOperazione>C</tipoOperazione><protocolloComune>111</protocolloComune><dataProtocolloComune>2017-03-23+01:00</dataProtocolloComune><tipoInvio>TEST</tipoInvio><dataDecorrenza>2017-03-23+01:00</dataDecorrenza><dataDefinizionePratica>2017-03-23+01:00</dataDefinizionePratica><nomeApplicativo>ANPRAPP</nomeApplicativo><versioneApplicativo>1</versioneApplicativo><fornitoreApplicativo>Sogei</fornitoreApplicativo></testataRichiesta></ns2:RichiestaConnessione></soap:Body></soap:Envelope>
--------------------------------------
2025-07-02 15:57:57 INFO AnprPortTypeTestConn:273 - Inbound Message
----------------------------
ID: 1
Response-Code: 200
Encoding: ISO-8859-1
Content-Type: text/xml
Headers: {connection=[Keep-Alive], Content-Language=[en-US], content-type=[text/xml], Date=[Wed, 02 Jul 2025 13:57:57 GMT], transfer-encoding=[chunked], X-Backside-Transport=[OK OK], X-Global-Transaction-ID=[fa4f83f368653ae57e9b393f], X-Powered-By=[Servlet/3.0]}
Payload: <?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><a:RispostaConnessione xmlns:a="http://sogei.it/ANPR/connessione"><testataRisposta><idOperazioneComune>1</idOperazioneComune><codMittente>aaaaaa</codMittente><codDestinatario>giusep</codDestinatario><operazioneRichiesta>OP01</operazioneRichiesta><dataOraRichiesta>2017-03-23T17:22:44.868+01:00</dataOraRichiesta><protocolloComune>111</protocolloComune><dataProtocolloComune>2017-03-23+01:00</dataProtocolloComune><dataDecorrenza>2017-03-23+01:00</dataDecorrenza><idOperazioneANPR>000000000000000000000000000200</idOperazioneANPR><esitoOperazione>0000</esitoOperazione></testataRisposta></a:RispostaConnessione></soapenv:Body></soapenv:Envelope>
--------------------------------------
Esecuzione InInterceptor...
Messaggio di Risposta:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<a:RispostaConnessione xmlns:a="http://sogei.it/ANPR/connessione">
<testataRisposta>
<idOperazioneComune>1</idOperazioneComune>
<codMittente>aaaaaa</codMittente>
<codDestinatario>giusep</codDestinatario>
<operazioneRichiesta>OP01</operazioneRichiesta>
<dataOraRichiesta>2017-03-23T17:22:44.868+01:00</dataOraRichiesta>
<protocolloComune>111</protocolloComune>
<dataProtocolloComune>2017-03-23+01:00</dataProtocolloComune>
<dataDecorrenza>2017-03-23+01:00</dataDecorrenza>
<idOperazioneANPR>000000000000000000000000000200</idOperazioneANPR>
<esitoOperazione>0000</esitoOperazione>
</testataRisposta>
</a:RispostaConnessione>
</soapenv:Body>
</soapenv:Envelope>
Saluti
NB: Nota abbiamo aggiunto anche un esempio dell'operazione elenco richieste dei cittadini P001.
Ciao @mttfranci , intanto grazie.
Effettuo dei test e aggiorno.
Saluti
Con il fork del client che mi hai rigirato sono riuscito ad avere delle response con 200,
quindi credo che questa volta ci siamo.
Grazie.
Una domanda: sto provando il servizio di consultazione 3002, cercando di replicare la stessa chiamata che faccio dal portale https://dptest.anpr.interno.it/combas al quale accedo con lo stesso certificato, ma non ottengo lo stesso risultato.
Dettaglio: dal portale eseguo una consultazione con nome/cognome/ricerca nazionale ed ottengo un elenco di persone.
Se popolo la seguente richiesta con il client:
<ns2:Richiesta3002 xmlns:ns2="http://sogei.it/ANPR/3000consultazione">
<testataRichiesta>
<idOperazioneComune>0</idOperazioneComune>
<codMittente>063049</codMittente>
<codDestinatario>ANPR06</codDestinatario>
<operazioneRichiesta>3002</operazioneRichiesta>
<dataOraRichiesta>2025-07-03T11:12:11.543+02:00</dataOraRichiesta>
<tipoOperazione>C</tipoOperazione>
<tipoInvio>TEST</tipoInvio>
</testataRichiesta>
<criteriRicerca>
<cognome>XXX</cognome>
<nome>XXXXX</nome>
<ricercaNazionale>S</ricercaNazionale>
<italiaEstero>italia</italiaEstero>
</criteriRicerca>
<datiRichiesta>
<schedaAnagraficaRichiesta>1</schedaAnagraficaRichiesta>
<dataRiferimentoRichiesta>2025-07-03+02:00</dataRiferimentoRichiesta>
<datiAnagraficiRichiesti>2</datiAnagraficiRichiesti>
</datiRichiesta>
</ns2:Richiesta3002>
Utilizzando lo stesso certificato:
ID_OPERATORE=#cfoperatore
ID_SEDE=063049
ID_POSTAZIONE=063049-PC-0002
ID_APPLICAZIONE=12345
ID_TRANSAZIONE=99999
URL_WS=https://wstest.anpr.interno.it
Ottengo:
<errore>
<codiceErroreAnomalia>EN122</codiceErroreAnomalia>
<tipoErroreAnomalia>E</tipoErroreAnomalia>
<testoErroreAnomalia>La richiesta effettuata non produce alcun risultato</testoErroreAnomalia>
</errore>
Domanda: c'è qualche differenza tra i due ambienti o è qualche parametro che manca?
Nel frattempo procedo anche con qualche test sulla parte P001.
Grazie ancora.
Ciao @mttfranci , ho fatto qualche test anche su P001 e P002 e vanno a buon fine!
Grazie! Saverio
Ci fa piacere.
Saluti
Assistenza ANPR