~~NOTOC~~ ====== 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 ^ | [[.:mtls_client_auth|9.1]] | mTLS Client-Auth | Certificato client per accesso API | ⭐⭐⭐ | ⏳ | | [[.:smartcard_login|9.2]] | Smart Card Login | Autenticazione basata su PIV/PKCS#11 | ⭐⭐⭐⭐ | ⏳ | | [[.:sso_integration|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 ^ | [[.:zertifikate:start|3. Emissione certificati]] | Creare certificati client | | [[.:tls:start|10. TLS/mTLS]] | Configurazione TLS | | [[.:validierung:start|5. Validazione]] | Validazione certificato | ---- << [[it:int:pqcrypt:szenarien:signaturen:start|← 8. Firme digitali]] | [[it:int:pqcrypt:szenarien:start|↑ Scenari]] | [[.:tls:start|10. TLS/mTLS →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>categoria autenticazione mtls smartcard sso}}