~~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}}