{"id":8845,"date":"2026-08-22T19:20:00","date_gmt":"2026-08-22T17:20:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=8845"},"modified":"2026-10-24T03:44:37","modified_gmt":"2026-10-24T01:44:37","slug":"bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/","title":{"rendered":"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy"},"content":{"rendered":"<p>Bezpieczny interfejs REST WordPressa wymaga trzech oddzielnych decyzji: sposobu uwierzytelnienia klienta, dozwolonej operacji i przyjmowanych danych. OAuth 2.0 mo\u017ce pomaga\u0107, lecz w\u0142asny system OAuth nie jest warunkiem ka\u017cdej integracji.<\/p>\n<h2>Has\u0142o aplikacji czy OAuth?<\/h2>\n<p>Has\u0142a aplikacji nale\u017c\u0105 do rdzenia WordPressa od wersji 5.6. Przez HTTPS uwierzytelniaj\u0105 konto WordPressa. Uprawnienia pochodz\u0105 z tego konta; dost\u0119p administracyjny istnieje tylko przy odpowiednich prawach konta. Osobne konto integracyjne z celowo nadanymi uprawnieniami mo\u017ce wi\u0119c by\u0107 w\u0142a\u015bciwym rozwi\u0105zaniem. Standardowe has\u0142o aplikacji nie ma w\u0142asnych w\u0105skich zakres\u00f3w OAuth. Nadal potrzebne s\u0105 uniewa\u017cnianie, bezpieczne przechowywanie i kontrola praw.<\/p>\n<p>OAuth 2.0 dodaje delegowan\u0105 autoryzacj\u0119 z serwerem autoryzacji i odpowiedni\u0105 integracj\u0105 WordPressa. Rdze\u0144 nie dostarcza kompletnego serwera OAuth 2.0. Zakresy wymagaj\u0105 zdefiniowania i rzeczywistego egzekwowania w endpoincie. Kr\u00f3tki czas \u017cycia, refresh tokeny i rotacja zale\u017c\u0105 od implementacji; nag\u0142\u00f3wek Bearer nie zapewnia tych cech automatycznie. Dost\u0119p zatwierdzany przez u\u017cytkownika wymaga odpowiedniego przep\u0142ywu authorization code z PKCE wed\u0142ug aktualnych zasad bezpiecze\u0144stwa; dost\u0119p us\u0142ugowy potrzebuje rozwi\u0105zania obs\u0142uguj\u0105cego ten przypadek. OAuth nie jest synonimem JWT ani szyfrowania.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-8843-rest-api-20261024-pl.png\" alt=\"To\u017csamo\u015b\u0107, uprawnienia i format danych\"\/><figcaption>To\u017csamo\u015b\u0107, uprawnienia i format danych<\/figcaption><\/figure>\n<h2>Uwierzytelnienie nie zast\u0119puje kontroli uprawnie\u0144<\/h2>\n<p>Poprawny token nie dowodzi prawa do zmiany konkretnego zasobu. Zale\u017cnie od systemu kontrola obejmuje wystawc\u0119, odbiorc\u0119, wa\u017cno\u015b\u0107, model uniewa\u017cniania, zakres i powi\u0105zane konto. Walidacja JWT wymaga r\u00f3wnie\u017c dozwolonych algorytm\u00f3w i zaufanych kluczy; samo dekodowanie nie sprawdza podpisu. Te zadania powinny nale\u017ce\u0107 do utrzymywanej integracji uwierzytelniania, zamiast do niezdefiniowanej funkcji pomocniczej.<\/p>\n<p>permission_callback trasy sprawdza dozwolon\u0105 operacj\u0119, na przyk\u0142ad przez current_user_can(). Dost\u0119p do konkretnego wpisu lub obiektu klienta wymaga dodatkowej kontroli praw do tego obiektu. Jawne true udziela dost\u0119pu; WP_Error odmawia z odpowiedni\u0105 odpowiedzi\u0105. Rdze\u0144 traktuje r\u00f3wnie\u017c false i null jako odmow\u0119. Inne warto\u015bci, takie jak 0 lub pusty ci\u0105g, nie mog\u0105 oznacza\u0107 b\u0142\u0119du: rdze\u0144 nie traktuje takich wynik\u00f3w jak false.<\/p>\n<h2>Kompletny, celowo ograniczony przyk\u0142ad walidacji<\/h2>\n<p>Przyk\u0142ad rejestruje wy\u0142\u0105cznie kontrol\u0119 JSON. Nie zapisuje telemetrii ani nie implementuje OAuth lub limitowania \u017c\u0105da\u0144. Wymagane s\u0105 WordPress, HTTPS i istniej\u0105ce obs\u0142ugiwane uwierzytelnianie. W\u0142asne uprawnienie lw_validate_telemetry musi zosta\u0107 \u015bwiadomie nadane w\u0142a\u015bciwemu kontu lub roli podczas konfiguracji; przyk\u0142ad sam nie nadaje praw. Integracja OAuth i kontrola zakres\u00f3w musz\u0105 dodatkowo istnie\u0107 poza pokazanym uprawnieniem konta.<\/p>\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ Example validation endpoint: no telemetry is stored.\nadd_action(&#x27;rest_api_init&#x27;, function () {\n    register_rest_route(&#x27;lw-example\/v1&#x27;, &#x27;\/validate-telemetry&#x27;, [\n        &#x27;methods&#x27; =&gt; &#x27;POST&#x27;,\n        &#x27;permission_callback&#x27; =&gt; function () {\n            if (!current_user_can(&#x27;lw_validate_telemetry&#x27;)) {\n                return new WP_Error(&#x27;rest_forbidden&#x27;, &#x27;Not permitted&#x27;, [\n                    &#x27;status&#x27; =&gt; rest_authorization_required_code(),\n                ]);\n            }\n            return true;\n        },\n        &#x27;callback&#x27; =&gt; function (WP_REST_Request $request) {\n            if (!$request-&gt;is_json_content_type()) {\n                return new WP_Error(&#x27;invalid_media_type&#x27;, &#x27;JSON required&#x27;, [&#x27;status&#x27; =&gt; 415]);\n            }\n            if (strlen($request-&gt;get_body()) &gt; 8192) {\n                return new WP_Error(&#x27;body_too_large&#x27;, &#x27;Body too large&#x27;, [&#x27;status&#x27; =&gt; 413]);\n            }\n            $body = $request-&gt;get_json_params();\n            $schema = [\n                &#x27;type&#x27; =&gt; &#x27;object&#x27;,\n                &#x27;required&#x27; =&gt; [&#x27;payload_hash&#x27;],\n                &#x27;additionalProperties&#x27; =&gt; false,\n                &#x27;properties&#x27; =&gt; [\n                    &#x27;payload_hash&#x27; =&gt; [\n                        &#x27;type&#x27; =&gt; &#x27;string&#x27;,\n                        &#x27;minLength&#x27; =&gt; 64,\n                        &#x27;maxLength&#x27; =&gt; 64,\n                        &#x27;pattern&#x27; =&gt; &#x27;^[a-fA-F0-9]{64}$&#x27;,\n                    ],\n                ],\n            ];\n            $valid = rest_validate_value_from_schema($body, $schema, &#x27;body&#x27;);\n            if (is_wp_error($valid)) {\n                return new WP_Error(&#x27;invalid_body&#x27;, &#x27;Invalid JSON body&#x27;, [&#x27;status&#x27; =&gt; 400]);\n            }\n            return new WP_REST_Response(\n                [&#x27;validated&#x27; =&gt; true, &#x27;stored&#x27; =&gt; false],\n                200,\n                [&#x27;Cache-Control&#x27; =&gt; &#x27;no-store&#x27;]\n            );\n        },\n    ]);\n});\n<\/code><\/pre>\n<p>Poprawny korpus JSON zawiera wy\u0142\u0105cznie payload_hash z 64 znakami szesnastkowymi. Dodatkowe pola, nieprawid\u0142owe typy i brak warto\u015bci powoduj\u0105 odrzucenie. Taki skr\u00f3t nie dowodzi pochodzenia ani autentyczno\u015bci danych. Przyk\u0142ad sprawdza jedynie format i wyra\u017anie odpowiada stored: false. Rzeczywisty zapis wymaga tak\u017ce schematu biznesowego, praw do obiekt\u00f3w i wiarygodnej regu\u0142y idempotencji dla powtarzanych operacji zapisu.<\/p>\n<p>Kod czyta tylko korpus JSON zamiast po\u0142\u0105czonych parametr\u00f3w URL, formularza i JSON. Limit 8 KiB dzia\u0142a dopiero po uruchomieniu PHP. Limit serwera WWW lub us\u0142ugi poprzedzaj\u0105cej aplikacj\u0119 pozostaje potrzebny, gdy du\u017ce \u017c\u0105dania maj\u0105 by\u0107 odrzucane wcze\u015bniej. Dwadzie\u015bcia izolowanych test\u00f3w u\u017cywa\u0142o skopiowanych klas schematu i \u017c\u0105dania WordPressa z zast\u0119pcz\u0105 obs\u0142ug\u0105 uwierzytelniania i hook\u00f3w; nie wykonano rzeczywistej integracji HTTP ani OAuth.<\/p>\n<h2>Kolejno\u015b\u0107 kontroli i granice obci\u0105\u017cenia<\/h2>\n<p>WordPress i PHP dzia\u0142aj\u0105 ju\u017c przed sprawdzeniem schematu argument\u00f3w REST. W zwyk\u0142ym dispatch rdze\u0144 sprawdza zarejestrowane argumenty przed permission_callback i g\u0142\u00f3wnym callbackiem. Dodatkowa walidacja biznesowa mo\u017ce dzia\u0142a\u0107 wewn\u0105trz callbacku przed przetwarzaniem, jak w przyk\u0142adzie. Schemat nie zapobiega wi\u0119c uruchomieniu PHP. W\u0142asny validate_callback musi poprawnie obs\u0142ugiwa\u0107 r\u00f3wnie\u017c b\u0142\u0119dne typy; samo wyra\u017cenie regularne nie jest pe\u0142n\u0105 kontrol\u0105 danych.<\/p>\n<p>Limit przed PHP mo\u017ce ogranicza\u0107 wczesny koszt obs\u0142ugi. Limit w aplikacji mo\u017ce rozr\u00f3\u017cnia\u0107 uwierzytelnionych klient\u00f3w i kosztowne operacje. Proxy nie jest z definicji ograniczone do adres\u00f3w IP; wsp\u00f3\u0142dzielone adresy i niezaufane nag\u0142\u00f3wki przekazywania wymagaj\u0105 osobnej uwagi. Implementacja potrzebuje atomowych licznik\u00f3w, jasnych okien czasowych, okre\u015blonego zachowania przy awarii i odpowiednich odpowiedzi 429. \u017baden pojedynczy \u015brodek nie gwarantuje ochrony przed ka\u017cdym przeci\u0105\u017ceniem.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy podpisane \u017c\u0105danie ze znacznikiem czasu zapobiega powt\u00f3rzeniu?<\/h3>\n<p>Okno czasowe odrzuca stare \u017c\u0105dania, lecz nie blokuje ponowienia wewn\u0105trz dozwolonego okna. Zale\u017cnie od protoko\u0142u potrzebne s\u0105 jednorazowe identyfikatory zapisywane atomowo z terminem wa\u017cno\u015bci, powi\u0105zane sk\u0142adniki \u017c\u0105dania oraz biznesowa regu\u0142a idempotencji. Rotacja sekret\u00f3w i TLS pozostaj\u0105 wa\u017cne. W\u0142asna konstrukcja nie jest automatycznie prostsza od dobrze obs\u0142ugiwanego standardu.<\/p>\n<h3>Czy \/wp\/v2\/users zawsze wymaga wy\u0142\u0105czenia?<\/h3>\n<p>Publiczne informacje o autorach r\u00f3\u017cni\u0105 si\u0119 od chronionych p\u00f3l konta. Masowe usuwanie tras mo\u017ce zak\u0142\u00f3ci\u0107 edytor, wtyczki lub integracje. Celowana polityka dost\u0119pu musi uwzgl\u0119dnia\u0107 r\u00f3wnie\u017c archiwa autor\u00f3w i inne publiczne \u017ar\u00f3d\u0142a. R\u00f3\u017cne nazwy logowania i wy\u015bwietlania nie zast\u0119puj\u0105 silnego uwierzytelniania ani kontroli uprawnie\u0144.<\/p>\n<h3>Jakie b\u0142\u0119dy nale\u017c\u0105 do test\u00f3w odbiorczych?<\/h3>\n<p>Brak danych logowania, brak uprawnie\u0144, wygas\u0142e lub b\u0142\u0119dne tokeny, nieprawid\u0142owe typy, zbyt du\u017ce korpusy, dodatkowe pola, powtarzany zapis i niedost\u0119pny magazyn token\u00f3w lub limitera. Tokeny dost\u0119pu lub zgody nie nale\u017c\u0105 do publicznych log\u00f3w. Nawet po poprawnym uwierzytelnieniu dost\u0119p do chronionego obiektu innego konta musi nadal ko\u0144czy\u0107 si\u0119 odmow\u0105.<\/p>\n<\/div>\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/rest-api\/using-the-rest-api\/authentication\/\">WordPress: REST authentication<\/a><\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2020\/11\/05\/application-passwords-integration-guide\/\">WordPress: Application Passwords<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/rest-api\/extending-the-rest-api\/adding-custom-endpoints\/\">WordPress: Custom endpoints<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_rest_server\/dispatch\/\">WordPress: REST dispatch<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_rest_server\/respond_to_request\/\">WordPress: Permission callback handling<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/rest_validate_value_from_schema\/\">WordPress: Schema validation<\/a><\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9700.html\">IETF RFC 9700: OAuth 2.0 security<\/a><\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9421.html\">IETF RFC 9421: HTTP message signatures<\/a><\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8725.html\">IETF RFC 8725: JWT security<\/a><\/li>\n<li><a href=\"https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/REST_Security_Cheat_Sheet.html\">OWASP: REST security<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/rest-api\/\">WordPress: REST API handbook<\/a><\/li>\n<li><a href=\"https:\/\/owasp.org\/www-project-top-ten\/\">OWASP: Top 10<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Techniczny przewodnik po zabezpieczaniu integracji REST API w WordPressie: wdra\u017canie zakres\u00f3w OAuth 2.0, autoryzowane niestandardowe endpointy i \u015bcis\u0142a walidacja schemat\u00f3w.<\/p>\n","protected":false},"author":1,"featured_media":14105,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[152],"tags":[92280,92051,92238,92077,92286],"class_list":["post-8845","post","type-post","status-publish","format-standard","hentry","category-tworzenie-stron-internetowych","tag-php-pl","tag-rest-api-pl","tag-tutorial-pl","tag-web-security-pl","tag-wordpress-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Zabezpieczanie integracji REST WordPressa: zakresy OAuth, w\u0142asne endpointy, kontrola uprawnie\u0144 i walidacja schematu danych.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Zabezpieczanie integracji REST WordPressa: zakresy OAuth, w\u0142asne endpointy, kontrola uprawnie\u0144 i walidacja schematu danych.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-22T17:20:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-24T01:44:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy\",\"datePublished\":\"2026-08-22T17:20:00+00:00\",\"dateModified\":\"2026-10-24T01:44:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/\"},\"wordCount\":936,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png\",\"keywords\":[\"PHP\",\"REST API\",\"Tutorial\",\"Web Security\",\"WordPress\"],\"articleSection\":[\"Tworzenie stron internetowych\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/\",\"name\":\"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png\",\"datePublished\":\"2026-08-22T17:20:00+00:00\",\"dateModified\":\"2026-10-24T01:44:37+00:00\",\"description\":\"Zabezpieczanie integracji REST WordPressa: zakresy OAuth, w\u0142asne endpointy, kontrola uprawnie\u0144 i walidacja schematu danych.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png\",\"width\":1200,\"height\":630,\"caption\":\"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy | Lukas Wojcik","description":"Zabezpieczanie integracji REST WordPressa: zakresy OAuth, w\u0142asne endpointy, kontrola uprawnie\u0144 i walidacja schematu danych.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/","og_locale":"en_US","og_type":"article","og_title":"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy | Lukas Wojcik","og_description":"Zabezpieczanie integracji REST WordPressa: zakresy OAuth, w\u0142asne endpointy, kontrola uprawnie\u0144 i walidacja schematu danych.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-22T17:20:00+00:00","article_modified_time":"2026-10-24T01:44:37+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy","datePublished":"2026-08-22T17:20:00+00:00","dateModified":"2026-10-24T01:44:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/"},"wordCount":936,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png","keywords":["PHP","REST API","Tutorial","Web Security","WordPress"],"articleSection":["Tworzenie stron internetowych"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/","name":"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png","datePublished":"2026-08-22T17:20:00+00:00","dateModified":"2026-10-24T01:44:37+00:00","description":"Zabezpieczanie integracji REST WordPressa: zakresy OAuth, w\u0142asne endpointy, kontrola uprawnie\u0144 i walidacja schematu danych.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8845-bezpieczne-rest-api-wordpress-oauth--g.png","width":1200,"height":630,"caption":"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/bezpieczne-rest-api-w-wordpressie-oauth-2-0-i-niestandardowe-autoryzowane\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Bezpieczne REST API w WordPressie: OAuth 2.0 i niestandardowe, autoryzowane endpointy"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=8845"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8845\/revisions"}],"predecessor-version":[{"id":23429,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8845\/revisions\/23429"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14105"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=8845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=8845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=8845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}