{"id":10342,"date":"2026-09-03T18:25:00","date_gmt":"2026-09-03T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10342"},"modified":"2026-10-09T23:14:41","modified_gmt":"2026-10-09T21:14:41","slug":"json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/","title":{"rendered":"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105"},"content":{"rendered":"<p>Chcesz sprawdzi\u0107, co znajduje si\u0119 w tokenie? W podpisanym JWT odczytanie zawarto\u015bci bywa szybkie. Wa\u017cniejsze pytanie pojawia si\u0119 p\u00f3\u017aniej: kt\u00f3rym z tych danych aplikacja mo\u017ce rzeczywi\u015bcie zaufa\u0107?<\/p>\n<p>Artyku\u0142 dotyczy popularnej podpisanej postaci JWS z trzema cz\u0119\u015bciami. Nag\u0142\u00f3wek i \u0142adunek s\u0105 zakodowane w Base64url, a nie zaszyfrowane. Szyfrowane JWT (JWE) to inna posta\u0107. Oddzielimy wi\u0119c odczytywanie tokenu od jego weryfikacji.<\/p>\n<aside class=\"lw-article-context\" data-lw-editorial=\"20261009\">\n<p><strong>Dlaczego ten temat jest tutaj<\/strong> Moje projekty obejmuj\u0105 aplikacje internetowe i interfejsy API. Ten wst\u0119p wyja\u015bnia r\u00f3\u017cnic\u0119, kt\u00f3r\u0105 \u0142atwo przeoczy\u0107 podczas pracy z tokenami.<\/p>\n<p><strong>Jak wypr\u00f3bowa\u0107 i zinterpretowa\u0107 wynik<\/strong> Do pr\u00f3by u\u017cyj tokenu demonstracyjnego. Dekoder pokazuje pola, ale nie potwierdza podpisu ani uprawnie\u0144. Prawdziwe tokeny dost\u0119pu nie powinny trafia\u0107 do publicznych przyk\u0142ad\u00f3w.<\/p>\n<\/aside>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/jwt-lesen-pl.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Token roz\u0142o\u017cony na trzy cz\u0119\u015bci rozdzielone kropkami, nag\u0142\u00f3wek i \u0142adunek zdekodowane do czytelnego JSON i oznaczone jako czytelne dla ka\u017cdego, podpis oznaczony jako jedyna cz\u0119\u015b\u0107, kt\u00f3ra cokolwiek chroni\"><figcaption>Dwie z trzech cz\u0119\u015bci odczyta ka\u017cdy. Trzecia jest jedyn\u0105, kt\u00f3ra w og\u00f3le co\u015b chroni.<\/figcaption><\/figure>\n<h2>Trzy cz\u0119\u015bci i co robi ka\u017cda z nich<\/h2>\n<p>Token sk\u0142ada si\u0119 z trzech sekcji rozdzielonych kropkami. Pierwsza podaje algorytm i cz\u0119sto u\u017cyty klucz. Druga zawiera o\u015bwiadczenia: informacje o tym, kogo dotyczy token, na co pozwala i jak d\u0142ugo jest wa\u017cny. Trzecia to podpis obejmuj\u0105cy dwie pierwsze cz\u0119\u015bci.<\/p>\n<p>Chroni wy\u0142\u0105cznie trzecia i chroni dok\u0142adnie jedn\u0105 w\u0142asno\u015b\u0107: \u017ce dwie pierwsze nie zmieni\u0142y si\u0119 od chwili podpisania. Nie ukrywa ich i nie trzeba jej rozumie\u0107, aby je odczyta\u0107. Token wklejony w dowolny dekoder natychmiast oddaje swoj\u0105 zawarto\u015b\u0107.<\/p>\n<h2>Czego \u0142adunek nie powinien zawiera\u0107<\/h2>\n<p>Ka\u017cde pole w \u0142adunku to pole wr\u0119czone posiadaczowi tokenu. Adres e-mail, pe\u0142ne imi\u0119 i nazwisko, data urodzenia &#8211; zamieniaj\u0105 dokument dost\u0119pu w przekazanie danych i trafiaj\u0105 tam, gdzie docieraj\u0105 dokumenty dost\u0119pu, a dane osobowe trafia\u0107 nie powinny: do dziennik\u00f3w proxy, pami\u0119ci przegl\u0105darki, raport\u00f3w o b\u0142\u0119dach.<\/p>\n<p>Drugi rodzaj to struktura wewn\u0119trzna. Lista r\u00f3l w rodzaju <code>billing_admin<\/code> albo numer najemcy zdradza, co istnieje za interfejsem i jak jest uporz\u0105dkowane &#8211; w\u0142a\u015bnie to atakuj\u0105cy wylicza w pierwszej kolejno\u015bci. Zwykle wystarczy kr\u00f3tki podmiot i zakres; reszta nale\u017cy do zapytania, kt\u00f3re serwer i tak wykonuje.<\/p>\n<p>Trzeci to wszystko, co przeznaczone by\u0142o wy\u0142\u0105cznie dla wystawcy. Tokeny wkleja si\u0119 do zg\u0142osze\u0144, a \u0142adunek z wewn\u0119trznym numerem klienta w\u0119druje razem z nimi.<\/p>\n<h2 id=\"exp-jest-jedyna-rzecza-konczaca-token\">Termin wa\u017cno\u015bci i regu\u0142y po stronie serwera<\/h2>\n<p><code>exp<\/code> okre\u015bla termin wa\u017cno\u015bci. Brak tego pola nie oznacza automatycznie nieograniczonej wa\u017cno\u015bci: aplikacja mo\u017ce go wymaga\u0107 i sprawdza\u0107 dodatkowe regu\u0142y.<\/p>\n<p>Usuni\u0119cie tokenu w przegl\u0105darce nie uniewa\u017cnia istniej\u0105cych kopii. Wcze\u015bniejsze odrzucenie wymaga strategii po stronie serwera, np. listy blokad. Liczy si\u0119 weryfikacja przez odbieraj\u0105c\u0105 us\u0142ug\u0119. <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc7519.html#section-4.1.4\">RFC 7519: exp<\/a>.<\/p>\n<p>Kr\u00f3tko wa\u017cne tokeny dost\u0119pu i centralnie odwo\u0142ywalne tokeny od\u015bwie\u017caj\u0105ce to jeden z mo\u017cliwych modeli. Okresy wa\u017cno\u015bci zale\u017c\u0105 od aplikacji i sposobu odwo\u0142ywania dost\u0119pu.<\/p>\n<h2>Gdzie odczyt myli si\u0119 ze sprawdzeniem<\/h2>\n<p>Odczytanie tokenu i zaufanie mu to r\u00f3\u017cne czynno\u015bci, a r\u00f3\u017cnic\u0105 jest wywo\u0142anie biblioteki. Dekoder pokazuje o\u015bwiadczenia ka\u017cdego tokenu, tak\u017ce takiego, kt\u00f3ry powsta\u0142 r\u0119cznie trzy sekundy temu. Weryfikacja przelicza podpis wzgl\u0119dem klucza i dopiero ona odpowiada, czy o\u015bwiadczenia pochodz\u0105 od kogo\u015b uprawnionego do ich wystawienia.<\/p>\n<p>Z pomylenia obu wynikaj\u0105 dwa obrazy b\u0142\u0119du. Pierwszy to <code>alg: none<\/code> &#8211; token o\u015bwiadczaj\u0105cy, \u017ce nie ma podpisu. Weryfikator, kt\u00f3ry odczytuje algorytm z tokenu i si\u0119 do niego stosuje, przyjmie wszystko; algorytm musi ustala\u0107 aplikacja, a nie token. Drugi to ten sam b\u0142\u0105d z kluczem: us\u0142ug\u0119 oczekuj\u0105c\u0105 RS256, kt\u00f3ra dostaje token HS256, da si\u0119 nak\u0142oni\u0107 do sprawdzenia go kluczem publicznym jako wsp\u00f3lnym sekretem &#8211; a klucz publiczny jest publiczny.<\/p>\n<h2>Co nale\u017cy do ka\u017cdego tokenu<\/h2>\n<p>Na trzech o\u015bwiadczeniach warto nalega\u0107. <code>exp<\/code>, bo bez niego nic si\u0119 nie ko\u0144czy. <code>iss<\/code>, aby us\u0142uga rozpozna\u0142a, od kt\u00f3rego wystawcy token pochodzi, zamiast przyjmowa\u0107 wszystko, co da si\u0119 zweryfikowa\u0107. Oraz <code>aud<\/code> &#8211; to o\u015bwiadczenie zapobiega przyj\u0119ciu przez interfejs rozlicze\u0144 tokenu wystawionego dla interfejsu raport\u00f3w; kontrola, kt\u00f3r\u0105 \u0142atwo pomin\u0105\u0107 i trudno zauwa\u017cy\u0107, gdy jej brak.<\/p>\n<p>Nic z tego nie wymaga rozbudowanych narz\u0119dzi. Podzielenie tokenu po kropkach i zdekodowanie \u015brodkowej cz\u0119\u015bci trwa sekundy i odpowiada na pytania, na kt\u00f3re inaczej odpowiada si\u0119 za\u0142o\u017ceniem: jak d\u0142ugo to obowi\u0105zuje, na co pozwala i co zdradza ka\u017cdemu, kto to przeczyta.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Co dzieje si\u0119 z wystawionymi ju\u017c tokenami, gdy zmienia si\u0119 klucz podpisu?<\/h3>\n<p>Pozostaj\u0105 wa\u017cne tak d\u0142ugo, jak d\u0142ugo weryfikator zna jeszcze stary klucz. Podpis przelicza si\u0119 wzgl\u0119dem klucza z w\u0142asnej listy weryfikatora, zwykle tego, kt\u00f3ry wskazuje pierwsza cz\u0119\u015b\u0107 tokenu. Gdy ten klucz zniknie z listy, ka\u017cdy podpisany nim token od razu przestaje przechodzi\u0107 weryfikacj\u0119, niezale\u017cnie od tego, co stoi w exp.<\/p>\n<p>Przy planowanej zmianie wynika z tego kolejno\u015b\u0107. Najpierw weryfikatory poznaj\u0105 nowy klucz, potem wystawca zaczyna nim podpisywa\u0107, a stary klucz zostaje, dop\u00f3ki nie wyga\u015bnie ostatni podpisany nim token. Przy tokenach dost\u0119pu \u017cyj\u0105cych kilka minut okres nak\u0142adania si\u0119 jest kr\u00f3tki; je\u015bli tak\u017ce tokeny od\u015bwie\u017caj\u0105ce s\u0105 wystawiane jako podpisane tokeny, si\u0119ga on tak daleko jak ich czas \u017cycia.<\/p>\n<p>Z drugiej strony usuni\u0119cie klucza ko\u0144czy przed czasem wszystkie podpisane nim tokeny, ca\u0142kiem bez listy odrzuce\u0144. To w\u0142a\u015bciwy krok, gdy klucz podpisu wpad\u0142 w niepowo\u0142ane r\u0119ce, ale dotyka naraz wszystkich klient\u00f3w. W ka\u017cdym przypadku wskazanie klucza w tokenie powinno s\u0142u\u017cy\u0107 wy\u0142\u0105cznie do wyboru spo\u015br\u00f3d kluczy, kt\u00f3re weryfikator sam przechowuje, z tego samego powodu, dla kt\u00f3rego algorytm nie mo\u017ce pochodzi\u0107 z tokenu.<\/p>\n<h3>Czy zamiast skraca\u0107 \u0142adunek, da si\u0119 go zaszyfrowa\u0107?<\/h3>\n<p>Tak, za pomoc\u0105 JSON Web Encryption wed\u0142ug RFC 7516; wtedy zawarto\u015b\u0107 odczyta tylko ten, kto ma klucz. Token pozostaje jednak dokumentem dost\u0119pu: kopia w zg\u0142oszeniu albo w pliku dziennika staje si\u0119 nieczytelna, ale do up\u0142ywu exp dzia\u0142a tak samo jak wcze\u015bniej. Pole, kt\u00f3re serwer i tak mo\u017ce sprawdzi\u0107 sam, nie potrzebuje wi\u0119c szyfrowania, tylko w og\u00f3le nie powinno trafia\u0107 do tokenu.<\/p>\n<h3>Co oznacza dla exp rozbie\u017cno\u015b\u0107 zegar\u00f3w mi\u0119dzy serwerami?<\/h3>\n<p>exp to punkt w czasie, por\u00f3wnywany z zegarem us\u0142ugi weryfikuj\u0105cej, a nie wystawcy. Je\u015bli ten zegar si\u0119 sp\u00f3\u017ania, us\u0142uga przyjmuje jeszcze token, kt\u00f3ry ju\u017c wygas\u0142. Je\u015bli si\u0119 spieszy, czas \u017cycia skraca si\u0119 o r\u00f3\u017cnic\u0119, a przy tokenie dost\u0119pu \u017cyj\u0105cym kilka minut ju\u017c jedna minuta to odczuwalna cz\u0119\u015b\u0107. Przy nbf, czyli chwili, od kt\u00f3rej token obowi\u0105zuje, r\u00f3\u017cnica dzia\u0142a odwrotnie: us\u0142uga ze sp\u00f3\u017aniaj\u0105cym si\u0119 zegarem odrzuca \u015bwie\u017co wystawiony token jako jeszcze niewa\u017cny.<\/p>\n<p>RFC 7519 dopuszcza w tym celu niewielk\u0105 tolerancj\u0119, zwykle nie wi\u0119ksz\u0105 ni\u017c kilka minut, a wi\u0119kszo\u015b\u0107 bibliotek oferuje odpowiednie ustawienie. Tolerancja wyd\u0142u\u017ca jednak ka\u017cdy token dok\u0142adnie o t\u0119 warto\u015b\u0107, a dwie minuty tolerancji przy tokenie dost\u0119pu wa\u017cnym pi\u0119\u0107 minut to nie drobiazg. Pewniejsze jest synchronizowanie wszystkich zaanga\u017cowanych maszyn przez NTP i pozostawienie tolerancji na poziomie kilku sekund.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc7519.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 7519: JSON Web Token<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/verifying-googlebot\" target=\"_blank\" rel=\"noopener noreferrer\">Google Search Central: verifying crawlers<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Chcesz sprawdzi\u0107, co znajduje si\u0119 w tokenie? W podpisanym JWT odczytanie zawarto\u015bci bywa szybkie. Wa\u017cniejsze pytanie pojawia si\u0119 p\u00f3\u017aniej: kt\u00f3rym z tych danych aplikacja mo\u017ce rzeczywi\u015bcie zaufa\u0107?<\/p>\n","protected":false},"author":1,"featured_media":15145,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[152],"tags":[92051,92077],"class_list":["post-10342","post","type-post","status-publish","format-standard","hentry","category-tworzenie-stron-internetowych","tag-rest-api-pl","tag-web-security-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105 | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.\" \/>\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\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105 | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-03T16:25:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-09T21:14:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.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\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105\",\"datePublished\":\"2026-09-03T16:25:00+00:00\",\"dateModified\":\"2026-10-09T21:14:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/\"},\"wordCount\":1240,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.png\",\"keywords\":[\"REST API\",\"Web Security\"],\"articleSection\":[\"Tworzenie stron internetowych\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/\",\"name\":\"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105 | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.png\",\"datePublished\":\"2026-09-03T16:25:00+00:00\",\"dateModified\":\"2026-10-09T21:14:41+00:00\",\"description\":\"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.png\",\"width\":1200,\"height\":630,\"caption\":\"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105\"}]},{\"@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":"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105 | Lukas Wojcik","description":"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.","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\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/","og_locale":"en_US","og_type":"article","og_title":"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105 | Lukas Wojcik","og_description":"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-03T16:25:00+00:00","article_modified_time":"2026-10-09T21:14:41+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.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\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105","datePublished":"2026-09-03T16:25:00+00:00","dateModified":"2026-10-09T21:14:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/"},"wordCount":1240,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.png","keywords":["REST API","Web Security"],"articleSection":["Tworzenie stron internetowych"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/","name":"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105 | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.png","datePublished":"2026-09-03T16:25:00+00:00","dateModified":"2026-10-09T21:14:41+00:00","description":"Base64 nie jest ochron\u0105: co nale\u017cy do \u0142adunku JWT, a co nie, dlaczego token bez exp nigdy nie wygasa i jak alg none zamienia weryfikacj\u0119 w odczyt.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10342-token-jwt-jest-podpisany-a-nie-zaszy-n.png","width":1200,"height":630,"caption":"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/json-web-tokens-budowa-co-nalezy-do-ladunku-i-roznica-miedzy-dekodowaniem\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JSON Web Tokens: budowa, co nale\u017cy do \u0142adunku i r\u00f3\u017cnica mi\u0119dzy dekodowaniem a weryfikacj\u0105"}]},{"@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\/10342","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=10342"}],"version-history":[{"count":5,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10342\/revisions"}],"predecessor-version":[{"id":22194,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10342\/revisions\/22194"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/15145"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}