Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Esistenza Vita [C019] - Received request is not conform to the required interoperability profile #4496

Open
JeyjooMilano opened this issue Apr 18, 2024 · 13 comments

Comments

@JeyjooMilano
Copy link

Buongiorno,

Devo fare l'accertamento dell'esistenza vita [C019]. Abbiamo generato il voucher con successo.
Faccendo una chiamata all'endpoint: https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C019-servizioAccertamentoEsistenzaVita/v1/anpr-service-e002 riceviamo la risposta seguente:

{ "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": "b8c535f2-fd7f-11ee-b214-005056ae5232" }

Ci potete indicare il problema?

Grazie

@afrontera85
Copy link
Collaborator

L'errore è questo: Validazione security token ModI 'INTEGRITY' della richiesta fallita: Signature verification failed
Ho visto che è sbagliato l'aud, deve essere questo:
https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR/C019-servizioAccertamentoEsistenzaVita/v1

@JeyjooMilano
Copy link
Author

Grazie.
Abbiamo modificato aud.

Ecco la request che faccio:

curl --location 'https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C019-servizioAccertamentoEsistenzaVita/v1/anpr-service-e002' \ --header 'kid: TAw4jWvuG3iR37BQDe794qUBcv6Zykp6N2GeaWvujnw' \ --header 'clientId: 29dfb02f-1c17-4691-a2b2-43414750d722' \ --header 'purposeId: 2dafb21f-0a20-4783-8814-98d43d362cf9' \ --header 'Agid-JWT-TrackingEvidence: eyJhbGciOiJSUzI1NiIsImtpZCI6IlRBdzRqV3Z1RzNpUjM3QlFEZTc5NHFVQmN2Nlp5a3A2TjJHZWFXdnVqbnciLCJ0eXAiOiJKV1QifQ.ewogICJpc3MiOiAiMjlkZmIwMmYtMWMxNy00NjkxLWEyYjItNDM0MTQ3NTBkNzIyIiwKICAic3ViIjogIjI5ZGZiMDJmLTFjMTctNDY5MS1hMmIyLTQzNDE0NzUwZDcyMiIsCiAgImF1ZCI6ICJodHRwczovL21vZGlwYS12YWwuYW5wci5pbnRlcm5vLml0L2dvdndheS9yZXN0L2luL01pbkludGVybm9Qb3J0YUFOUFIvQzAxOS1zZXJ2aXppb0FjY2VydGFtZW50b0VzaXN0ZW56YVZpdGEvdjEiLAogICJwdXJwb3NlSWQiOiAiMmRhZmIyMWYtMGEyMC00NzgzLTg4MTQtOThkNDNkMzYyY2Y5IiwKICAianRpIjogIjhiNDQ2ODY4LThmMTUtNGY0OS04ZmMyLWIwNDc1N2YyNjdiNCIsCiAgImlhdCI6IDE3MTM0NDkzMzEuMCwKICAiZXhwIjogMTcxNDA0OTMzMS4wLAogICJuYmYiOiAxNzEzNDQ5MzMxLjAsCiAgImRub25jZSI6ICIxMjM0NTY3ODkwMTIzIiwKICAidXNlcklEIjogIlVzZXIxMjMiLAogICJ1c2VyTG9jYXRpb24iOiAiMjYuMi4xMi4yMyIsCiAgIkxvQSI6ICJMT0EzIgp9.GhJHPfcjVErTc73SLtYzfMqElxciZLSIFRzGKuf24gr7a2D3UCaW-bV9zH2mg-7bxEro0fuFDuZF95PSssLN5f56GOT11x7wgiByW19l6Fmd2JWH64xXV9sj1WKrlHVfcdi3Gz4qKdPFpFnCqziXw4ByDnopd-WoUP5RRnpQCYDhfe2ma3pzmKt64bldoChe-jgX1dbnJKJvlWMfjZb4CnD5dew_9jvpDuYXXvonLbyHQ073fyLjiF9OzHTrx7jd1x_Rd52lFTjC9uVmKiML5Fx1gZbEUdOd5lKdnH99WEzs0OjsaZeJdnWSm6yjPdJVYmes5RdxgaXgz9Gr1figGg' \ --header 'Agid-JWT-Signature: eyJhbGciOiJSUzI1NiIsImtpZCI6IlRBdzRqV3Z1RzNpUjM3QlFEZTc5NHFVQmN2Nlp5a3A2TjJHZWFXdnVqbnciLCJ0eXAiOiJKV1QifQ.ewogICJpc3MiOiAiMjlkZmIwMmYtMWMxNy00NjkxLWEyYjItNDM0MTQ3NTBkNzIyIiwKICAic3ViIjogIjI5ZGZiMDJmLTFjMTctNDY5MS1hMmIyLTQzNDE0NzUwZDcyMiIsCiAgImF1ZCI6ICJodHRwczovL21vZGlwYS12YWwuYW5wci5pbnRlcm5vLml0L2dvdndheS9yZXN0L2luL01pbkludGVybm9Qb3J0YUFOUFIvQzAxOS1zZXJ2aXppb0FjY2VydGFtZW50b0VzaXN0ZW56YVZpdGEvdjEiLAogICJwdXJwb3NlSWQiOiAiMmRhZmIyMWYtMGEyMC00NzgzLTg4MTQtOThkNDNkMzYyY2Y5IiwKICAianRpIjogIjVjYTFjOGEwLTBmNzctNGRkYS1iNDk0LTUxYzQzOGU0ZGZhNyIsCiAgImlhdCI6IDE3MTM0NDkzMzIuMCwKICAiZXhwIjogMTcxNDA0OTMzMi4wLAogICJuYmYiOiAxNzEzNDQ5MzMyLjAsCiAgInNpZ25lZF9oZWFkZXJzIjogWwogICAgewogICAgICAiZGlnZXN0IjogIlNIQS0yNTY9T0FnWXRmanNwNWtnNElJTkw0YnRqK1dQdnNJbzU4NVc2WFRra1c4SmU3OD0iCiAgICB9LAogICAgewogICAgICAiY29udGVudC10eXBlIjogImFwcGxpY2F0aW9uL2pzb24iCiAgICB9CiAgXQp9.d0ly3aUWiM3xmyrbYfrB2V9QzNuOdx6eqztPpT4BQQJTy8kcxWdD2wQ8mZ234Ynskmk2qIK6Rhi31HMkL8fAbojrxMxEeqmwBKVs1QS8mRibapzvZWKDbaEVRl51ACca3ZyQTS-JyZ8hzu87FjFslqXsZcifNbxZO8UOMt38PdeqSy7zShZg5x7PgLrDyjfSc3FkJEVD0ZPeKh4ZbZCpC3E5kBFnVJOLFVF1K5RFPp5yBL7UN81rfbl0fEuie8cXDs6vj5a2XofRt82Lp9X2Nlbeg9McfWGuLQu5UZmpQkv74NhMWnSJk1Bb5bx4B1OkhltaQ1Mnv-XryE1KKshHmg' \ --header 'alg: RS256' \ --header 'typ: JWT' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer eyJ0eXAiOiJhdCtqd3QiLCJhbGciOiJSUzI1NiIsInVzZSI6InNpZyIsImtpZCI6IjMyZDhhMzIxLTE1NjgtNDRmNS05NTU4LWE5MDcyZjUxOWQyZCJ9.eyJhdWQiOiJodHRwczovL21vZGlwYS12YWwuYW5wci5pbnRlcm5vLml0L2dvdndheS9yZXN0L2luL01pbkludGVybm9Qb3J0YUFOUFIvQzAxOS1zZXJ2aXppb0FjY2VydGFtZW50b0VzaXN0ZW56YVZpdGEvdjEiLCJzdWIiOiIyOWRmYjAyZi0xYzE3LTQ2OTEtYTJiMi00MzQxNDc1MGQ3MjIiLCJuYmYiOjE3MTM0NDkzOTMsInB1cnBvc2VJZCI6IjJkYWZiMjFmLTBhMjAtNDc4My04ODE0LTk4ZDQzZDM2MmNmOSIsImlzcyI6InVhdC5pbnRlcm9wLnBhZ29wYS5pdCIsImV4cCI6MTcxMzQ0OTk5MywiaWF0IjoxNzEzNDQ5MzkzLCJjbGllbnRfaWQiOiIyOWRmYjAyZi0xYzE3LTQ2OTEtYTJiMi00MzQxNDc1MGQ3MjIiLCJqdGkiOiIxNmVmNTMyMy1mMjJhLTQ4NmYtOGYwMi01NTljZWJjYzlhMzEifQ.eeTomH3p8yxhNg9ylM3jlS_6_xXP6TLl9jqdUGG2Y4bR87mIH8LXJNsqc0WhU9LhR6xYbMqKVxykbEfhlDD-VTprwqj4GLOj6IBHZqetyE85qYU2iGj9RlJTDgW62IZGZwMTT28pX1BGdfuUiOdHWhbU_cRNIM2kkzUDbjs92zgzHikLoU2g_kq8O5HTeFeS3XwZ1qLRnAawtpSpx8wHBQO971q2QnChMwK9NKGA0SAtdd2W_XFgv_VKoDnOlZOnJNFTSzmYWv3yt7G7A8jj8yzY4ixaPtqRWqtfFZ5oogu6TRPEcli12vKqz4Pt7rmT8Wb00ceRw_bqZT667PL0hw' \ --data '{ "idOperazioneClient": "1", "criteriRicerca": { "codiceFiscale": "STTSGT90A01H501J" }, "datiRichiesta": { "dataRiferimentoRichiesta": "2024-04-16", "motivoRichiesta": "esistenza in vita", "casoUso": "C019" } } '

