Client di test .NET 9 per l'interoperabilità PDND (Piattaforma Digitale Nazionale Dati).
Esegue il flusso OAuth2 client credentials con client assertion JWT firmata (RFC 7523, convenzioni PDND), ottiene un voucher (access token) dal token endpoint PDND e chiama un e-service esposto dietro gateway WSO2.
- Carica la chiave privata RSA dal file PFX.
- Genera una client assertion JWT firmata (
iss/sub= clientId, claim custompurposeId). - POST della assertion al token endpoint → riceve
access_token(voucher). - Chiama l'e-service con il voucher come
Bearertoken.
Un LoggingHandler logga tutto il traffico HTTP (token Authorization oscurato).
- .NET SDK 9
- Un client e una finalità registrati sul portale PDND
- Il file PFX con la chiave privata RSA la cui chiave pubblica è caricata su PDND
-
Copia il template di configurazione:
cp appsettings.example.json appsettings.json
-
Compila
appsettings.jsoncon i valori presi dal portale PDND (vedi tabella sotto). -
Metti il tuo PFX nella root del progetto (default
client-signing-key.pfx).
⚠️ appsettings.jsone i file*.pfxsono in.gitignore: non vengono versionati. Contengono segreti (password PFX, chiave privata). Non rimuoverli dal.gitignore.
| Campo | Descrizione |
|---|---|
TokenUrl |
Token endpoint PDND (es. ambiente ATT/collaudo) |
ClientId |
ID del client registrato su PDND (usato come iss/sub) |
PurposeId |
ID della finalità associata al client |
Audience |
Audience attesa dal server per la client assertion |
KeyId |
kid della chiave pubblica caricata su PDND |
PfxPath |
Percorso del file PFX con la chiave privata |
PfxPassword |
Password del PFX |
EserviceUrl |
URL dell'e-service da chiamare |
HttpMethod |
Metodo HTTP per la chiamata (default GET) |
dotnet build
dotnet runL'app stampa: client assertion, voucher (in chiaro, per copia in Postman/curl), dump dei claim del JWT, dump HTTP completo della chiamata all'e-service e la risposta.
Tutto in Program.cs: caricamento config, generazione assertion, richiesta voucher, chiamata e-service, e gli helper di logging/decodifica JWT.
Tool di debug/test, non di produzione: il voucher viene stampato in chiaro e i segreti stanno in un file JSON locale. Per un uso reale, usare un secret manager. Commenti e output console sono in italiano.
Distribuito con licenza Apache License 2.0. Vedi i file LICENSE e NOTICE.
Copyright © 2026 Filippo D'Errigo.
"PDND", "PagoPA" e i marchi correlati appartengono ai rispettivi proprietari e sono citati solo per descrivere l'interoperabilità. Questo progetto non è affiliato né sponsorizzato da PagoPA S.p.A.