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