Autentifikacija, bezbednost i performanse
Drupal JSON:API modul omogućava moćan način za izlaganje vašeg sadržaja kao API-ja, ali izbor odgovarajuće metode autentifikacije je ključan za bezbednost i upotrebljivost. Ovaj pregled pokriva različite opcije autentifikacije koje su dostupne prilikom rada sa Drupal JSON modula.
Osnovne metode autentifikacije
Drupal REST & JSON API Authentication modul ograničava i štiti neovlašćen pristup vašim Drupal API-jevima koristeći različite metode autentifikacije, uključujući:
Ovaj modul takođe omogućava autentifikaciju API poziva u Headless/Decoupled Drupal okruženju.
- Osnovna autentifikacija (Basic Authentication)
- Autentifikacija bazirana na API ključu
- Autentifikacija na osnovu Access Token/OAuth
- JWT autentifikacija (JSON Web Token)
- Autentifikacija putem tokena trećih strana (3rd Party Provider)
Autentifikacija putem kolačića (Cookie-Based Authentication)
Podrazumevana metoda autentifikacije u Drupalu koristi sesijske kolačiće. Kada se korisnik prijavi putem Drupal forme za prijavu, kreira se sesijski kolačić koji može biti iskorišćen za autentifikaciju JSON zahteva.
Prednosti:
- Jednostavna implementacija za aplikacije koje rade u brauzeru
- Koristi postojeći Drupal sistem autentifikacije
- Radi dobro za JavaScript aplikacije hostovane na istom domenu
Ograničenja:
- Nije pogodno za cross-domain zahteve bez dodatne konfiguracije
- Manje pogodno za mobilne aplikacije ili integracije trećih strana
- Overhead oko upravljanja sesijom
Osnovna autentifikacija (Basic Authentication)
Basic Authentication podrazumeva slanje kredencijala (korisničko ime i lozinka) u Authorization zaglavlju pri svakom zahtevu.
Prednosti:
- Jednostavna za implementaciju
- Široko podržana u HTTP klijentima
Ograničenja:
- Kredencijali se šalju u svakom zahtevu
- Bezbedno samo preko HTTPS-a
- Nema ugrađeno istecanje tokena
Kontribuisani moduli za autentifikaciju
Simple OAuth (OAuth 2.0)
Simple OAuth implementira OAuth 2.0 protokol za autentifikaciju preko Drupal API-ja.
Prednosti:
- Bezbedna autentifikacija zasnovana na tokenima
- Podrška za refresh tokene
- Fino podešene dozvole (scopes)
- Idealan za integracije trećih strana
- Široko prihvaćen standard
Ograničenja:
- Kompleksnija konfiguracija u odnosu na basic auth
- Potreban dobar uvid u OAuth 2.0 tokove
JWT (JSON Web Token)
JWT modul omogućava autentifikaciju korišćenjem JSON Web Tokena.
Prednosti:
- Bezustanje autentifikacije (stateless)
- Smanjuje broj upita ka bazi za verifikaciju
- Mogućnost dodavanja podataka (claims/metadata) u token
- Dobro radi za skaliranje i velike performanse
Ograničenja:
- Potreban ispravan menadžment ključeva
- Bezbednosni rizici ako se implementira pogrešno
- Nema ugrađeno opozivanje tokena bez dodatnih mera
Key Auth
Key Auth omogućava autentifikaciju putem API ključa za Drupal.
Prednosti:
- Jednostavan API key pristup
- Idealan za komunikaciju mašina-sa-mašinom
- Minimalna konfiguracija
Ograničenja:
- Manje bezbedno za korisnički orijentisane aplikacije nego OAuth
- Ograničene opcije za opozivanje ključeva
- Nema mehanizma za refresh token
Consumer Auth
Consumer Auth proširuje mogućnosti Consumer entiteta u Drupal API sistemu.
Prednosti:
- Povezano sa Drupal consumer sistemom
- Fleksibilne dozvole bazirane na potrošaču (consumer)
- Može se koristiti u kombinaciji sa drugim metodama autentifikacije
Ograničenja:
- Namenjeno za korišćenje uz druge metode, nije samostalno rešenje
Šta uzeti u obzir pri izboru metode autentifikacije
Kada birate metodu autentifikacije za vaš JSON API, razmotrite:
- Bezbednosne zahteve: Koliko su vaši podaci osetljivi?
- Tip klijenta: Da li je u pitanju brauzer, mobilna aplikacija ili server-server komunikacija?
- Korisničko iskustvo: Da li će se od korisnika često tražiti prijava?
- Potrebe za performansama: Koliko je brzina autentifikacije važna?
- Integracije: Da li će treće strane pristupati vašem API-ju?
Najbolje prakse
- Uvek koristite HTTPS za bilo koji metod autentifikacije
- Implementirajte ispravne CORS zaglavlja za aplikacije bazirane na brauzeru
- Pažljivo definišite politike isteka tokena
- Koristite refresh tokene gde je to prikladno
- Primijenite rate limiting radi zaštite od brute force napada
- Beleži sve pokušaje autentifikacije radi bezbednosnog praćenja