Vodič za WordPress REST API autentifikaciju

Uvod u WordPress REST API autentifikaciju
WordPress API interfejs REST API je mocan alat koji omogućuje pristup WordPress sadržaju i funkcionalnosti putem HTTP zahtijeva iz bilo koje aplikacije, bilo da je to mobilna aplikacija, JavaScript frontend, eksterni servis ili potpuno odvojena web aplikacija. Međutim, dok je čitanje javnog sadržaja obično dostupno bez autentifikacije, kreiranje, ažuriranje i brisanje sadržaja zahtijeva da se korisnik autentifikuje kako bi WordPress znao tko izvršava akciju i da li ima potrebne dopuštenja.
WordPress podržava više metoda autentifikacije za REST API, a svaka ima svoje prednosti, mane i idealne scenarije korištenja. Izbor prave metode ovisi o tome tko pristupa API-ju (frontend na istom sajtu, eksterna aplikacija, mobilna aplikacija), koliki nivo sigurnosti je potreban i koliko kompleksnu integraciju želite implementirate. U ovom vodicu detaljno prolazimo kroz svaku metodu sa praktičnim primjerima.
Cookie autentifikacija sa nonce-om
Cookie autentifikacija je podrazumijevana metoda za zahtjeve koji dolaze sa samog WordPress sajta, tipično iz JavaScript koda u admin panelu ili na frontendu. Kada je korisnik ulogovan u WordPress, browser automatski šalje cookie sa svakim zahtjevom i WordPress REST API ga koristi za identifikaciju korisnika. Međutim, sam cookie nije dovoljan jer bi to omogućilo CSRF napade gdje zlonamjerni sajt može pokrenuti zahtjeve u ime ulogovanog korisnika.
Kako funkcionira nonce
WordPress koristi nonce (number used once) kao dodatni sloj zaštite protiv CSRF napada. Nonce je vremenski ograničen token koji WordPress generiše za ulogovanog korisnika i koji se mora poslati uz svaki mutating zahtjev (POST, PUT, DELETE). JavaScript kod ga dobija putem wp_localize_script() funkcije ili wpApiSettings.nonce globalne promjenjive u admin panelu.
- Generisanje - wp_create_nonce('wp_rest') na server strani
- Prosleđivanje - wp_localize_script() za prosleđivanje nonce-a u JavaScript
- Slanje - X-WP-Nonce header ili _wpnonce query parametar
- Validnost - nonce istice nakon 24 sata (dvije WordPress nonce periode od 12h)
- Revalidacija - za dugotrajne sesije, periodično zatrazite novi nonce putem API-ja
Cookie autentifikacija je idealna za JavaScript kod koji se izvršava na samom WordPress sajtu jer ne zahtijeva nikakvu dodatnu konfiguraciju osim ispravnog prosleđivanja nonce-a. Nije pogodna za eksterne aplikacije jer one ne mogu pristupiti WordPress cookie-ju. Također, imajte na umu da nonce istice i da dugotrajne sesije zahtijevaju mehanizam za osvezavanje tokena kako korisnik ne bi dobio 403 grešku usred rada.
Application Passwords
Application Passwords su uvedeni u WordPress 5.6 kao ugrađena metoda za autentifikaciju eksternih aplikacija bez davanja glavne lozinke korisnika. Svaki korisnik može kreirati više application password-a sa opisnim nazivima (npr. Mobile App, Zapier Integration, Custom Script) i svaki se može neovisno opozvati bez utjecaja na ostale ili na glavnu lozinku korisnika.
Kreiranje i korištenje
Application password se kreira u WordPress admin panelu pod Users, Edit User, Application Passwords sekcija. Unosite naziv aplikacije i WordPress generiše lozinku od 24 karaktera grupisanu u 4 grupe od 6 karaktera razdvojene razmakom. Ova lozinka se koristi za HTTP Basic Authentication gdje se username i application password šalju u Authorization hederu kodirani u base64 formatu.
Zahtjev sa Application Password izgleda kao standardni HTTP Basic Auth: Authorization header sadrži Basic nakon cega slijedi base64 kodirani string username:application_password. Razmaci u lozinki se ignorisu pa ih možete ukloniti ili ostaviti. WordPress automatski prepoznaje da je u pitanju Application Password a ne glavna lozinka korisnika i primjenjuje odgovarajuce dopuštenja.
Prednosti i ograničenja
- Jednostavnost - ugrađena funkcionalnost bez potrebe za pluginima
- Granularna kontrola - svaka aplikacija ima vlastitu lozinku koja se može opozvati
- Logging - WordPress bilježi posljednje korištenje svake application lozinke
- Ogranicenje - radi samo preko HTTPS jer Basic Auth šalje kredencijale u svakom zahtjevu
- Ogranicenje - nema scope ili permission granularnost izvan korisničke uloge
Application Passwords su odlican izbor za server-to-server integracije, idealno za VPS hosting okruženja, automatizacione skripte i aplikacije gdje je jednostavnost važnija od granularne kontrole pristupa. Obavezno koristite HTTPS jer se kredencijali šalju u svakom zahtjevu i bez HTTPS-a mogu biti presretnuti. Za produkcione integracije kreirajte zasebnog WordPress korisnika sa minimalnim potrebnim dozvolama umjesto da koristite admin nalog.
OAuth 2.0
OAuth 2.0 je industrijski standard za autorizaciju koji koriste Google, Facebook, GitHub i mnogi drugi servisi. WordPress nema ugrađenu OAuth podršku ali je dostupna kroz plugine kao što su WP OAuth Server i OAuth 2.0 Provider. OAuth je idealan za scenarije gdje želite omogućite third-party aplikacijama pristup vašem WordPress API-ju sa preciznom kontrolom nad dozvolama bez dijeljenja korisničkih kredencijala.
OAuth 2.0 flow
Najčešći OAuth flow za web aplikacije je Authorization Code flow koji se sastoji od nekoliko koraka. Aplikacija preusmjeri korisnika na WordPress authorize endpoint gdje korisnik odobrava pristup. WordPress preusmjeri korisnika nazad na aplikaciju sa authorization code-om. Aplikacija zamjenjuje code za access token pozivom na token endpoint. Access token se zatim koristi za API zahtjeve u Authorization Bearer hederu.
- Authorization Code - najsigurniji flow za web aplikacije sa serverskom stranom
- Implicit - za SPA aplikacije bez servera (manje siguran, obično se ne preporučuje)
- Client Credentials - za server-to-server komunikaciju bez korisničkog konteksta
- PKCE - Proof Key for Code Exchange, poboljšava sigurnost za mobilne i SPA aplikacije
OAuth pruža najvisci nivo kontrole i sigurnosti ali je i najkompleksniji za implementaciju. Access tokeni imaju ograničen rok trajanja i koriste se refresh tokeni za dobijanje novih bez ponovne autorizacije korisnika. Scope parametar definise koje dopuštenja aplikacija traži što daje korisniku transparentnost o tome što aplikacija može radi sa njihovim podacima.
JWT (JSON Web Tokens)
JWT autentifikacija je popularna alternativa za REST API pristup koja koristi tokene umjesto sesija. JWT token je potpisan string koji sadrži informacije o korisniku i dozvolama i koji se šalje u Authorization hederu svakog zahtijeva. WordPress nema ugrađenu JWT podršku ali je dostupna kroz plugine kao što su JWT Authentication for WP REST API i Simple JWT Login.
Kako JWT funkcionira
Korisnik šalje username i password na token endpoint (obično /wp-json/jwt-auth/v1/token) i dobija JWT token u odgovoru. Ovaj token se zatim šalje u Authorization: Bearer hederu svih API zahtijeva. Server verificira potpis tokena i izvlaci informacije o korisniku bez potrebe za pretragom u bazi podataka što čini JWT efikasnijim za visoko opterecene API-je.
JWT token se sastoji od tri dijela razdvojena točkama: header (algoritam i tip tokena), payload (podaci o korisniku, vrijeme isteka, izdavac) i signature (kriptografski potpis koji garantuje integritet tokena). Token se može dekodirati na klijentskoj strani ali se ne može falsifikovati bez secret key-a koji je poznat samo serveru. Ovo omogućuje klijentu da pročita informacije o korisniku iz tokena bez dodatnog API poziva.
Prednosti JWT-a
- Stateless - server ne čuva sesije što olakšava skaliranje
- Self-contained - token sadrži sve potrebne informacije o korisniku
- Cross-domain - radi sa različitim domenima bez CORS problema sa cookie-jima
- Mobilne aplikacije - idealan za mobilne aplikacije koje ne koriste cookie-je
- Performanse - verifikacija tokena ne zahtijeva upit ka bazi podataka
Poređenje metoda autentifikacije
Izbor metode autentifikacije ovisi o vašeg specifičnog scenarija. Cookie i nonce su idealni za JavaScript na istom sajtu jer ne zahtijevaju dodatnu konfiguraciju. Pogledajte naše hosting planove za WordPress sajtove za optimalno okruženje. Application Passwords su najbolji za jednostavne server-to-server integracije i skripte jer su ugrađeni i laki za korištenje. OAuth 2.0 je pravi izbor za third-party aplikacije gdje je potrebna granularna kontrola pristupa i korisnička autorizacija. JWT je optimalan za mobilne aplikacije i SPA framework-e koji komuniciraju sa WordPress-om kao headless CMS-om.
Sigurnosne preporuke
- Uvijek koristite HTTPS - sve metode autentifikacije zahtijevaju enkriptovanu konekciju
- Minimalne dopuštenja - kreirajte korisnike sa samo potrebnim dozvolama za API pristup
- Token rotation - implementirajte refresh tokene i kratke access token rokove
- Rate limiting - ogranicite broj zahtjeva po korisniku za zaštitu od brute-force napada
- Logging - belezite sve API zahtjeve za audit i detekciju zlonamjernih aktivnosti
- CORS konfiguracija - ogranicite pristup API-ju samo sa dozvoljenih domena
Za produkcione aplikacije preporučujemo kombinaciju više metoda gdje svaka pokriva različit scenarij. Cookie autentifikacija za admin panel i frontend interakcije, Application Passwords za interne skripte i automatizaciju, JWT za mobilne aplikacije i OAuth za third-party integracije. Redovno revidirajtie aktivne tokene i application passwords i opozivajte one koji se više ne koriste jer svaki aktivni token je potencijalni vektor napada.
BeoHosting Team
10+ godina iskustva — Stručnjaci za web hosting i infrastrukturu
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Posljednje ažuriranje: