InteroperabilityInvalidRequest 400 - ANNCSU Aggiornamento coordinate - client Python

Buongiorno a tutti,

sto implementando un client Python per l’e-service ANNCSU – Aggiornamento coordinate v.1 su PDND per conto del Comune di Patti (IPA c_g377), nell’ambito della Misura PNRR 1.3.1.

L’autenticazione PDND funziona correttamente (voucher ottenuto con auth.interop.pagopa.it).
Ogni chiamata all’endpoint di produzione restituisce però HTTP 400 InteroperabilityInvalidRequest.

Endpoint: https://modipa.agenziaentrate.gov.it/govway/rest/in/AgenziaEntrate-PDND/anncsu-aggiornamento-coordinate/v1/gestionecoordinate

Body inviato (bytes):

json

{"richiesta":{"accesso":{"codcom":"G377","progr_civico":"16340725","coordinate":{"x":"15.013479","y":"38.148081","metodo":"3"}}}}

Header HTTP:

  • Authorization: Bearer <voucher PDND>

  • Content-Type: application/json

  • Content-Encoding: identity

  • Digest: SHA-256=V6tUgtJopl6gNLd/b12L4aqLvFDRqf/Af/HfUIwQiuo=

  • Agid-JWT-Signature e Agid-JWT-TrackingEvidence: JWT firmati con chiave ModI dedicata (KID distinto da quello del voucher, entrambi nel portachiavi del Client e-service PDND)

Payload Agid-JWT-Signature (decodificato):

json

{
  "iss": "<client_id>", "sub": "<client_id>",
  "aud": "https://modipa.agenziaentrate.gov.it/.../v1/gestionecoordinate",
  "purposeId": "GESTIONE_CIVICO",
  "iat": ..., "exp": ..., "jti": "...",
  "signed_headers": [
    {"digest": "SHA-256=V6tUgtJopl6gNLd/b12L4aqLvFDRqf/Af/HfUIwQiuo="},
    {"content-type": "application/json"}
  ]
}

Payload Agid-JWT-TrackingEvidence (decodificato):

json

{
  "iss": "<client_id>", "sub": "<client_id>",
  "aud": "https://modipa.agenziaentrate.gov.it/.../v1/gestionecoordinate",
  "purposeId": "GESTIONE_CIVICO",
  "dnonce": ..., "userID": "<CF>", "userLocation": "ced@comune.patti.me.it", "LoA": "LAL2",
  "iat": ..., "exp": ..., "jti": "..."
}

Il body viene inviato come bytes e il digest è coerente tra JWT e header HTTP.
Usiamo due chiavi RSA distinte (voucher e ModI).
L’header JWT contiene alg, kid, typ ma non x5c.

Domanda principale: è obbligatorio includere il claim x5c nell’header dei JWT ModI, e in tal caso serve un certificato emesso da una CA accreditata o va bene quello autofirmato derivato dalla chiave RSA già caricata su PDND?

Ho già contattato SOGEI (infopdnd_anncsu@sogei.it) e sto aspettando una risposta.
Ultimo govway_id: 8b995f1f-59ab-11f1-99f6-005056ae302d

Grazie in anticipo.

Nino Galante

Ciao Nino,

da quello che ho potuto verificare nell’implementazione python di anncsu-sdk non serve un CA accreditata ma è sufficiente possedere la chiave privata. Le due chiavi private sono state sufficienti per far lavorare il nostro client.
Peraltro, se ti va di provarlo, vedrai che ha una comoda CLI a cui passi tutte le configurazioni (incluse le chiavi private) e poi si preoccupa lui di aggiornare i token.

Spero ti sia utile.

Saluti

Francesco