ministero-salute / it-fse-support

https://ministero-salute.github.io/it-fse-support/
33 stars 20 forks source link

Validazione per accreditamento software #944

Closed StefanoV1989 closed 2 months ago

StefanoV1989 commented 2 months ago

Buongiorno, stiamo riscontrando alcuni problemi durante l'invio di un referto RSA per le operazioni di verifica.

Di seguito l'errore ottenuto: {"type":"https://govway.org/handling-errors/403/AuthorizationContentDeny.html","title":"AuthorizationContentDeny","status":403,"detail":"Unauthorized request content","govway_id":"5a15a636-4b36-11ef-a6bf-005056ae7395"}

Abbiamo aggiustato il tiro sul alcuni parametri leggendo le issues di questa repository, ma ancora l'errore persiste.

vigliottim commented 2 months ago

Buongiorno, dalle analisi effettuate sui log della chiamata con "govway_id":"5a15a636-4b36-11ef-a6bf-005056ae7395", è emerso che è stato utilizzato il certificato di signature nel X-Security-Token anziché quello di autenticazione:

image

Il certificato da utilizzare per la creazione del canale https è quello di autenticazione (A1XXXXXXXXX) mentre quello di firma (S1XXXXXXXXX) serve per firmare i token, come indicato nel seguente commento: 654#issuecomment La invitiamo a effettuare la correzione suggerita e riprovare. Grazie.

StefanoV1989 commented 2 months ago

Salve, grazie mille per la risposta tempestiva.

Abbiamo corretto il certificato utilizzato, ma otteniamo ancora il medesimo errore:

{"type":"https://govway.org/handling-errors/403/AuthorizationContentDeny.html","title":"AuthorizationContentDeny","status":403,"detail":"Unauthorized request content","govway_id":"d4a9b583-4b3b-11ef-a6bf-005056ae7395"}

vigliottim commented 2 months ago

Buonasera, dalle analisi svolte l'Authorization Bearer Token non risulta valido. Infatti, decodificandolo con il tool online jwt.io appare il messaggio di errore "Invalid Signature":

image

La preghiamo di rigenerare il token correggendo il seguente campo: As is: "iss": "auth:A1#111#KROMIXXX" To be: "iss": "auth:S1#111#KROMIXXX"

Rimaniamo a disposizione nel caso in cui la soluzione proposta non fosse risolutiva. Grazie.

StefanoV1989 commented 2 months ago

Buongiorno, l'errore sulla signature credo sia da attribuire al fatto che avete inserito anche la stringa "X-Security-Token=JWT;Bearer;" nel campo del jWT. Inoltre avevamo capito che nel token di autenticazione l'iss da mettere fosse A1 e nella signature fosse S1, non entrambi S1.

Abbiamo ad ogni modo inserito S1#111#KROMIXXX ad entrambi ora, e dal sito web jwt.io ci dice firma valida, ma il problema purtroppo rimane:

{"type":"https://govway.org/handling-errors/403/AuthorizationContentDeny.html","title":"AuthorizationContentDeny","status":403,"detail":"Unauthorized request content","govway_id":"32f122c9-4d79-11ef-a6bf-005056ae7395"}

Allego il log completo della chiamata: logcompleto.txt

Qui il risultato del test sul token nella chiamata. auth

Grazie.

LucaRogledi commented 2 months ago

Buon pomeriggio, Potrebbe confermarci che i certificati .p12 siano stati generati correttamente partendo dai .pem seguendo le indicazioni riportate nel seguente commento? https://github.com/ministero-salute/it-fse-support/issues/759#issuecomment-2058722478 Grazie

StefanoV1989 commented 2 months ago

Salve, se intende per la connessione all'endpoint tramite curl, non utilizziamo il p12 ma direttamente il pem A1#111#KROMIXXX e la sua key separatamente. E' la libreria curl direttamente che poi li utilizza per fare la chiamata.

Se proviamo ad utilizzare il p12 generato tramite il commento da lei indicato, otteniamo il seguente errore:

`Verbose information:

Rettifico, l'errore è il seguente: `* Connected to modipa-val.fse.salute.gov.it (217.175.50.111) port 443

Nella richiesta generata ed inviata a sogei per la generazione dei certificati, la key FORSE conteneva una password. può essere questo il problema? doveva essere vuota?

EDIT 2: Abbiamo provato anche senza password e la risposta è la medesima. Ad ogni modo inserendo il PEM di autenticazione con la sua key separatamente, prima vi arrivava almeno il messaggio. Quindi non credo sia un problema di certificato di autenticazione al server. Quanto più qualche parametro errato nei JWT a questo punto. Attendo una vostra dritta. Grazie.

LucaRogledi commented 2 months ago

