italia / anpr

Issue tracker e documentazione di ANPR - Anagrafe Nazionale della Popolazione Residente
Creative Commons Attribution 4.0 International
181 stars 49 forks source link

[PDND C029] Errore di comunicazione con e-Service PDND C029-servizioAccertamentoDatiAnagrafici-approvazione_automatica #4105

Closed antoniopantocb closed 1 year ago

antoniopantocb commented 1 year ago

Buongiorno, effettuando una chiamata verso il vostro servizio di interop della piattaforma PDND (C029-servizioAccertamentoDatiAnagrafici) abbiamo ricevuto un errore di cui vorremmo avere qualche specifica.

Nel dettaglio:

Data di invio: 18/09/2023

La piattaforma PDND ha generato correttamente l'access token che abbiamo incluso nell'header della chiamata.

I nostri dati inviati: "curl -X 'POST' \ 'https://modipa.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C029-servizioAccertamentoDatiAnagrafici/v1/anpr-service-e002' \ -H 'accept: application/json' \ -H 'Authorization: Bearer " . $voucher . "' \ -H 'Agid-JWT-TrackingEvidence: " . $jwt . "' \ -H 'Digest: SHA-256=" . $jwt_sha256 . "' \ -H 'Content-Type: application/json' \ -d '{ \"idOperazioneClient\": \"6000\", \"criteriRicerca\": { \"codiceFiscale\": \"XXX\" }, \"datiRichiesta\": { \"dataRiferimentoRichiesta\": \"2023-09-18\", \"motivoRichiesta\": \"XXX-23\", \"casoUso\": \"C029\" } }' "

L'errore ricevuto:

Returned with status 0 and output: Array ( [0] => {"type":"https://govway.org/handling-errors/400/InteroperabilityInvalidRequest.html","title":"InteroperabilityInvalidRequest","status":400,"detail":"Received request is not conform to the required interoperability profile","govway_id":"0efa01ac-5628-11ee-a7c4-005056ae6555"} )

Grazie

amollicone1982 commented 1 year ago

Buongiorno, state facendo dei test in ambiente di produzione anzichè collaudo. Questa la url di collaudo: https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C029-servizioAccertamentoDatiAnagrafici/v1/anpr-service-e002'

Naturalmente dovrete sottoscrivere un accordo di fruizione sulla pdnd di collaudo

antoniopantocb commented 1 year ago

Buongiorno, chiedo all mia amministrazione di attivarla e appena pronta rilancio lo script e l'aggiorno se tutto ok. Grazie intanto

