5.2. Soluzione del Fornitore di Attestati Elettronici

Un Fornitore di Attestati Elettronici, come Entità Organizzativa partecipante all'ecosistema IT-Wallet, DEVE fornire Soluzioni Tecniche che combinano software, hardware, servizi, impostazioni e configurazioni per emettere Attestati Elettronici alle Istanze del Wallet dell'Utente in modo sicuro e affidabile.

Il seguente diagramma illustra l'Architettura di Alto Livello della Soluzione del Fornitore di Attestati Elettronici.

L'immagine illustra la Soluzione del Fornitore di Credenziali e le sue relazioni e interazioni all'interno dell'ecosistema.

Fig. 5.9 Architettura di Alto Livello della Soluzione del Fornitore di Attestati Elettronici.

5.2.1. Requisiti del Fornitore di Attestati Elettronici

La Soluzione del Fornitore di Attestati Elettronici Elettronica DEVE:

  1. Registrarsi presso l'Autorità di Federazione per ottenere la corretta autorizzazione per l'emissione di specifici tipi di Attestati Elettronici.

  2. Implementare meccanismi sicuri di creazione ed emissione che garantiscano integrità e riservatezza.

  3. Comunicare con le Fonti Autentiche attraverso Servizi API sicuri e affidabili per ottenere dati verificati dell'Utente.

  4. Autenticarsi presso le Istanze del Wallet durante l'emissione per dimostrare la propria legittimità.

  5. Supportare il flusso di emissione immediata (immediate flow) e PUÒ supportare l'emissione differita (deferred flow) per vari scenari operativi.

  6. Implementare una gestione appropriata degli errori e notifiche all'Utente per tutti i processi.

  7. Mantenere log di audit complete rispettando le normative sulla privacy.

  8. Emettere Attestati Elettronici che supportano la Divulgazione Selettiva (Selective Disclosure).

  9. Rinnovare periodicamente la conformità e l'aderenza alla Federazione IT-Wallet .

  10. Registrare il Componente Relying Party all'interno dell'ecosistema di Federazione dell'Identità Digitale CIEid (per l'emissione di PID), e all'interno dell'ecosistema IT-Wallet (per l'emissione di (Q)EAA, se necessario).

  11. Per l'emissione di PID, autenticare gli Utenti con LoA High utilizzando l'infrastruttura nazione di Identità Digitale.

  12. Per l'emissione di (Q)EAA che richiedono autenticazione, verificare che il PID dell'Utente sia valido tramite OpenID4VP.

  13. Implementare procedure adeguate per l'intero ciclo di vita dell'Attestato Elettronico come dettagliato nella Sezione Ciclo di Vita degli Attestati Elettronici.

Per il Componente Frontend (se implementato):

  1. Autenticare gli Utenti con un Livello di Garanzia (LoA) almeno pari a quello utilizzato per ottenere l'Attestato Elettronico che viene emesso o gestito.

  2. Fornire misure di sicurezza appropriate per proteggere i dati dell'Utente e le informazioni dell'Attestato Elettronico.

5.2.2. Dettagli dei Componenti

5.2.2.1. Componente Frontend

Il Componente Frontend, se fornito dal Fornitore di Attestati Elettronici, DEVE fornire un'interfaccia Utente web per la gestione degli Attestati Elettronici, offrendo funzionalità per:

  • Visualizzare e verificare gli Attestati Elettronici emessi e il loro stato di validità.

  • Gestire il ciclo di vita degli Attestati Elettronici (ad es., revoca).

  • Avviare l'emissione attraverso il meccanismo di Credential Offer.

  • Fornire supporto e documentazione all'Utente.

I Fornitori di Attestati Elettronici POSSONO fornire servizi aggiuntivi all'Utente attraverso il Componente Frontend. Questi servizi aggiuntivi NON DEVONO essere in conflitto con i requisiti normativi o tecnici definiti in questa specifica tecnica o nelle normative nazionali/europee sulla sicurezza e la privacy.

5.2.2.2. Componente Credential Issuer

Sulla base della specifica OpenID4VCI e del profilo implementativo fornito nella Sezione Emissione di Attestati Elettronici, questo componente DEVE:

  • Emettere Attestati Elettronici alle Istanze del Wallet.

  • Elaborare le richieste di Attestati Elettronici.

  • Ottenere i dati dell'Utente dalle Fonti Autentiche.

  • Generare Attestati Elettronici correttamente formattati e firmati nei formati supportati (SD-JWT-VC, mDoc-CBOR). Vedere la Sezione Modello di Dati degli Attestati Elettronici per maggiori dettagli.

  • Implementare i protocolli e i flussi di emissione degli Attestati Elettronici.

5.2.2.3. Authorization Server

Questo componente basato su OAuth2 DEVE:

  • Gestire i flussi di autenticazione e autorizzazione.

  • Gestire gli Access Token, Refresh e Authorization Code.

  • Validare l'identità dell'Utente confermata dal Componente Relying Party.

5.2.2.4. Componente Relying Party

Questo componente DEVE autenticare gli Utenti, se richiesto:

  • Per l'emissione di PID, tramite l'infrastruttura nazionale di Identità Digitale.

  • Per l'emissione di (Q)EAA, richiedendo, ottenendo e validando i PID dalle Istanze del Wallet dell'Utente utilizzando OpenID4VP in conformità con la Sezione Presentazione della Credenziale Digitale.

5.2.2.5. Interfaccia API

Questo componente DEVE stabilire connessioni sicure con le Fonti Autentiche per:

  • Recuperare dati verificati dell'Utente.

  • Autenticare e autorizzare correttamente le richieste di connessione.

  • Formattare i dati secondo gli schemi degli Attestati Elettronici.

  • Fornire prove crittografiche dell'autenticazione dell'Utente quando richiesto.

Nota

Per le Fonti Autentiche pubbliche, un Fornitore di Attestati Elettronici DEVE utilizzare PDND secondo quanto definito nelle Sezioni e-Service PDND, Aggiornamento dello Stato da parte delle Fonti Autentiche, e Catalogo degli e-Service PDND delle Fonti Autentiche.

5.2.2.6. Gestione del Ciclo di Vita degli Attestati Elettronici

Questo componente DEVE gestire:

  • Lo stato di validità degli Attestati Elettronici (ad esempio aggiornamenti, revoche o sospensioni).

  • I processi e i flussi di revoca (implementazione di meccanismi per revocare o sospendere gli Attestati Elettronici), secondo quando definito nella Sezione Ciclo di Vita degli Attestati Elettronici.

  • I processi e i flussi di rinnovo degli Attestati Elettronici, secondo i meccanismi definiti nella Sezione Emissione di Attestati Elettronici.

5.2.2.7. Componente Trust & Security

Questo componente DEVE garantire la sicurezza attraverso:

  • Gestione delle chiavi e dei certificati.

  • Log di audit.

  • Monitoraggio della sicurezza e risposta agli incidenti.

  • Conformità ai requisiti di sicurezza della Federazione IT-Wallet.

5.2.3. Modelli di Interazione

La Soluzione del Fornitore degli Attestati Elettronici supporta questi modelli di interazione:

  1. Utente verso Frontend: Interazioni basate sul web per la gestione degli Attestati Elettronici.

  2. Frontend verso Fornitore degli Attestati Elettronici: Converte le richieste dell'Utente in messaggi del protocollo OpenID4VCI.

  3. Istanza del Wallet verso Fornitore degli Attestati Elettronici: Interazioni dirette basate sul protocollo seguendo il flusso di emissione.

  4. Relying Party verso Gestori di Identità: Interazioni di autenticazione con i sistemi nazionali di Identità Digitale o verifica del PID.

  5. Interfaccia API verso Fonti Autentiche: Chiamate API sicure per recuperare dati verificati dell'Utente.

Tutte le interazioni devono seguire le considerazioni di sicurezza nella Sezione Emissione di Attestati Elettronici, inclusa la corretta gestione di token e materiali crittografici.

5.2.4. Entity Configuration del Fornitore di Attestati Elettronici

I Fornitori di Attestati Elettronici, in quanto Entità di Federazione, DEVONO rispettare le linee guida delineate nella Sezione Configurazione della Federazione. In particolare, DEVONO fornire un endpoint well-known che ospiti la loro Entity Configuration. Quest'ultima DEVE contenere i parametri definiti nelle Sezioni Entity Configuration Foglie e Intermediari e Parametri Comuni delle Entity Configuration.

I Fornitori di Attestati Elettronici DEVONO fornire i seguenti Metadata:

  • federation_entity

  • oauth_authorization_server

  • openid_credential_issuer

Nei casi in cui i Fornitori di Attestati Elettronici di Attributi autenticano gli Utenti utilizzando la loro Istanza del Wallet, allora i Metadata per openid_credential_verifier DEVONO essere forniti in aggiunta ai Metadata sopra indicati. Nel caso in cui uno schema nazionale di Identità Digitale sia utilizzato dal Fornitore di Attestati Elettronici di Dati di Identificazione Personale per l'autenticazione dell'Utente, essi POSSONO includere i Metadata per openid_relying_party all'interno della loro Entity Configuration. I Metadata openid_relying_party DEVONO essere conformi alle Regole Tecniche SPID/CIE-OpenID-Connect-Specifications.

I Metadata federation_entity DEVONO contenere i parametri come definiti nella Sezione Metadati delle Foglie federation_entity.

I Metadata openid_credential_verifier DEVONO contenere i parametri come definiti nella Sezione Entity Configuration Relying Party.

5.2.4.1. Esempio di Entity Configuration di un Fornitore di Attestati Elettronici di Attributi

Di seguito è riportato un esempio non normativo di una Entity Configuration di un Fornitore di Attestati Elettronici di Attributi contenente Metadata per:

  • federation_entity

  • oauth_authorization_server

  • openid_credential_issuer

  • openid_credential_verifier

{
    "iat": 1718207217,
    "exp": 1749743216,
    "iss": "https://eaa-provider.example.org",
    "sub": "https://eaa-provider.example.org",
    "authority_hints": [
        "https://trust-anchor.example.org"
    ],
    "jwks": {
        "keys": [
            {
                "kid": "FANFS3YnC9tjiCaivhWLVUJ3AxwGGz_98uRFaqMEEs",
                "kty": "EC",
                "crv": "P-256",
                "x": "jE2RpcQbFQxKpMqehahgZv6smmXD0i/LTP2QRzMADk4",
                "y": "qkMx5iqt5PhPu5tfctS6HsP+FmLgrxfrzUV2GwMQuh8"
            }
        ]
    },
    "metadata": {
        "federation_entity": {
            "homepage_uri": "https://eaa-provider.example.org/",
            "organization_name": "Organization Name",
            "contacts": [
                "informazioni@example.it",
                "protocollo@pec.example.it"
            ],
            "tos_uri": "https://eaa-provider.example.org/public/info_policy.html",
            "policy_uri": "https://eaa-provider.example.org/public/privacy_policy.html",
            "logo_uri": "https://eaa-provider.example.org/public/logo.svg"
        },
        "oauth_authorization_server": {
            "issuer": "https://eaa-provider.example.org",
            "pushed_authorization_request_endpoint": "https://eaa-provider.example.org/as/par",
            "authorization_endpoint": "https://eaa-provider.example.org/authorize",
            "token_endpoint": "https://eaa-provider.example.org/token",
            "client_registration_types_supported": [
                "automatic"
            ],
            "code_challenge_methods_supported": [
                "S256"
            ],
            "acr_values_supported": [
                "https://trust-registry.eid-wallet.example.it/loa/substantial",
                "https://trust-registry.eid-wallet.example.it/loa/high"
            ],
            "scopes_supported": [
                "EuropeanDisabilityCard",
                "mDL"
            ],
            "response_modes_supported": [
                "form_post.jwt",
                "query"
            ],
            "response_types_supported": [
                "code"
            ],
            "authorization_signing_alg_values_supported": [
                "ES256",
                "ES384",
                "ES512"
            ],
            "grant_types_supported": [
                "authorization_code"
            ],
            "token_endpoint_auth_methods_supported": [
                "attest_jwt_client_auth"
            ],
            "token_endpoint_auth_signing_alg_values_supported": [
                "ES256",
                "ES384",
                "ES512"
            ],
            "request_object_signing_alg_values_supported": [
                "ES256",
                "ES384",
                "ES512"
            ],
            "jwks": {
                "keys": [
                    {
                        "kid": "f10aca0992694b3581f6f699bfc8a2c6cc687725",
                        "kty": "EC",
                        "crv": "P-256",
                        "x": "jE2RpcQbFQxKpMqehahgZv6smmXD0i/LTP2QRzMADk4",
                        "y": "qkMx5iqt5PhPu5tfctS6HsP+FmLgrxfrzUV2GwMQuh8"
                    }
                ]
            }
        },
        "openid_credential_issuer": {
            "credential_issuer": "https://eaa-provider.example.org",
            "credential_endpoint": "https://eaa-provider.example.org/credential",
            "nonce_endpoint": "https://eaa-provider.example.org/nonce-endpoint",
            "deferred_credential_endpoint": "https://eaa-provider.example.org/deferred-credential",
            "revocation_endpoint": "https://eaa-provider.example.org/revoke",
            "status_assertion_endpoint": "https://eaa-provider.example.org/status",
            "notification_endpoint": "https://eaa-provider.example.org/notification",
            "credential_hash_alg_supported": "sha-256",
            "display": [
                {
                    "name": "EAA Provider",
                    "locale": "it-IT"
                },
                {
                    "name": "EAA Provider",
                    "locale": "en-US"
                }
            ],
            "credential_configurations_supported": {
                "dc_sd_jwt_EuropeanDisabilityCard": {
                    "format": "dc+sd-jwt",
                    "scope": "EuropeanDisabilityCard",
                    "cryptographic_binding_methods_supported": [
                        "jwk"
                    ],
                    "credential_signing_alg_values_supported": [
                        "ES256",
                        "ES384",
                        "ES512"
                    ],
                    "proof_types_supported": {
                        "jwt": {
                            "proof_signing_alg_values_supported": [
                                "ES256",
                                "ES384",
                                "ES512"
                            ]
                        }
                    },
                    "display": [
                        {
                            "name": "Carta della disabilità europea",
                            "locale": "it-IT"
                        },
                        {
                            "name": "European Disability Card",
                            "locale": "en-US"
                        }
                    ],
                    "vct": "https://trust-registry.eid-wallet.example.it/v1.0/EuropeanDisabilityCard",
                    "claims": [
                        {
                            "path": ["document_number"],
                            "display": [
                                {
                                    "name": "Numero Documento",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Document Number",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["given_name"],
                            "display": [
                                {
                                    "name": "Nome",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Name",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["family_name"],
                            "display": [
                                {
                                    "name": "Cognome",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Family Name",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["birth_date"],
                            "display": [
                                {
                                    "name": "Data di Nascita (YYYY-MM-GG)",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Date of Birth (YYYY-MM-GG)",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["personal_administrative_number"],
                            "display": [
                                {
                                    "name": "Codice Fiscale",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Tax Identification Number",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["expiry_date"],
                            "display": [
                                {
                                    "name": "Data di Scadenza (YYYY-MM-GG)",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Expiration Date (YYYY-MM-GG)",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["constant_attendance_allowance"],
                            "display": [
                                {
                                    "name": "Diritto accompagnatore",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Constant attendance allowance",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["portrait"],
                            "display": [
                                {
                                    "name": "Foto codificata in base64",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Portrait base64 encoded",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["link_qr_code"],
                            "display": [
                                {
                                    "name": "Link QR Code",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Link QR Code",
                                    "locale": "en-US"
                                }
                            ]
                        }
                    ]
                },
                "dc_sd_jwt_mDL": {
                    "format": "dc+sd-jwt",
                    "scope": "mDL",
                    "cryptographic_binding_methods_supported": [
                        "jwk"
                    ],
                    "credential_signing_alg_values_supported": [
                        "ES256",
                        "ES384",
                        "ES512"
                    ],
                    "proof_types_supported": {
                        "jwt": {
                            "proof_signing_alg_values_supported": [
                                "ES256",
                                "ES384",
                                "ES512"
                            ]
                        }
                    },
                    "display": [
                        {
                            "name": "Patente di guida",
                            "locale": "it-IT"
                        },
                        {
                            "name": "Mobile Driver's License",
                            "locale": "en-US"
                        }
                    ],
                    "vct": "https://trust-registry.eid-wallet.example.it/v1.0/mDL",
                    "claims": [
                        {
                            "path": ["given_name"],
                            "display": [
                                {
                                    "name": "Nome",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "First Name",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["family_name"],
                            "display": [
                                {
                                    "name": "Cognome",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Family Name",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["birth_date"],
                            "display": [
                                {
                                    "name": "Data di nascita (YYYY-MM-GG)",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Date of Birth (YYYY-MM-GG)",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["place_of_birth"],
                            "display": [
                                {
                                    "name": "Luogo di Nascita",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Place of Birth",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["issue_date"],
                            "display": [
                                {
                                    "name": "Data di rilascio (YYYY-MM-GG)",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Issue Date (YYYY-MM-GG)",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {   
                            "path": ["expiry_date"],
                            "display": [
                                {
                                    "name": "Data di scadenza (YYYY-MM-GG)",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Expiry Date (YYYY-MM-GG)",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["issuing_country"], 
                            "display": [
                                {
                                    "name": "Paese di rilascio",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Issuing Country",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["issuing_authority"],
                            "display": [
                                {
                                    "name": "Autorità di rilascio",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Issuing Authority",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["document_number"],
                            "display": [
                                {
                                    "name": "Numero di documento",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Document Number",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["portrait"],
                            "display": [
                                {
                                    "name": "Foto codificata in base64",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Portrait base64 encoded",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["driving_privileges"],
                            "display": [
                                {
                                    "name": "Elenco delle categorie di abilitazione separate da spazio",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Driving Privileges separated by space",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["restrictions_conditions"],
                            "display": [
                                {
                                    "name": "Annotazioni/Restrizioni valide per tutte le categorie separate da spazio",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Restriction/Condition for all driving privileges separated by space ",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["driving_privileges_details"],
                            "display": [
                                {
                                    "name": "Dettagli delle categorie di abilitazione",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Driving privilege details",
                                    "locale": "en-US"
                                }
                            ]
                        }
                    ]
                },
                "mso_mdoc_mDL": {
                    "format": "mso_mdoc",
                    "scope": "mDL",
                    "doctype": "org.iso.18013.5.1.mDL",
                    "cryptographic_binding_methods_supported": [
                        "cose_key"
                    ],
                    "credential_signing_alg_values_supported": [
                        "ES256",
                        "ES384",
                        "ES512"
                    ],
                    "display": [
                        {
                            "name": "Patente di guida",
                            "locale": "it-IT"
                        },
                        {
                            "name": "Mobile Driver's License",
                            "locale": "en-US"
                        }
                    ],
                    "claims": [
                        {
                            "path": ["org.iso.18013.5.1", "given_name"],
                            "display": [
                                {
                                    "name": "Nome",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "First Name",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "family_name"],
                            "display": [
                                {
                                    "name": "Cognome",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Family Name",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "birth_date"],
                            "display": [
                                {
                                    "name": "Data di nascita (YYYY-MM-GG)",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Date of Birth (YYYY-MM-GG)",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "birth_place"],
                            "display": [
                                {
                                    "name": "Luogo di Nascita",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Place of Birth",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "issue_date"],
                            "display": [
                                {
                                    "name": "Data di rilascio (YYYY-MM-GG)",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Issue Date (YYYY-MM-GG)",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {   
                            "path": ["org.iso.18013.5.1", "expiry_date"],
                            "display": [
                                {
                                    "name": "Data di scadenza (YYYY-MM-GG)",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Expiry Date (YYYY-MM-GG)",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "issuing_country"], 
                            "display": [
                                {
                                    "name": "Paese di rilascio",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Issuing Country",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "issuing_authority"],
                            "display": [
                                {
                                    "name": "Autorità di rilascio",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Issuing Authority",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "document_number"],
                            "display": [
                                {
                                    "name": "Numero di documento",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Document Number",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "portrait"],
                            "display": [
                                {
                                    "name": "Foto codificata in base64",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Portrait base64 encoded",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "driving_privileges"],
                            "display": [
                                {
                                    "name": "Elenco delle categorie di abilitazione e relativi dettagli su restrizioni/condizioni",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Driving Privileges and related restrictions/conditions details",
                                    "locale": "en-US"
                                }
                            ]
                        },
                        {
                            "path": ["org.iso.18013.5.1", "un_distinguishing_sign"],
                            "display": [
                                {
                                    "name": "Codice identificativo della Nazione",
                                    "locale": "it-IT"
                                },
                                {
                                    "name": "Distinguishing sign of the issuing country",
                                    "locale": "en-US"
                                }
                            ]
                        }
                    ]
                }
            },
            "jwks": {
                "keys": [
                    {
                        "kid": "f10aca0992694b3581f6f699bfc8a2c6cc687725",
                        "kty": "EC",
                        "crv": "P-256",
                        "x": "jE2RpcQbFQxKpMqehahgZv6smmXD0i/LTP2QRzMADk4",
                        "y": "qkMx5iqt5PhPu5tfctS6HsP+FmLgrxfrzUV2GwMQuh8"
                    }
                ]
            },
            "trust_frameworks_supported": [
                "it_cie",
                "it_wallet",
                "eudi_wallet"
            ],
            "evidence_supported": [
                "vouch"
            ]
        },
        "openid_credential_verifier": {
            "application_type": "web",
            "client_id": "https://eaa-provider.example.org",
            "client_name": "Organization Name",
            "contacts": [
                "informazioni@example.it",
                "protocollo@pec.example.it"
            ],
            "request_uris": [
                "https://eaa-provider.example.org/request_uri"
            ],
            "response_uris": [
                "https://eaa-provider.example.org/response_uri"
            ],
            "default_acr_values": [
                "https://trust-registry.eid-wallet.example.it/loa/substantial",
                "https://trust-registry.eid-wallet.example.it/loa/high"
            ],
            "request_object_signing_alg_values_supported": [
                "ES256",
                "ES384",
                "ES512"
            ],
            "authorization_signed_response_alg": [
                "ES256",
                "ES384",
                "ES512"
            ],
            "authorization_encrypted_response_alg": [
                "RSA-OAEP-256"
            ],
            "authorization_encrypted_response_enc": [
                "A128CBC-HS256",
                "A192CBC-HS384",
                "A256CBC-HS512",
                "A128GCM",
                "A192GCM",
                "A256GCM"
            ],
            "vp_formats": {
                "dc+sd-jwt": {
                    "sd-jwt_alg_values": [
                        "ES256",
                        "ES384",
                        "ES512"
                    ]
                }
            },
            "jwks": {
                "keys": [
                    {
                        "kid": "f10aca0992694b3581f6f699bfc8a2c6cc687725",
                        "kty": "EC",
                        "crv": "P-256",
                        "x": "jE2RpcQbFQxKpMqehahgZv6smmXD0i/LTP2QRzMADk4",
                        "y": "qkMx5iqt5PhPu5tfctS6HsP+FmLgrxfrzUV2GwMQuh8"
                    }
                ]
            }
        }
    }
}

5.2.5. Metadata del Fornitore di Attestati Elettronici

5.2.5.1. Metadata per oauth_authorization_server

I Metadata oauth_authorization_server DEVONO contenere i seguenti parametri.

Claim

Descrizione

issuer

DEVE contenere un URL HTTPS che identifica in modo univoco il Fornitore di Attestati Elettronici.

pushed_authorization_request_endpoint

L'URL dell'endpoint della Pushed Authorization Request dove un'Istanza del Wallet DEVE inviare una authorization request per ottenere un valore request_uri, che può quindi essere utilizzato all'authorization endpoint. Vedi RFC 9126#as_metadata.

authorization_endpoint

URL dell'authorization endpoint dell'authorization server. Vedi RFC 8414#section-2.

token_endpoint

URL del token endpoint dell'authorization server. Vedi RFC 8414#section-2.

client_registration_types_supported

Array che specifica i registration types supportati. L'authorization server DEVE supportare automatic. Vedi OID-FED Sezione 5.1.3.

code_challenge_methods_supported

Array JSON contenente un elenco di metodi di code challenge previsti da Proof Key for Code Exchange (PKCE) RFC 7636 e supportati dall'authorization server. L'authorization server DEVE supportare S256.

acr_values_supported

Vedi OpenID Connect Discovery 1.0 Section 3. I valori supportati sono:

  • https://trust-registry.eid-wallet.example.it/loa/low

  • https://trust-registry.eid-wallet.example.it/loa/substantial

  • https://trust-registry.eid-wallet.example.it/loa/high

scopes_supported

Array JSON contenente un elenco dei valori scope supportati. Vedi RFC 8414#section-2.

response_modes_supported

Array JSON contenente un elenco dei valori "response_mode" supportati, come specificato in OAuth 2.0 Multiple Response Type Encoding Practices. I valori supportati POSSONO essere query e form_post.jwt (vedi JARM).

response_types_supported

Array JSON contenente un elenco dei valori "response_type" supportati, come specificato in RFC 8414. Il valore supportato DEVE essere code.

authorization_signing_alg_values_supported

Array JSON contenente un elenco degli algoritmi di firma supportati RFC 7515 (valori alg). I valori DEVONO essere impostati secondo la Sezione Algoritmi Crittografici. Vedi Sezione 4 di JARM.

grant_types_supported

Array JSON contenente un elenco dei valori di grant type supportati. L'authorization server DEVE supportare authorization_code.

token_endpoint_auth_methods_supported

Array JSON contenente un elenco dei metodi di client authentication supportati. Il token endpoint DEVE supportare attest_jwt_client_auth come definito in OAUTH-ATTESTATION-CLIENT-AUTH.

token_endpoint_auth_signing_alg_values_supported

Array JSON contenente un elenco degli algoritmi di firma ("valori alg") supportati dal token endpoint per la firma sul JWT utilizzato per autenticare il client al token endpoint. Vedi RFC 8414#section-2.

request_object_signing_alg_values_supported

Array JSON contenente un elenco degli algoritmi di firma ("valori alg") supportati per i Request Objects. Vedi [openid-connect-discovery-1_0].

jwks

JSON Web Key Set contenente le chiavi crittografiche per 'authorization server. Vedi OID-FED Sezione 5.2.1 e JWK.

5.2.5.2. Metadata per openid_credential_issuer

I Metadata openid_credential_issuer DEVONO contenere i seguenti claims.

Claim

Descrizione

credential_issuer

L'identificativo del Fornitore di Attestati Elettronici. DEVE essere un HTTPS URL case sensitive come definito in OpenID4VCI Sezioni 11.2.1 e 11.2.3.

credential_endpoint

URL del Credential endpoint. Vedi OpenID4VCI Sezione 11.2.3.

nonce_endpoint

URL del Nonce endpoint, come definito nella Sezione 7 di OpenID4VCI.

revocation_endpoint

URL del revocation endpoint. Vedi RFC 8414#section-2.

deferred_credential_endpoint

URL del deferred credential endpoint, come definito nella Sezione 11.2.3 di OpenID4VCI.

status_assertion_endpoint

DEVE essere un URL HTTPS che indica l'endpoint dove le Istanze del Wallet possono richiedere Status Assertion. Vedi Sezione Ciclo di Vita degli Attestati Elettronici per maggiori dettagli. (OAUTH-STATUS-ASSERTION Sezione 11.1.).

notification_endpoint

DEVE essere un URL HTTPS che indica il notification endpoint. Vedi Sezione 11.2.3 di [OpenID4VCI].

authorization_servers

OPZIONALE. Array di stringhe, dove ogni stringa è un identificativo dell'authorization server OAuth 2.0 (come definito in [RFC 8414]) usato dal Fornitore di Attestati Elettronici per gestire l'autenticazione/autorizzazione. Se questo parametro è omesso vuol dire che il Fornitore di Attestati Elettronici agisce direttamente anche come authorization server.

display

Vedi OpenID4VCI Sezione 11.2.3. Array di oggetti contenenti proprietà di visualizzazione della lingua. I parametri che DEVONO essere inclusi sono:

  • name: Denominazione in formato stringa del Fornitore di Attestati Elettronici.

  • locale: Valore stringa che identifica la localizzazione rappresentato come un tag linguistico come definito in BCP47 RFC 5646. DEVE esserci un solo oggetto per ogni identificativo di localizzazione.

credential_configurations_supported

Oggetto JSON che delinea i dettagli della Attestato Elettronico supportato dal Fornitore di Attestato Elettronico. Include un elenco di coppie nome/valore, dove ogni nome identifica in modo univoco un specific Attestato Elettronico supportato. Questo identificativo viene utilizzato per informare l'Istanza del Wallet su quale Attestato Elettronico può essere emesso. Il valore associato all'interno dell'oggetto DEVE contenere Metadata specifici per quell'Attestato Elettronico, come definito di seguito. Vedi OpenID4VCI Sezioni 11.2.3 e A.3.2.

  • format: Stringa che identifica il formato di questo Attestato Elettronico. L'Attestato Elettronico DEVE supportare il valore stringa "dc+sd-jwt" nel caso di SD-JWT VC (Vedi OpenID4VCI Sezione A.3.1.) e "mso_mdoc" nel caso di mdoc (vedi OpenID4VCI Sezione A.2.1.).

  • scope: Stringa JSON che identifica il valore scope supportato. L'Istanza del Wallet DEVE utilizzare questo valore nella Pushed Authorization Request inviata. I valori di scope DEVONO essere l'intero insieme o un sottoinsieme dei valori scope presenti nel parametro scopes_supported del authorization server. [Vedi OpenID4VCI Sezione 11.2.3].

  • cryptographic_binding_methods_supported: Array JSON di stringhe case sensitive che identificano la rappresentazione della chiave crittografica di binding dell'Attestato Elettronico emesso. Il Fornitore di Attestato Elettronico DEVE supportare il valore "jwk" per il formato "dc+sd-jwt" e "cose_key" per "mso_mdoc".

  • credential_signing_alg_values_supported: Array JSON di stringhe case sensitive che identificano gli algoritmi che il Fornitore di Attestato Elettronico DEVE supportare per firmare l'Attestato Elettronico emesso. Vedi Sezione Algoritmi Crittografici per maggiori dettagli.

  • proof_types_supported: Oggetto JSON che fornisce informazioni dettagliate sulle key proof supportate dal Fornitore di Attestato Elettronico. Consiste in un elenco di coppie nome/valore, dove ogni nome identifica in modo univoco il proof type supportato. Il Fornitore di Attestato Elettronico DEVE supportare almeno "jwt" come definito in OpenID4VCI Sezione 8.2. Il valore associato a ciascuna coppia nome/valore è un oggetto JSON contenente informazioni relative alla key proof. Il Fornitore di Attestato Elettronico DEVE supportare almeno il parametro proof_signing_alg_values_supported che DEVE essere un Array JSON di stringhe case sensitive che identificano gli algoritmi supportati (vedi Sezione Algoritmi Crittografici per maggiori dettagli sugli algoritmi supportati).

  • display: Array di oggetti contenenti proprietà di visualizzazione della localizzazione. I parametri che DEVONO essere inclusi sono

    • name: Valore stringa di un nome visualizzato per l'Attestato Elettronico.

    • locale: Valore stringa che identifica la localizzazione rappresentato come un tag linguistico come definito in BCP47 RFC 5646. DEVE esserci un solo oggetto per ogni identificativo di localizzazione.

  • vct: RICHIESTO solo se format è valorizzato con "dc+sd-jwt". Come definito in [Attestato Elettronico in formato SD-JWT-VC].

  • doctype: RICHIESTO solo se format è valorizzato con "mso_mdoc". Come definito in [Attestato Elettronico in formato mdoc-CBOR].

  • claims: Array di oggetti JSON ciascuno che descrive come un determinato attributo relativo all'Attestato Elettronico DEVE essere visualizzato all'Utente. Questo Array elenca gli attributi nell'ordine in cui DEVONO essere visualizzati dal Wallet. Per fornire informazioni dettagliate sull'attributo, il valore più interno DEVE contenere almeno i seguenti parametri. Vedi OpenID4VCI Sezione A.3.2.

    • path: Contiene il puntatore che specifica il percorso all'attributo specifico all'interno dell'Attestato Elettronico come definito nell'Appendice C di OpenID4VCI.

    • display: Array di oggetti contenenti proprietà di visualizzazione della localizzazione. I parametri che DEVONO essere inclusi sono

      • name: Nome dell'attributo in formato stringa.

      • locale: Stringa che identifica la localizzazione con un tag linguistico come definito in BCP47 RFC 5646. DEVE esserci un solo oggetto per ogni identificativo di localizzazione.

jwks

JSON Web Key Set, passato per valore, contenente le chiavi specifiche del protocollo usato dal Fornitore di Attestato Elettronico. Vedi OID-FED Sezione 5.2.1 e JWK.

trust_frameworks_supported

Array JSON contenente tutti i trust framework supportati. Vedi OIDC-IDA Sezione 8. I valori supportati sono:
  • it_cie: trust framework CIE id supportato.

  • it_wallet: trust framework IT-Wallet supportato.

  • eudi_wallet: trust framework Member State EUDI Wallet supportato.

evidence_supported

Array JSON contenente tutti i tipi di evidenze di identità supportate dal Fornitore dell'Attestato Elettronico. Vedi OIDC-IDA Sezione 8. Il valore supportato è vouch.

credential_hash_alg_supported

L'algoritmo supportato utilizzato dall'Istanza del Wallet per eseguire l'hash dell'Attestato Elettronico per il quale viene richiesta la Status Assertion. Si RACCOMANDA di utilizzare sha-256. (Vedi OAUTH-STATUS-ASSERTION Sezione 11.1.).