Salve, Intendevamo proprio la generazione deli certificati .p12 a partire dai certificati .pem ricevuti per email. Tramite curl è richiesto l'utilizzo del certificato di autenticazione A1*** .p12 e questo può essere specificato tramite i parametri --cert-type P12 --cert {cert_authentication.p12}:{password}. La informiamo che è corretto utilizzare una password per la key durante la generazione dei certificati, che poi dovra essere specificata all'interno della chiamata ( sostituendo il placeholder {password} ). Riportiamo di seguito un commento dove può trovare un esempio corretto di chiamata del servizio di validazione tramite curl, dove è necessario sostituire i placeholder con i valori richiesti: https://github.com/ministero-salute/it-fse-support/issues/915#issuecomment-2225197060 Restiamo a disposizione per ulteriore supporto. Grazie

StefanoV1989 commented 2 months ago

Salve, abbiamo provato a lanciare da terminale il comando curl da lei indicato, ed il risultato è nuovamente il seguente errore:

{"type":"https://govway.org/handling-errors/403/AuthorizationContentDeny.html","title":"AuthorizationContentDeny","status":403,"detail":"Unauthorized request content","govway_id":"3e66e465-4dbe-11ef-a6bf-005056ae7395"}

LucaRogledi commented 2 months ago

Buongiorno, Riguardo ai token Bearer e Signature, la invitiamo ad apportare la seguente correzione: (La key "jti" deve contenere i caratteri in minuscolo)

As is: "Jti": "S219",

To be: "jti": "S219",

Inoltre Le chiederemmo gentilmente se puo confermarci quanto riportato di seguito:

Restiamo a disposizione per ulteriore supporto. Grazie

StefanoV1989 commented 2 months ago

Buongiorno, confermo l'utilizzo del p12 e del comando indicato nel commento.

Allego il comando lanciato via terminale di windows per esteso. curl.txt

La response è la seguente: {"type":"https://govway.org/handling-errors/403/AuthorizationContentDeny.html","title":"AuthorizationContentDeny","status":403,"detail":"Unauthorized request content","govway_id":"99f57c6f-4e5a-11ef-a6bf-005056ae7395"}

Il jwt di autenticazione, come può vedere dalla request nel file curl.txt è la seguente: { "sub": "PROVAX00X00X000Y^^^&2.16.840.1.113883.2.9.4.3.2&ISO", "aud": "https://modipa-val.fse.salute.gov.it/govway/rest/in/FSE/gateway/v1", "iss": "auth:S1#111#KROMIXXX", "exp": 1722337646, "iat": 1722334046, "jti": "A294" }

Mentre la signature è la seguente: { "sub": "PROVAX00X00X000Y^^^&2.16.840.1.113883.2.9.4.3.2&ISO", "subject_role": "AAS", "purpose_of_use": "TREATMENT", "iss": "integrity:S1#111#KROMIXXX", "locality": "ASP CROTONE^^^^^&2.16.840.1.113883.2.9.4.1.3&ISO^^^^180202004500", "subject_application_version": "V.1.0", "subject_organization": "Regione Calabria", "subject_organization_id": "180", "aud": "https://modipa-val.fse.salute.gov.it/govway/rest/in/FSE/gateway/v1", "patient_consent": true, "action_id": "CREATE", "attachment_hash": "992fb5193102f7fddb90f746eb10b0ef3e6de13b723d64d6e1b36b472470b4c0", "resource_hl7_type": "('11502-2^^2.16.840.1.113883.6.1')", "subject_application_id": "FastScicolo", "exp": 1722337646, "subject_application_vendor": "Kromix", "iat": 1722334046, "jti": "S295", "person_id": "RSSMRA80A01H501A^^^&2.16.840.1.113883.2.9.4.3.2&ISO" }

Entrambe le firme dei JWT risultano valide.

Come può vedere dal comando nel file curl.txt è stato utilizzato il file p12 generato tramite il comando indicato da lei. Come visualizzato nel commento abbiamo anche verificato che il file p12 sia corretto tramite il comando openssl pkcs12 -in autenticazione.p12 e inserendo la password della key e del pem (che coincidono) tutto risulta perfettamente regolare.

Non abbiamo altre idee su cosa possa generare il problema essendo il comando lanciato direttamente da terminale di windows con curl.

LucaRogledi commented 2 months ago

Buon pomeriggio, l'errore da lei riscontrato sembrerebbe essere dovuto ad un problema di certificati.

Per risolvere l'errore riscontrato la invitiamo a procedere con una nuova richiesta di certificati seguendo quanto riportato in documentazione per l'invio delle 2 CSR.

Infine una volta ricevuti i certificati .pem la invitiamo a seguire le indicazioni del commento: https://github.com/ministero-salute/it-fse-support/issues/759#issuecomment-2058722478 per la generazione dei 2 certificati .p12 di firma e autenticazione e riprovare la chiamata dei servizi.

Restiamo a disposizione in caso l'errore dovesse ripresentarsi. Grazie

