Průvodce autentizací WordPress REST API

Úvod do autentizace WordPress REST API
Rozhraní WordPress API REST API je mocný nástroj umožňující přístup k obsahu a funkcionalitě WordPressu přes HTTP požadavky z jakékoli aplikace, ať už mobilní aplikace, JavaScriptového frontendu, externí služby nebo zcela samostatné webové aplikace. Zatímco čtení veřejného obsahu je obvykle dostupné bez autentizace, vytváření, aktualizace a mazání obsahu vyžaduje, aby se uživatel autentizoval, aby WordPress věděl, kdo akci provádí a zda k tomu má potřebná oprávnění.
WordPress podporuje pro REST API několik metod autentizace a každá má své výhody, nevýhody a ideální scénáře použití. Volba správné metody závisí na tom, kdo k API přistupuje (frontend na stejném webu, externí aplikace, mobilní aplikace), jaká úroveň zabezpečení je potřeba a jak složitou integraci chcete implementovat. V tomto průvodci si podrobně projdeme každou metodu s praktickými příklady.
Autentizace přes cookie s nonce
Autentizace přes cookie je výchozí metodou pro požadavky přicházející ze samotného webu WordPress, typicky z JavaScriptového kódu v administraci nebo na frontendu. Když je uživatel přihlášen do WordPressu, prohlížeč s každým požadavkem automaticky odesílá cookie a WordPress REST API ho používá k identifikaci uživatele. Samotná cookie ale nestačí, protože by to umožnilo CSRF útoky, kdy by škodlivý web mohl vyvolat požadavky jménem přihlášeného uživatele.
Jak funguje nonce
WordPress používá nonce (number used once) jako další vrstvu ochrany před CSRF útoky. Nonce je časově omezený token, který WordPress generuje pro přihlášeného uživatele a který musí být odeslán s každým měnícím požadavkem (POST, PUT, DELETE). JavaScriptový kód ho získá přes funkci wp_localize_script() nebo přes globální proměnnou wpApiSettings.nonce v administraci.
- Generování - wp_create_nonce('wp_rest') na straně serveru
- Předání - wp_localize_script() pro předání nonce do JavaScriptu
- Odeslání - hlavička X-WP-Nonce nebo query parametr _wpnonce
- Platnost - nonce vyprší po 24 hodinách (dvě nonce období WordPressu po 12 h)
- Revalidace - u dlouhotrvajících relací periodicky vyžádejte nový nonce přes API
Autentizace přes cookie je ideální pro JavaScriptový kód běžící na samotném webu WordPress, protože nevyžaduje žádnou další konfiguraci kromě správného předání nonce. Není vhodná pro externí aplikace, protože ty nemají přístup k cookie WordPressu. Mějte také na paměti, že nonce vyprší a dlouhotrvající relace vyžadují mechanismus obnovy tokenu, aby uživatel uprostřed práce nedostal chybu 403.
Application Passwords
Application Passwords byly zavedeny ve WordPressu 5.6 jako vestavěná metoda pro autentizaci externích aplikací bez předávání hlavního hesla uživatele. Každý uživatel může vytvořit více aplikačních hesel s popisnými názvy (např. Mobilní aplikace, Zapier integrace, Vlastní skript) a každé lze nezávisle zneplatnit, aniž by to ovlivnilo ostatní nebo hlavní heslo uživatele.
Vytvoření a použití
Aplikační heslo se vytváří v administraci WordPressu v sekci Uživatelé, Upravit uživatele, Application Passwords. Zadáte název aplikace a WordPress vygeneruje 24znakové heslo seskupené do 4 skupin po 6 znacích oddělených mezerou. Toto heslo se používá pro HTTP Basic Authentication, kde se uživatelské jméno a aplikační heslo odesílají v hlavičce Authorization zakódované ve formátu base64.
Požadavek s Application Password vypadá jako standardní HTTP Basic Auth: hlavička Authorization obsahuje Basic následované řetězcem uzivatelske_jmeno:aplikacni_heslo zakódovaným v base64. Mezery v hesle jsou ignorovány, takže je můžete odstranit nebo ponechat. WordPress automaticky rozpozná, že jde o Application Password a ne o hlavní heslo uživatele, a aplikuje odpovídající oprávnění.
Výhody a omezení
- Jednoduchost - vestavěná funkcionalita bez potřeby pluginů
- Granulární kontrola - každá aplikace má vlastní heslo, které lze zneplatnit
- Logování - WordPress zaznamenává poslední použití každého aplikačního hesla
- Omezení - funguje pouze přes HTTPS, protože Basic Auth posílá přihlašovací údaje v každém požadavku
- Omezení - žádné scope ani granularita oprávnění nad rámec role uživatele
Application Passwords jsou skvělou volbou pro integrace server-to-server, ideální pro prostředí VPS hostingu, automatizační skripty a aplikace, kde je jednoduchost důležitější než granulární řízení přístupu. Vždy používejte HTTPS, protože přihlašovací údaje se posílají v každém požadavku a bez HTTPS mohou být odposlechnuty. Pro produkční integrace vytvořte samostatného uživatele WordPress s minimem nezbytných oprávnění místo používání administrátorského účtu.
OAuth 2.0
OAuth 2.0 je průmyslový standard pro autorizaci, který používají Google, Facebook, GitHub a mnoho dalších služeb. WordPress nemá vestavěnou podporu OAuth, ale je dostupná přes pluginy jako WP OAuth Server a OAuth 2.0 Provider. OAuth je ideální pro scénáře, kdy chcete umožnit aplikacím třetích stran přístup k vašemu WordPress API s přesným řízením oprávnění bez sdílení přihlašovacích údajů uživatele.
Tok OAuth 2.0
Nejběžnějším OAuth tokem pro webové aplikace je Authorization Code flow skládající se z několika kroků. Aplikace přesměruje uživatele na authorize endpoint WordPressu, kde uživatel schválí přístup. WordPress přesměruje uživatele zpět do aplikace s autorizačním kódem. Aplikace vymění kód za access token zavoláním token endpointu. Access token se pak používá pro API požadavky v hlavičce Authorization Bearer.
- Authorization Code - nejbezpečnější tok pro webové aplikace se serverovou částí
- Implicit - pro SPA aplikace bez serveru (méně bezpečný, obvykle nedoporučovaný)
- Client Credentials - pro komunikaci server-to-server bez kontextu uživatele
- PKCE - Proof Key for Code Exchange, zlepšuje zabezpečení pro mobilní a SPA aplikace
OAuth poskytuje nejvyšší úroveň kontroly a zabezpečení, ale je také nejsložitější na implementaci. Access tokeny mají omezenou platnost a pro získání nových bez opětovné autorizace uživatele se používají refresh tokeny. Parametr scope definuje, jaká oprávnění aplikace požaduje, což dává uživateli transparentnost ohledně toho, co může aplikace s jeho daty dělat.
JWT (JSON Web Tokens)
Autentizace JWT je oblíbenou alternativou pro přístup k REST API používající tokeny místo relací. JWT token je podepsaný řetězec obsahující informace o uživateli a oprávněních, odesílaný v hlavičce Authorization každého požadavku. WordPress nemá vestavěnou podporu JWT, ale je dostupná přes pluginy jako JWT Authentication for WP REST API a Simple JWT Login.
Jak funguje JWT
Uživatel odešle uživatelské jméno a heslo na token endpoint (obvykle /wp-json/jwt-auth/v1/token) a v odpovědi dostane JWT token. Tento token se pak posílá v hlavičce Authorization: Bearer všech API požadavků. Server ověří podpis tokenu a extrahuje informace o uživateli, aniž by musel dotazovat databázi, což činí JWT efektivnějším pro API s vysokou zátěží.
JWT token se skládá ze tří částí oddělených tečkami: hlavička (algoritmus a typ tokenu), payload (data uživatele, čas vypršení, vydavatel) a podpis (kryptografický podpis garantující integritu tokenu). Token lze dekódovat na straně klienta, ale nelze ho zfalšovat bez tajného klíče známého pouze serveru. To umožňuje klientovi přečíst informace o uživateli z tokenu bez dalšího API volání.
Výhody JWT
- Bezstavovost - server neukládá relace, což usnadňuje škálování
- Samostatnost - token obsahuje všechny potřebné informace o uživateli
- Cross-domain - funguje napříč různými doménami bez problémů s CORS u cookies
- Mobilní aplikace - ideální pro mobilní aplikace, které nepoužívají cookies
- Výkon - ověření tokenu nevyžaduje dotaz do databáze
Porovnání metod autentizace
Volba metody autentizace závisí na vašem konkrétním scénáři. Cookie a nonce jsou ideální pro JavaScript na stejném webu, protože nevyžadují další konfiguraci. Pro optimální prostředí se podívejte na naše tarify WordPress hostingu. Application Passwords jsou nejlepší pro jednoduché integrace server-to-server a skripty, protože jsou vestavěné a snadno použitelné. OAuth 2.0 je správnou volbou pro aplikace třetích stran, kde je potřeba granulární řízení přístupu a autorizace uživatele. JWT je optimální pro mobilní aplikace a SPA frameworky komunikující s WordPressem jako headless CMS.
Bezpečnostní doporučení
- Vždy používejte HTTPS - všechny metody autentizace vyžadují šifrované spojení
- Minimální oprávnění - vytvářejte uživatele jen s nezbytnými oprávněními pro přístup k API
- Rotace tokenů - implementujte refresh tokeny a krátké vypršení access tokenu
- Rate limiting - omezte počet požadavků na uživatele jako ochranu před brute-force
- Logování - zaznamenávejte všechny API požadavky pro audit a detekci škodlivé aktivity
- Konfigurace CORS - omezte přístup k API pouze z povolených domén
Pro produkční aplikace doporučujeme kombinaci více metod, kde každá pokrývá jiný scénář. Autentizace přes cookie pro administraci a interakce na frontendu, Application Passwords pro interní skripty a automatizaci, JWT pro mobilní aplikace a OAuth pro integrace třetích stran. Pravidelně kontrolujte aktivní tokeny a aplikační hesla a zneplatňujte ta, která se již nepoužívají, protože každý aktivní token je potenciálním vektorem útoku.
BeoHosting Team
10+ let zkušeností — Specialisté na webhosting a infrastrukturu
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Naposledy aktualizováno: