~~NOTOC~~ ====== 9. Overitev ====== **Scenariji:** 3 \\ **FFI-funkcije:** ~20 \\ **Status:** Planirano Ta kategorija obsega vse scenarije za overitvijo na osnovi certifikatov. mTLS Client-Auth, Smart Card prijava in SSO-integracija. ---- ===== Scenariji ===== ^ ID ^ Scenarij ^ Opis ^ Kompleksnost ^ Status ^ | [[.:mtls_client_auth|9.1]] | mTLS Client-Auth | Certifikat odjemalca za dostop do API-ja | 3/5 | Planirano | | [[.:smartcard_login|9.2]] | Prijava s pametno kartico | PIV/PKCS#11 osnovana prijava | 4/5 | Planirano | | [[.:sso_integration|9.3]] | SSO-integracija | SAML/OIDC s certifikati | 4/5 | Planirano | ---- ===== Arhitektura overitve ===== flowchart TB subgraph CLIENT["Odjemalec"] CERT[Certifikat odjemalca] KEY[Zasebni ključ] end subgraph AUTH["Overitev"] TLS[TLS Handshake] VERIFY[Preverjanje certifikata] AUTHZ[Avtorizacija] end subgraph ACCESS["Dostop"] API[API/Storitev] USER[Uporabniški kontekst] end CLIENT --> TLS TLS --> VERIFY VERIFY --> AUTHZ AUTHZ --> ACCESS style VERIFY fill:#e3f2fd style AUTHZ fill:#e8f5e9 ---- ===== Metode overitve ===== ^ Metoda ^ Opis ^ Uporaba ^ | **mTLS** | Mutual TLS s certifikatom odjemalca | Dostop do API-ja, storitev-do-storitve | | **Pametna kartica** | PIV/PKCS#11 kartica | Prijava na delovnem mestu | | **FIDO2/WebAuthn** | Strojni žeton | Spletne aplikacije | | **SSO na osnovi certifikatov** | SAML/OIDC z X.509 | Podjetniški SSO | ---- ===== mTLS potek ===== sequenceDiagram participant C as Odjemalec participant S as Strežnik C->>S: ClientHello S->>C: ServerHello + ServerCert S->>C: CertificateRequest C->>S: ClientCert + CertificateVerify Note over S: Validacija certifikata S->>S: Preverjanje verige + preklica S->>C: Finished C->>S: API zahteva (overjena) ---- ===== Panožno-specifične zahteve ===== ^ Panoga ^ Metoda ^ Posebnosti ^ | **Zdravstvo** | Pametna kartica (eHBA) | Povezava gematik konektorja | | **Energetika/SCADA** | mTLS | Identiteta naprav, IEC 62351 | | **Avtomobilska** | Certifikat (V2X) | Psevdonimni certifikati | | **Industrija 4.0** | mTLS + OPC UA | Identiteta strojev | ---- ===== Hitri začetek s kodo ===== ==== mTLS overitev odjemalca ==== using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; // Nalaganje certifikata in ključa odjemalca var clientCert = ctx.LoadCertificate("client.crt.pem"); var clientKey = ctx.LoadPrivateKey("client.key.pem", password); // Konfiguracija HttpClient za mTLS var handler = new HttpClientHandler(); handler.ClientCertificates.Add( ctx.CreateX509Certificate2(clientCert, clientKey) ); var httpClient = new HttpClient(handler); // Klic API-ja s certifikatom odjemalca var response = await httpClient.GetAsync("https://api.example.com/secure/data"); ==== Strežniška validacija ==== // V 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 ^ Povezava ^ | [[.:zertifikate:start|3. Izdaja certifikatov]] | Ustvarjanje certifikatov odjemalcev | | [[.:tls:start|10. TLS/mTLS]] | TLS-konfiguracija | | [[.:validierung:start|5. Validacija]] | Validacija certifikatov | ---- << [[sl:int:pqcrypt:szenarien:signaturen:start|8. Digitalni podpisi]] | [[sl: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 overitev mtls pametna-kartica sso}}