~~NOTOC~~ ====== 9. Autentifikacija ====== **Scenariji:** 3 \\ **FFI funkcije:** ~20 \\ **Status:** ⏳ Planirano Ova kategorija obuhvaća sve scenarije za autentifikaciju temeljenu na certifikatima. mTLS Client-Auth, Smart Card prijava i SSO integracija. ---- ===== Scenariji ===== ^ ID ^ Scenarij ^ Opis ^ Složenost ^ Status ^ | [[.:mtls_client_auth|9.1]] | mTLS Client-Auth | Klijentski certifikat za API pristup | ⭐⭐⭐ | ⏳ | | [[.:smartcard_login|9.2]] | Smart Card prijava | PIV/PKCS#11 bazirana prijava | ⭐⭐⭐⭐ | ⏳ | | [[.:sso_integration|9.3]] | SSO integracija | SAML/OIDC s certifikatima | ⭐⭐⭐⭐ | ⏳ | ---- ===== Arhitektura autentifikacije ===== flowchart TB subgraph CLIENT["🖥️ Klijent"] CERT[Klijentski certifikat] KEY[Privatni ključ] end subgraph AUTH["🔐 Autentifikacija"] TLS[TLS Handshake] VERIFY[Provjera certifikata] AUTHZ[Autorizacija] end subgraph ACCESS["✅ Pristup"] API[API/Usluga] USER[Korisnički kontekst] end CLIENT --> TLS TLS --> VERIFY VERIFY --> AUTHZ AUTHZ --> ACCESS style VERIFY fill:#e3f2fd style AUTHZ fill:#e8f5e9 ---- ===== Metode autentifikacije ===== ^ Metoda ^ Opis ^ Primjena ^ | **mTLS** | Uzajamni TLS s klijentskim certifikatom | API pristup, komunikacija između usluga | | **Smart Card** | PIV/PKCS#11 kartica | Prijava na radnu stanicu | | **FIDO2/WebAuthn** | Hardverski token | Web aplikacije | | **Certificate-based SSO** | SAML/OIDC s X.509 | Enterprise SSO | ---- ===== mTLS tijek ===== sequenceDiagram participant C as Klijent participant S as Server C->>S: ClientHello S->>C: ServerHello + ServerCert S->>C: CertificateRequest C->>S: ClientCert + CertificateVerify Note over S: Validacija certifikata S->>S: Provjera lanca + opoziva S->>C: Finished C->>S: API zahtjev (autentificiran) ---- ===== Zahtjevi specifični za industriju ===== ^ Industrija ^ Metoda ^ Posebnosti ^ | **Zdravstvo** | Smart Card (eHBA) | gematik konektor integracija | | **Energetika/SCADA** | mTLS | Identitet uređaja, IEC 62351 | | **Automobilska** | Certifikat (V2X) | Pseudonim certifikati | | **Industrija 4.0** | mTLS + OPC UA | Identitet strojeva | ---- ===== Brzi početak s kodom ===== ==== mTLS klijentska autentifikacija ==== using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; // Učitavanje klijentskog certifikata i ključa var clientCert = ctx.LoadCertificate("client.crt.pem"); var clientKey = ctx.LoadPrivateKey("client.key.pem", password); // Konfiguracija HttpClient s mTLS var handler = new HttpClientHandler(); handler.ClientCertificates.Add( ctx.CreateX509Certificate2(clientCert, clientKey) ); var httpClient = new HttpClient(handler); // API poziv s klijentskim certifikatom var response = await httpClient.GetAsync("https://api.example.com/secure/data"); ==== Validacija na serverskoj strani ==== // U ASP.NET Core Startup services.AddAuthentication(CertificateAuthenticationDefaults.AuthenticationScheme) .AddCertificate(options => { options.AllowedCertificateTypes = CertificateTypes.All; options.RevocationMode = X509RevocationMode.Online; options.Events = new CertificateAuthenticationEvents { OnCertificateValidated = context => { // Dodatna PQ validacija var cert = context.ClientCertificate; var isValid = ctx.ValidateCertificate(cert, trustStore); if (isValid) { // Ekstrakcija claims iz certifikata 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; } }; }); ---- ===== Povezane kategorije ===== ^ Kategorija ^ Povezanost ^ | [[.:zertifikate:start|3. Izdavanje certifikata]] | Kreiranje klijentskih certifikata | | [[.:tls:start|10. TLS/mTLS]] | TLS konfiguracija | | [[.:validierung:start|5. Validacija]] | Validacija certifikata | ---- << [[hr:int:pqcrypt:szenarien:signaturen:start|← 8. Digitalni potpisi]] | [[hr:int:pqcrypt:szenarien:start|↑ Scenariji]] | [[.:tls:start|10. TLS/mTLS →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kategorija autentifikacija mtls smartcard sso}}