9. Autenticazione

Scenari: 3
Funzioni FFI: ~20
Stato: ⏳ Pianificato

Questa categoria comprende tutti gli scenari per l'autenticazione basata su certificati: mTLS Client-Auth, Smart Card Login e integrazione SSO.


Scenari

ID Scenario Descrizione Complessita Stato
9.1 mTLS Client-Auth Certificato client per accesso API ⭐⭐⭐
9.2 Smart Card Login Autenticazione basata su PIV/PKCS#11 ⭐⭐⭐⭐
9.3 Integrazione SSO SAML/OIDC con certificati ⭐⭐⭐⭐

Architettura di autenticazione

flowchart TB subgraph CLIENT["🖥️ Client"] CERT[Certificato Client] KEY[Chiave Privata] end subgraph AUTH["🔐 Autenticazione"] TLS[TLS Handshake] VERIFY[Verifica certificato] AUTHZ[Autorizzazione] end subgraph ACCESS["✅ Accesso"] API[API/Servizio] USER[Contesto Utente] end CLIENT --> TLS TLS --> VERIFY VERIFY --> AUTHZ AUTHZ --> ACCESS style VERIFY fill:#e3f2fd style AUTHZ fill:#e8f5e9


Metodi di autenticazione

Metodo Descrizione Utilizzo
mTLS Mutual TLS con certificato client Accesso API, Service-to-Service
Smart Card Carta PIV/PKCS#11 Login workstation
FIDO2/WebAuthn Token hardware Applicazioni web
Certificate-based SSO SAML/OIDC con X.509 SSO Enterprise

Flusso mTLS

sequenceDiagram participant C as Client participant S as Server C->>S: ClientHello S->>C: ServerHello + ServerCert S->>C: CertificateRequest C->>S: ClientCert + CertificateVerify Note over S: Validare certificato S->>S: Verificare Chain + Revocation S->>C: Finished C->>S: API Request (autenticato)


Requisiti specifici per settore

Settore Metodo Particolarita
Sanita Smart Card (eHBA) Connessione gematik
Energia/SCADA mTLS Identita dispositivo, IEC 62351
Automotive Certificato (V2X) Certificati pseudonimi
Industria 4.0 mTLS + OPC UA Identita macchina

Avvio rapido codice

Autenticazione client mTLS

using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
 
// Caricare certificato e chiave client
var clientCert = ctx.LoadCertificate("client.crt.pem");
var clientKey = ctx.LoadPrivateKey("client.key.pem", password);
 
// Configurare HttpClient con mTLS
var handler = new HttpClientHandler();
handler.ClientCertificates.Add(
    ctx.CreateX509Certificate2(clientCert, clientKey)
);
 
var httpClient = new HttpClient(handler);
 
// Chiamata API con certificato client
var response = await httpClient.GetAsync("https://api.example.com/secure/data");

Validazione lato server

// In ASP.NET Core Startup
services.AddAuthentication(CertificateAuthenticationDefaults.AuthenticationScheme)
    .AddCertificate(options =>
    {
        options.AllowedCertificateTypes = CertificateTypes.All;
        options.RevocationMode = X509RevocationMode.Online;
        options.Events = new CertificateAuthenticationEvents
        {
            OnCertificateValidated = context =>
            {
                // Validazione PQ aggiuntiva
                var cert = context.ClientCertificate;
                var isValid = ctx.ValidateCertificate(cert, trustStore);
 
                if (isValid)
                {
                    // Estrarre Claims dal certificato
                    var claims = new[] {
                        new Claim(ClaimTypes.Name, cert.Subject),
                        new Claim("cert_thumbprint", cert.Thumbprint)
                    };
                    context.Principal = new ClaimsPrincipal(
                        new ClaimsIdentity(claims, context.Scheme.Name)
                    );
                    context.Success();
                }
                return Task.CompletedTask;
            }
        };
    });

Categorie correlate

Categoria Relazione
3. Emissione certificati Creare certificati client
10. TLS/mTLS Configurazione TLS
5. Validazione Validazione certificato

« ← 8. Firme digitali | ↑ Scenari | 10. TLS/mTLS → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: il 30/01/2026 alle 00:16