StefanoV1989 commented 2 months ago

Buongiorno, abbiamo richiesto dei nuovi certificati. L'errore è il seguente:

{"type":"https://govway.org/handling-errors/403/AuthorizationContentDeny.html","title":"AuthorizationContentDeny","status":403,"detail":"Unauthorized request content","govway_id":"db1b42a3-50a4-11ef-a6bf-005056ae7395"}

Di seguito il comando lanciato da terminale: curl.txt

StefanoV1989 commented 2 months ago

Perdonatemi, avevo lasciato auth: S1#111#KROMIXX sul jwt di autenticazione. Ora corretto, ma l'errore è sempre quello. Ri-allego la richiesta curl originale, e l'errore correlato:

curl.txt

{"type":"https://govway.org/handling-errors/403/AuthorizationContentDeny.html","title":"AuthorizationContentDeny","status":403,"detail":"Unauthorized request content","govway_id":"c8fa08ec-50a5-11ef-a6bf-005056ae7395"}

Se necessario, posso anche allegare i 2 p12 per dei test piu approfonditi.

Ho notato anche che se dal comando elimino il requestBody, ottengo il seguente errore: {"type":"https://govway.org/handling-errors/400/InvalidRequestContent.html","title":"InvalidRequestContent","status":400,"detail":"Request content not conform to API specification: Validation error(s) :\nbody: Field 'requestBody' is required. (code: 1026)\nFrom: body.<required>\n","govway_id":"9fda6d06-50a6-11ef-a6bf-005056ae7395"}

Il che sembra un pò strano, perché immagino che se viene controllato il body della richiesta, ho già passato la fase di autenticazione. A meno che i vostri sistemi non controllino PRIMA la conformità della richiesta, e subito dopo le chiavi di autenticazione.

LucaRogledi commented 2 months ago

Buongiorno, Dalle analisi effettuate sulla chiamata con identificativo "govway_id":"c8fa08ec-50a5-11ef-a6bf-005056ae7395" risulta che l'errore è dovuto dall'utilizzo di un token Bearer, generato tramite il certificato A1***.

image

Il Token bearer deve essere generato utilizzando il certificato di firma S1*** come il token di Signature, contenendo poi all'interno del campo "iss":

Bearer "iss":"auth:S1#111#KROMIXSOC"

Signature "iss":"integrity:S1#111#KROMIXSOC"

La invitiamo gentilmente a riprovare la chiamata dopo aver rigenerato i token utilizzando il certificato di firma S1*** e utilizzato il certificato di Autenticazione A1*** all'interno del X-Security-Token per la comunicazione.

Segnaliamo inoltre che all'interno della chiamata curl sembra non sia stata inserita la password per il certificato di Autenticazione utilizzato, diversamente da quanto riportato nella chiamata di esempio. curl.txt - --cert autenticazione.p12 https://github.com/ministero-salute/it-fse-support/issues/915#issuecomment-2225197060 (curl esempio) - --cert {cert_authentication.p12}:{password}

Restiamo a disposizione per eventuali chiarimenti e ringraziamo per la collaborazione.

StefanoV1989 commented 2 months ago

Salve, abbiamo utilizzato ora il certificato di firma per entrambi i token JWT e credo sia andato tutto a buon fine perché l'esito è stato il seguente:

{"traceID":"b07ee0df321797f4","spanID":"b07ee0df321797f4","type":"/msg/syntax","title":"Errore di sintassi.","detail":"ERROR: -1,-1 cvc-complex-type.2.4.a: Invalid content was found starting with element 'component'. One of '{\"urn:hl7-org:v3\":recordTarget, \"urn:hl7-org:v3\":author}' is expected.,ERROR: -1,-1 cvc-complex-type.3.2.2: Attribute 'id' is not allowed to appear in element 'section'.","status":400,"instance":"/validation/error","workflowInstanceId":"2.16.840.1.113883.2.9.2.180.4.4.f52bf56e94dc36b1edc0615111c985b8cb40673174dd22bd78670fb5941fe3f5.8b8203820e^^^^urn:ihe:iti:xdw:2013:workflowInstanceId"}

Il case1 era corretto in base all'applicativo di test locale, ma a quanto pare con il servizio di validazione c'è un controllo piu severo. Seguirò le indicazioni per correggere tutti i test case.

Chiedo vostra conferma se questo errore è consecutivo a quello dell'autenticazione (cioé se ora il token funziona ed abbiamo risolto), ed in caso positivo si può procedere alla chiusura della issue.

Grazie per l'aiuto!

LucaRogledi commented 2 months ago

Buonasera, Confermiamo che la chiamata è andata a buon fine e il messaggio di errore ricevuto è la risposta alla validazione del cda iniettato nel pdf. Procediamo alla chiusura e restiamo a disposizione per ulteriore supporto. Grazie