Problemi check codice ipa per Metadata Service Provider Pubblico
sil-vio opened this issue · 8 comments
Buongiorno,
dobbiamo sviluppare un Service Provider Pubblico per l'ente "Cassa Nazionale di Previdenza e Assistenza Forense" censito su IPA con tipologia "Enti Nazionali di Previdenza ed Assistenza Sociale in Conto Economico Consolidato"
e con categoria "Enti di Previdenza ed Assistenza Sociale in Conto Economico Consolidato privati" (pagina dettaglio ipa).
Incontriamo delle difficoltà nella validazione del metadato da noi generato, in particolare non viene superato il check strict di produzione "test 80" che verifica la validità del codice IPA all'interno del metadata.
Questo test otteniamo come messaggio di errore "The IPACode element MUST have a valid value present on IPA". Tutti gli altri controlli vengono superati con successo.
Di seguito l'estratto del metadata di tipo Service Provider Pubblico da noi generato in cui è presente il codice IPA dell'ente:
<md:Extensions>
<spid:IPACode>cnpaf_0</spid:IPACode>
...
</md:Extensions>
Da quello che abbiamo visto sembra che in validazione dl codice IPA dell'ente venga fatto una chiamata verso i servizi esposti dall'indice IPA effettuando la ricerca delle AOO per codice Ente. Questo servizio però non restituisce nessuna AOO in quanto gli Enti con categoria "Enti di Previdenza ed Assistenza Sociale in Conto Economico Consolidato privati" per normativa non possono censire le AOO su IPA, come descritto dal seguente spaccato di documentazione IPA che potete trovare su IpaPortale nella sezione Varie nel documento Categorie Enti.
Avevamo aperto una segnalazione sul progetto italia/spid-saml-check (italia/spid-saml-check#240) ma ci è stato indicato di aprire una issue in questo progetto dato che spid-saml-check utilizza questo progetto per la validazione dei metadata.
Grazie
Ciao @sil-vio
mi sembra di capire che questa singolarità possa essere risolta in revisione durante l'operazione di onboarding, ti chiedo di sottomettere l'onboarding e di scrivere a spid.tech@agid.gov.it di questa problematica e di mettermi in cc (giuseppe.demarco@teamdigitale.governo.it)
capiremo insieme ai colleghi della AgID come trovare un workaround per questo tipo di caso
Ad oggi la soluzione sarebbe quella di modificare il validatore del codice IPA per interrogare una risorsa di indicepa.gov.it che purtroppo ad oggi risulta essere protetta da un codice di autorizzazione
questo implicherebbe che gli utenti che dovessero avere bisogno di questa risorsa protetta dovrebbero registrarsi ed includere l'id di autorizzazione nella chiamata di spid-sp-test, questo rende la configurazione più complessa
ti tengo aggiornato, spero di raggiungerei colleghi della AgID per fare una valutazione sui dati che potrebbero essere aperti ed accessibili senza alcuna forma di autentica
Ciao @peppelinux
grazie per la rapida risposta.
Forse una possibile chiamata potrebbe essere quella utilizzata in questa pagina https://www.indicepa.gov.it/ipa-portale/consultazione/indirizzo-sede/ricerca-ente.
E' possibile invocare il servizio tramite curl senza nessuna autenticazione:
curl 'https://www.indicepa.gov.it/PortaleServices/api/ente/ricerca' -H 'Accept: application/json, text/plain, */*' -H 'Content-Type: application/json'
--data-raw
'{
"paginazione":{
"campoOrdinamento":"idEnte",
"tipoOrdinamento":"asc",
"paginaRichiesta":1,
"numTotalePagine":null,
"numeroRigheTotali":null,
"paginaCorrente":null,
"righePerPagina":null
},
"codiceFiscaleRicerca":null,
"area":null,
"denominazione":null,
"codEnte":"cnpaf_0",
"idTipoServizioDigitale":null,
"lingueMinoritarie":null,
"codiceCategoria":null
}'
Risposta:
{
"errore": false,
"risposta": {
"listaResponse": [
{
"idEnte": 2577,
"codEnte": "cnpaf_0",
"codiceCategria": null,
"denominazioneEnte": "Cassa Nazionale di Previdenza e Assistenza Forense",
"codiceFiscalePG": "80027390584",
"codiceFiscalePF": null,
"indirizzo": null,
"descrizioneToponimo": null,
"strada": "Via Ennio Quirino Visconti, 8",
"siglaAutomobilistica": "RM",
"denominazioneComune": "Roma",
"area": "Via Ennio Quirino Visconti, 8 - Roma (RM)",
"tipologiaServizio": null,
"descrizioneServizio": null,
"urlServizio": null,
"numAoo": 0,
"numOu": 7
}
],
"paginazione": {
"campoOrdinamento": "idEnte",
"tipoOrdinamento": "asc",
"paginaRichiesta": null,
"numeroRigheTotali": 1,
"righePerPagina": 30,
"paginaCorrente": 1,
"numTotalePagine": 1
}
},
"descrizioneErrore": null,
"dettagliErrori": null
}
Mi sembra una buona soluzione, giro ai colleghi della AgID per validarla e con il loro ok farò la modifica al codice
FYI la funzione in python che fa questa query la trovi qui
https://github.com/italia/spid-sp-test/blob/main/src/spid_sp_test/indicepa.py
questa modifica presenta un basso effort dal punto di vista tecnico, dobbiamo solo cambiare l'URL e mappare eventualmente la response
Grazie di cuore per il contributo, spero di poterlo adottare al più presto nella prossima release
Si mi torna, avevo indagato un po' nel codice e mi torna con quello che mi dici.
Credo basti cambiare la url e la request, il json path della response su cui fare il controllo mi sembra lo stesso:
res["risposta"]["paginazione"]["numeroRigheTotali"]
In caso dimmi che possiamo fare anche un pull request con la modifica, hai già una data per la prossima release?
Devo attendere un riscontro della AgID per capire se la risorsa che hai proposto è stabile e sarà mantenuta nel tempo
Risolto da #158