Bez pouzdane autentifikacije ne postoji bezbedan softver. Od prve API rute do distribuiranih mikroservisa, način na koji sistem proverava identitet korisnika određuje performanse, skalabilnost i stabilnost cele platforme. Uprkos tome, autentifikacija se i dalje potcenjuje i gura u stranu kao tehnički detalj.
Kod dizajna modernih sistema, jedno od prvih pitanja mora biti kako sistem prepoznaje ko mu se obraća. Ne samo korisnike, već i druge servise. Autentifikacija nije samo sigurnosna stavka. Ona direktno utiče na kašnjenje, keširanje, komunikaciju između servisa i način skaliranja.
U praksi se često dešava da se u system design intervjuima kandidati fokusiraju na baze podataka, load balancere i mikroservise, a potpuno preskoče pitanje identiteta. A upravo tu nastaju kasnije ozbiljni problemi.
Razumevanje osnovnih modela autentifikacije danas je obavezno znanje za svakoga ko želi da projektuje ozbiljne backend sisteme.
Šta je zapravo autentifikacija
Autentifikacija je prvi sigurnosni filter svakog sistema. Pre nego što aplikacija odluči šta nekom korisniku dozvoljava, mora da utvrdi ko je taj korisnik.
Tek nakon uspešne autentifikacije sledi autorizacija, odnosno odlučivanje koje radnje su dozvoljene. Ta dva pojma se vrlo često mešaju, ali u ozbiljnim sistemima moraju biti strogo razdvojeni.
Autentifikacija odgovara na pitanje identiteta. Autorizacija odgovara na pitanje dozvola.
Basic Authentication kao relikt ranog weba
Basic Authentication je najstariji i konceptualno najprostiji mehanizam. Korisničko ime i lozinka se kodiraju i šalju sa svakim HTTP zahtevom.
Bez HTTPS zaštite, ovaj model je praktično otvoren poziv za presretanje podataka. Upravo zato se danas gotovo više i ne koristi u ozbiljnim produkcionim sistemima.
Njegova jedina realna prednost je jednostavnost implementacije, ali ta jednostavnost dolazi uz previsoku bezbednosnu cenu.
Bearer tokeni kao standard današnjeg API sveta
Bearer tokeni su danas osnovni mehanizam za autentifikaciju u većini API sistema. Umesto slanja lozinke, klijent šalje token koji predstavlja dokaz identiteta.
Server proverava token i na osnovu toga dopušta pristup. Pošto se stanje ne čuva na serveru, ovaj pristup je stateless, što direktno omogućava lako horizontalno skaliranje.
Upravo zbog toga su Bearer tokeni postali standard u REST API arhitekturama, mobilnim aplikacijama i cloud servisima.
OAuth2 i JWT kao temelj moderne prijave korisnika
OAuth2 je protokol koji omogućava prijavu putem proverenih provajdera kao što su Google, GitHub ili Apple, bez deljenja lozinke sa aplikacijom.
Korisnik se autentifikuje kod provajdera, a aplikacija dobija pristupni token. Taj token je u najvećem broju slučajeva upravo JWT token.
JWT je digitalno potpisan objekat koji sadrži informacije o korisniku i važi kao dokaz identiteta. Server ne čuva sesije, već na svaku proveru samo validira potpis i sadržaj tokena.
Upravo zato su JWT tokeni ključni za skalabilne i distribuirane sisteme.
Access i refresh tokeni u modernim sistemima
Savremeni sistemi gotovo uvek koriste kombinaciju kratkotrajnih access tokena i dugotrajnijih refresh tokena.
Access token ima kratak vek trajanja i koristi se za svaki konkretan API poziv. Kada on istekne, refresh token automatski dobija novi access token bez potrebe da se korisnik ponovo prijavljuje.
Ovim pristupom se postiže ravnoteža između sigurnosti i korisničkog iskustva. Sistem ostaje bezbedan, a korisnik ostaje ulogovan bez prekida.
SSO i identitet kao centralizovana usluga
Single Sign-On omogućava korisniku da se jednom prijavi i koristi više aplikacija bez ponovnog unosa kredencijala.
Iza ovog mehanizma stoje identitet protokoli kao što su OAuth2 i SAML. OAuth2 dominira modernim web servisima kroz opcije poput “Login with Google”. SAML je stariji i najčešće se koristi u korporativnim sistemima, internim dashboardima i enterprise platformama.
SSO značajno pojednostavljuje upravljanje korisničkim nalozima, smanjuje broj lozinki i podiže ukupni nivo bezbednosti u velikim organizacijama.
Zašto je izbor autentifikacije ključan za skalabilnost
Način na koji se implementira autentifikacija direktno oblikuje komunikaciju između servisa. Kod mikroservisa, svaki servis mora da razume i validira identitet pozivaoca. Loš izbor modela može stvoriti usko grlo koje ruši performanse celog sistema.
Stateless modeli zasnovani na tokenima imaju ogromnu prednost u okruženjima gde se instancije stalno podižu i spuštaju. Držanje sesija u memoriji servera danas je luksuz koji većina velikih sistema ne može sebi da priušti.
Autentifikacija više nije pomoćna komponenta
Autentifikacija više nije dodatak sistemu. Ona je njegov temelj. Bez pravilno postavljenog identiteta, nema stabilne autorizacije, nema bezbedne komunikacije između servisa i nema ozbiljne skalabilnosti.
Razlika između sistema koji se ruši pod opterećenjem i onog koji radi stabilno često se nalazi upravo u implementaciji tokena, protokola i validacije identiteta.
Za developere koji žele da pređu iz sveta pukog pisanja koda u svet ozbiljnog dizajna sistema, razumevanje Basic Authentication, Bearer tokena, OAuth2 protokola, JWT tokena i SSO modela nije opcija. To je osnovna pismenost modernog backend inženjeringa.
0 komentara