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