Antonio Pantò UOC - Innovazione tecnologica via XXV Aprile, 4 - 20092 Cinisello Balsamo 02 66023 - 711 [ http://www.comune.cinisello-balsamo.mi.it/ | www.comune.cinisello-balsamo.mi.it ] [ http://www.facebook.com/comunedicinisellobalsamo | www.facebook.com/comunedicinisellobalsamo ]

Da: "amollicone1982" @.> A: "italia/anpr" @.> Cc: "antoniopantocb" @.>, "Author" @.> Inviato: Martedì, 19 settembre 2023 9:44:36 Oggetto: Re: [italia/anpr] [PDND C029] Errore di comunicazione con e-Service PDND C029-servizioAccertamentoDatiAnagrafici-approvazione_automatica (Issue #4105)

Buongiorno, state facendo dei test in ambiente di produzione anzichè collaudo. Questa la url di collaudo: [ https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C029-servizioAccertamentoDatiAnagrafici/v1/anpr-service-e002 | https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C029-servizioAccertamentoDatiAnagrafici/v1/anpr-service-e002 ] '

— Reply to this email directly, [ https://github.com/italia/anpr/issues/4105#issuecomment-1724992531 | view it on GitHub ] , or [ https://github.com/notifications/unsubscribe-auth/BCU7DWDQL6UQT6NYI7IZBV3X3FEN3ANCNFSM6AAAAAA442LVSQ | unsubscribe ] . You are receiving this because you authored the thread. Message ID: <italia/anpr/issues/4105/1724992531 @ github . com>

antoniopantocb commented 1 year ago

Buonasera, richiamando il servizio in ambiente di collaudo la piattaforma PDND ci ritorna l'access token da spendere ma il servizio ANPR ritorna il seguente messaggio:

Checkresult: access_token Expire_in: :600, Returned with status 60 and output: Array ( )

Può darci qualche dettaglio del problema? Grazie in anticipo Cordialmente

amollicone1982 commented 1 year ago

Ci dovrebbe essere un govway-id restituito dal servizio. Quale url sta chiamando?

antoniopantocb commented 1 year ago

https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C029-servizioAccertamentoDatiAnagrafici/v1/anpr-service-e002

antoniopantocb commented 1 year ago

Ho notato che in PDND indicano uno diverso dallo yalm

antoniopantocb commented 1 year ago

indicano questo: https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR/C029-servizioAccertamentoDatiAnagrafici/v1

amollicone1982 commented 1 year ago

se vede su pdnd lo yaml la url è leggermente diversa dall'audience: https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C015-servizioAccertamentoGeneralita/v1

quello sopra indicato è l'aud

antoniopantocb commented 1 year ago

ok ma nella chiamata abbiamo messo quello giusto, corretto?

antoniopantocb commented 1 year ago

grazie per l'aiuto così tempestivo, è un buon servizio

amollicone1982 commented 1 year ago

quello non lo so. lo chiedo a voi. se chiamate la url giusta ricevete sicuramente una risposta con codice http (404, 400) e un govway-id

antoniopantocb commented 1 year ago

abbiamo chiamato questa url https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C029-servizioAccertamentoDatiAnagrafici/v1/anpr-service-e002 E' corretto?

amollicone1982 commented 1 year ago

si è corretta. la chiamate in POST? Cosa ricevete in risposta?

antoniopantocb commented 1 year ago

in POST con una curl

"curl -X 'POST' \ 'https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C029-servizioAccertamentoDatiAnagrafici/v1/anpr-service-e002' \ -H 'accept: application/json' \ -H 'Authorization: Bearer " . $voucher . "' \ -H 'Agid-JWT-TrackingEvidence: " . $jwt . "' \ -H 'Digest: SHA-256=" . $jwt_sha256 . "' \ -H 'Content-Type: application/json' \ -d '{ \"idOperazioneClient\": \"00001\", \"criteriRicerca\": { \"codiceFiscale\": \"QRTSGT90A01H501B\" }, \"datiRichiesta\": { \"dataRiferimentoRichiesta\": \"2023-09-19\", \"motivoRichiesta\": \"100-23\", \"casoUso\": \"C029\" } }' ";

riceviamo:

Returned with status 60 and output: Array ( )

amollicone1982 commented 1 year ago

ho verificato che 60 è un errore di curl che non trusta il certificato dell'endpoint che puntate

antoniopantocb commented 1 year ago

Si il voucher ci viene restituito correttamente, se serve lo posso mettere in chiaro (per mail?)

Come info: In ambiente di produzione l'id del messaggio di eerore veniva restituito da ANPR... Il codice è lo stesso (php)

antoniopantocb commented 1 year ago

Non trusta il certificato perché viene respinto da ANPR? forse è dipeso da sha256? noi facciamo l'has del jwt finale, è forse un errore?

grazie ancora infinite per la pazienza (top)

antoniopantocb commented 1 year ago

potrebbe essere che noi abbiamo un TLS più alto del vostro?

amollicone1982 commented 1 year ago

dovete mettere l'opzione -k. Stiamo parlando di trustare un certificato server. Non c'entra il livello di tls

antoniopantocb commented 1 year ago

ci provo e ti aggiorno

antoniopantocb commented 1 year ago

giusto!

ora ritorna l'errore :D questo:

Checkresult: access_token Expire_in: :600, Returned with status 0 and output: Array ( [0] => {"type":"https://govway.org/handling-errors/400/InteroperabilityInvalidRequest.html","title":"InteroperabilityInvalidRequest","status":400,"detail":"Received request is not conform to the required interoperability profile","govway_id":"324b0088-56fb-11ee-870a-005056ae1884"} )

Fine processo

amollicone1982 commented 1 year ago

manca il token Agid-JWT-Signature

antoniopantocb commented 1 year ago

ok che ha lo stesso contenuto di Agid-JWT-TrackingEvidence giusto?

amollicone1982 commented 1 year ago

no, avete letto le linee guida su come implementare i token richiesti (AUDIT_REST_02 e INTEGRITY_REST_02)? Documento operativo - Pattern sicurezza - v1.1.pdf

amollicone1982 commented 1 year ago

se leggete la guida vedrete che anche Agid-JWT-TrackingEvidence è fatto male

antoniopantocb commented 1 year ago

Certo le abbiamo lette:

un esempio: POST https://api.erogatore.example/rest/service/v1/hello/echo/ HTTP/1.1 Accept: application/json Autorization: Bearer AftgSSDGciFEEOiJfsI1NfsdfsdfiIsInR5c.vfd5... Agid-JWT-TrackingEvidence: eyJhbGciOiJSUzI1NiIsInR5c.vz8... Digest: SHA-256=cFfTOCesrWTLVzxn8fmHl4AcrUs40Lv5D275FmAZ96E= Content-Type: application/json {"testo": "Ciao mondo"}

Evidence contiene il JWT almeno sembra. Se non pjuoi al momento esserci di ulteriore aiuto leggeremo meglio, ma non sono fatte benissimo...

amollicone1982 commented 1 year ago

nel Agid-JWT-TrackingEvidence inviato mancano sicuramente loa, userid, userlocation come indicato dalla guida

antoniopantocb commented 1 year ago

lo so, il problema è la frammentazione delle guide, è davvero oneroso mettere insieme tutto il materiale. Se ci si basa sulla piattaforma PDND e sugli esempi in piattaforma molto non viene detto o esemplificato...

Aggiungo e ti aggiorno grazie ancora intanto

amollicone1982 commented 1 year ago

sicuramente è frammentata L'idea è che nello yaml sono censite le info richieste dal servizio (per es. AUDIT_REST_02 e INTEGRITY_REST_02) e il fruitore sul sito di agid si va a vedere come implemetare i profili censiti (l'allegato che vi ho dato lo trovate sul sito agid per le linee guida di interoperabilità). Ci aggiorniamo

antoniopantocb commented 1 year ago

Buongiorno, abbiamo fatto i compiti e ora l'errore restituito è il seguente:

Checkresult: access_token Expire_in: :600, Returned with status 0 and output: Array ( [0] => {"type":"https://govway.org/handling-errors/400/InteroperabilityInvalidRequest.html","title":"InteroperabilityInvalidRequest","status":400,"detail":"Received request is not conform to the required interoperability profile","govway_id":"19003da5-57b4-11ee-983b-005056ae5232"} )

Fine processo

Ho dubbio sull'utilizzo di UTF8... se necessario anche in php... volevo però capire il significato del govway_id restituito.

Grazie come sempre del prezioso aiuto Antonio

amollicone1982 commented 1 year ago

Questo è il payload del token integrity inviato da voi: { "iss": "b37f56fb-ac24-43a9-95bb-c22d05a679fc", "sub": "b37f56fb-ac24-43a9-95bb-c22d05a679fc", "aud": "https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR/C029-servizioAccertamentoDatiAnagrafici/v1", "purposeId": "56080e6b-b5ed-4c66-9f94-0f23b3ce96d4", "jti": "635f8c5f-5aa8-4bb7-97c1-79d8e186b6f9", "iat": 1695217107, "exp": ":600,", "signed_headers": { "digest": "N2VlODc5YTg0OGRjN2ZmMDA2NjA4ZTVmM2I4MWI4ZTNjODJlZDFiMWUxOTdiNjQ4ZjBkNWQwOTJjMjc2YTAyZQ==", "content-type": "application/json", "content-encoding": "UTF-8" } }

Gli errori sono i seguenti: Token con claim 'exp' non valido: Character : is neither a decimal digit number, decimal point, nor "e" notation exponential mark. Header HTTP 'Digest' possiede un valore non corrispondente al messaggio Claim 'signed_headers' con un formato non valido; atteso un array Header HTTP 'Digest' non presente nella lista degli header firmati (token claim 'signed_headers')

Vi allego il payload di un token fatto bene: "nbf": 1695218061, "exp": 1695218361, "jti": "377d4eef-57b5-11ee-ba10-005056ae0307", "aud": "https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR/C019-servizioAccertamentoEsistenzaVita/v1", "client_id": "6bbb319b-dd52-4435-b619-f07b3dd8005a", "iss": "MUR-INTRA", "sub": "ANIS", "signed_headers": [ { "digest": "SHA-256=l9R0KLIrHVR8lxPEFfCoecYYUypk7BUmI64hJykEg+c=" }, { "content-type": "application/json" } ] }

antoniopantocb commented 1 year ago

grazie adesso sistemo grazie 100 (top)

antoniopantocb commented 1 year ago

Ho sistemato i due errori, ho visto anche che nel token di esempio viene riportato clientId e non purposeId, e non viene riportato "content-encoding": "UTF-8"
, ma non so se è una differenza critica. La chiamata ha generato il seguente errore: govway_id":"ab9a5e43-57bd-11ee-983b-005056ae5232"

sempre se è possibile sapere il dettaglio sarebbe fantastico, intanto elimino anche le sopracitate differenze

grazie ancora intanto

amollicone1982 commented 1 year ago

Header HTTP 'Digest' possiede un valore non corrispondente al messaggio Header HTTP 'content-encoding', dichiarato tra gli header firmati, non trovato nell'http header

ho calcolato il digest del payload e dovrebbe essere questo fuh5qEjcf/AGYI5fO4G448gu0bHhl7ZI8NXQksJ2oC4= invece voi passate altro

antoniopantocb commented 1 year ago

"govway_id":"d4efe450-57c1-11ee-8298-005056ae1884"

forse è rimasto solo il problema del digest. Grazie per il calcolo. Calcolo il digest sul corpo della richiesta, fordse non è corretto... approfondisco (provo a calcolarlo per vedere se viene uguale a quello da te indicato) (top)

afrontera85 commented 1 year ago

infatti ora l'errore è solo "Header HTTP 'Digest' possiede un valore non corrispondente al messaggio"

antoniopantocb commented 1 year ago

buongiono afrontera85 corretto anche l'ultimo errore ma (aiuto!) questo il nuovo codice di errore: "govway_id":"42d74658-584b-11ee-8d8c-005056ae1884"

afrontera85 commented 1 year ago

Header HTTP 'Digest' presente in una richiesta con http payload vuoto

antoniopantocb commented 1 year ago

grazie intanto afrontera85 avevo dimenticato di aggiornare una variabile nel riscrivere il codice. Ora però il codice di errore è il seguente: "govway_id":"e4692ccb-5850-11ee-9bb9-005056ae5232"

Ma non esiste una tabella dei codici da consultare direttamente per fare il debug del codice? Per forutna voi siete (top) molto efficienti ma consultare direttamente il bug permetterebbe una risoluzione dei problemi ancora più veloce

grazie ad ogni modo Antonio

afrontera85 commented 1 year ago

suppongo sia questo l'unico modo di procedere...poi il mio collega saprà rispondere meglio al riguardo Intanto l'errore è: Validazione security token ModI 'AUDIT' della richiesta fallita Riscontrate 2 eccezioni. [Header 'Agid-JWT-TrackingEvidence'] Token senza claim 'userID' [Header 'Agid-JWT-TrackingEvidence'] Token senza claim 'userLocation'

amollicone1982 commented 1 year ago

Questo è l'unico modo per evitare attacchi di information disclosure. L'idea è quella di mettere a disposizione a breve un client di esempio. Un eventuale attaccante che un codice di errore parlante riuscirebbe a capire se ha superato o meno l'errore facendo invocazioni massive

antoniopantocb commented 1 year ago

Buongiorno amollicone ok La request è andata a buon fine, l'ultimo problema era una questione di lettere maiuscole e minuscole, quindi da rispettare nella stesura del nome dei claim. Riporto questo errore così a chi legge può tornare utile e non perdere tempo.

Grazie ancora di tutto (top)