Ecco la risposta:

{ "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": "920c0e6a-fd87-11ee-b214-005056ae5232" }

@afrontera85
Copy link
Collaborator

L'errore è ancora Validazione security token ModI 'INTEGRITY' della richiesta fallita: Signature verification failed.
L'errore 400 è relativo all'implementazione della cornice di sicurezza, dovete verificare di rispettare l'implementazione dell' INTEGRITY_REST_02.
Nell'header HTTP non passate il digest ad esempio...

@JeyjooMilano
Copy link
Author

Buongiorno. Abbiamo aggiunto il digest all'header. Ora riceviamo questa risposta:

{
"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": "ac9de692-fe1d-11ee-8562-005056ae5232"
}

Grazie

@afrontera85
Copy link
Collaborator

Stesso errore...
Decodificando l'Authorization Bearer ho visto che non c'è il pezzo:

{
"digest": {
"alg": "SHA256",
"value": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}

Dove value è il valore ottenuto applicando l'algoritmo indicato nel claim digest.alg al JWT di audit.
AUDIT_REST_02 pretende che quando si richiede il token a pdnd venga inserita nella client assertion
l'hash del token Agid-JWT-TrackingEvidence
Non avendo inserito nella client assertion pdnd quanto sopra, la pdnd non inserisce l'hash nel voucher generato

@JeyjooMilano
Copy link
Author

Ho aggiornato lo script create_client_assertion.py inserendo "digest" (come sopra) e client_ID - come specificato da AUDIT_REST_02. Ma il voucher non si genera più è da questo errore:

{"correlationId":"37f45c6f-c1d1-4f48-8cd9-b76ca681c48f","errors":[{"code":"015-0008","detail":"Unable to generate a token for the given request"}],"status":400,"title":"The request contains bad syntax or cannot be fulfilled.","type":"about:blank"}

@afrontera85
Copy link
Collaborator

Si tratta di un errore restituito da PDND, quindi è necessario chiedere all'assistenza pdnd, loro possono darvi maggiori delucidazioni sull'errore relativo al correlationId indicato....
Di solito potrebbe essere dovuto ad un clientid o purposeid errato

@JeyjooMilano
Copy link
Author

OK - dove posso mandare la richiesta di sopporto per PDND?
Grazie

@JeyjooMilano
Copy link
Author

Buongiorno,

Abbiamo provato ad inserire il digest ma da sempre errore quando facciamo validazione del Voucher.
Ho provato questi 3 payload sotto. In ogni caso mi da l'errore riportato sotto. Nota, nel file create_client_assertion.py dal vostro sito, abbiamo cambiato soltanto la parte digest. Se tolgo digest, il voucher si genera senza problemi.

Payload 1

{
    "iss": args.issuer,
    "sub": args.subject,
    "aud": args.audience,
    "purposeId": args.purposeId,
    "client_id": "XXXX",
    "jti": str(jti),
    "iat": issued,
    "exp": expire_in,
    "digest": {
      "alg": "SHA256",
      "value": "OAgYtfjsp5kg4IINL4btj+WPvsIo585W6XTkkW8Je78="
    }
  }

risposta:
{"correlationId":"b02a8505-d1c0-4afb-a28f-2760ad06c47f","errors":[{"code":"015-0008","detail":"Unable to generate a token for the given request"}],"status":400,"title":"The request contains bad syntax or cannot be fulfilled.","type":"about:blank"}

Payload 2

{
    "iss": args.issuer,
    "sub": args.subject,
    "aud": args.audience,
    "purposeId": args.purposeId,
    "client_id": "XXXX",
    "jti": str(jti),
    "iat": issued,
    "exp": expire_in,
    "digest": "SHA-256=OAgYtfjsp5kg4IINL4btj+WPvsIo585W6XTkkW8Je78="
}

Risposta:
{"correlationId":"8106272f-6563-4414-a096-851ea748c6dd","errors":[{"code":"015-0008","detail":"Unable to generate a token for the given request"}],"status":400,"title":"The request contains bad syntax or cannot be fulfilled.","type":"about:blank"}
Payload 3

{
"iss": args.issuer,
"sub": args.subject,
"aud": args.audience,
"purposeId": args.purposeId,
"client_id": "XXXX",
"jti": str(jti),
"iat": issued,
"exp": expire_in,
"digest": "OAgYtfjsp5kg4IINL4btj+WPvsIo585W6XTkkW8Je78="
}

Risposta
{"correlationId":"4c27ca23-dfaa-40b0-991a-cff1b39e7f7b","errors":[{"code":"015-0008","detail":"Unable to generate a token for the given request"}],"status":400,"title":"The request contains bad syntax or cannot be fulfilled.","type":"about:blank"}
Come andrebbe inserito digest nel payload?

Grazie ancora

@JeyjooMilano
Copy link
Author

Ok, abbiamo risolto il digest e generato un voucher valido.

Faccendo una chiamata all'endpoint: https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C019-servizioAccertamentoEsistenzaVita/v1/anpr-service-e002 riceviamo la risposta seguente:


{
    "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": "6bb32e9b-093b-11ef-9f53-005056ae5232"
}

Ci potete indicare il problema?

Grazie

@gmiscia
Copy link

gmiscia commented May 16, 2024

@ JeyjooMilano : buongiorno, sto anche io sviluppando un client (in php) per la società dove lavoro. Anche io sono fermo sullo stesso punto in cui è arrivato lei, forse potrebbe essere utile confrontarci su come abbiamo creato il digest e sugli headers da mettere nel curl. Leggendo altri thread ho appurato che PDND l'unica cosa che testa è la lunghezza del digest inserito (oltre ovviamente alla correttezza formale del claim in json). Se la lunghezza è rispettata (64 chars) tutto ok per PDND. Il digest sappiamo che si ottiene con una funzione di hash sha256 a partire da jwt "traking evidence": il primo dubbio è se debba essere passato come argomento della funzione di hash l'intero JWT tracking evidence ossia :
" base64(json_header).base64(json_payload).base64(json_signature) " o solo la terza parte base64(json_signature), il secondo è se l'hash debba uscire in formato binary e poi il risultato trasformato in base64. Per quanto riguarda gli headers della chiamata rest io passo i 3 JWT (tracking, signature e bearer ottenuto da PDND) più un "Digest: SHA-256=" miodigest . Non passo come sembrerebbe dai suoi commenti sopra il kid , il clientid la purposeid etc, anche perchè già contenuti dei token che l'erogatore decodifica con la chiave pubblica richiamando api in PDND non appena riceve la nostra richiesta. Sono disponibile ad un confronto comunque se le va.

@JeyjooMilano
Copy link
Author

@gmiscia per me sono 3 mesi che faccio domande sui 2 forum PDND di Github. Purtroppo l'API del PDND è contorta. La documentazione è incompleta e in vari punti sbagliata. Ogni volta che si risolve una parte, c'è qualcos' altro che non va o che devi aggiungere.

Dovrebbero essere un integrazione di qualche ora invece ho dovuto arrendermi.

@afrontera85
Copy link
Collaborator

Ok, abbiamo risolto il digest e generato un voucher valido.

Faccendo una chiamata all'endpoint: https://modipa-val.anpr.interno.it/govway/rest/in/MinInternoPortaANPR-PDND/C019-servizioAccertamentoEsistenzaVita/v1/anpr-service-e002 riceviamo la risposta seguente:


{
    "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": "6bb32e9b-093b-11ef-9f53-005056ae5232"
}

Ci potete indicare il problema?

Grazie

L'errore è il seguente:
Validazione security token ModI 'INTEGRITY' della richiesta fallita:
Signature verification failed: [COMPACT] Signature verification failure: Process 'kid' error:
Retrieve remote key 'TAw4jWvuG3iR37BQDe794qUBcv6Zykp6N2GeaWvujnw' failed:
Retrieve external resource 'https://govway-anpr-val.sogei.it:8446/govway/rest/out/MinInternoPortaANPR/PDND/api-pdnd/v1/keys/TAw4jWvuG3iR37BQDe794qUBcv6Zykp6N2GeaWvujnw' failed: (http code: 404):
{"correlationId":"6f0309d9-ccfc-4dac-b86d-14a4d30d25eb","errors":[{"code":"013-0031","detail":"Key with kId TAw4jWvuG3iR37BQDe794qUBcv6Zykp6N2GeaWvujnw not found"}],"status":404,"title":"The requested resource could not be found but may be available again in the future.","type":"about:blank"}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants