Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Problemy z JSON Web Tokens ... i garść rozwiązań
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Marcin Hoppe
October 14, 2018
Technology
71
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Problemy z JSON Web Tokens ... i garść rozwiązań
Marcin Hoppe
October 14, 2018
More Decks by Marcin Hoppe
See All by Marcin Hoppe
Przepraszam, czy można?
marcinhoppe
0
37
Hacking OAuth 2.0
marcinhoppe
0
63
JSON Web Tokens. Problemy i rozwiązania
marcinhoppe
0
150
Other Decks in Technology
See All in Technology
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
160
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
130
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
200
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
180
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
120
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
350
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
180
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
130
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
930
ウォンテッドリーの最近のプロダクトと技術の紹介
stomk
0
120
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
440
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Scaling GitHub
holman
464
140k
Rails Girls Zürich Keynote
gr2m
96
14k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Visualization
eitanlees
153
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
New Earth Scene 8
popppiees
4
2.7k
Claude Code のすすめ
schroneko
67
230k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Balancing Empowerment & Direction
lara
6
1.3k
Bash Introduction
62gerente
615
220k
Transcript
Problemy z JSON Web Tokens … i garść rozwiązań @marcin_hoppe
wym. dżot @marcin_hoppe RFC 7519
JSON Web Tokens @marcin_hoppe
JSON Object Signing and Encryption JSON Web Signature JSON Web
Encryption JSON Web Keys JSON Web Algorithms JSON Web Tokens @marcin_hoppe
@marcin_hoppe Bezpieczne ciasteczka cookie
@marcin_hoppe OpenID Connect IdP API id_token access_token
@marcin_hoppe FORMAT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ zdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4 gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJ SMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
@marcin_hoppe FORMAT {"alg": "HS256", "typ": "JWT" } {"sub": "1234567890", "iss":
"https://issuer.com", "aud": "https://myapi.com", "exp": 1516239022 } + podpis (HMAC)
https://jwt.io @marcin_hoppe NARZĘDZIE
@marcin_hoppe CRYPTO
@marcin_hoppe SZYFROWANIE
@marcin_hoppe Dystrybucja kluczy
@marcin_hoppe Dystrybucja kluczy IdP API id_token access_token
Jak sfałszować token? @marcin_hoppe
„alg”: „none” @marcin_hoppe PROBLEM 1
@marcin_hoppe PROBLEM 1 eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ zdWIiOiJtaTZ8MDA3IiwibmFtZSI6IkphbWVzIEJ vbmQiLCJsaWNlbnNlX3RvX2tpbGwiOnRydWV9.0w wpvqdLFxhio2zCXObMXDFX1NRZNT3A7_n0uRKdCJ Yw404KYpO4bvIX2IKag8aJZ25690xo54ekcqlvKK PnFoLqjjtZJdo43npESp9XaLDoEHXU8nZlDLEg2W pHSZQXe4tLEy677eIULzze2OJhGSsKYPpKdjcS4c
Zc1fWvqA8
@marcin_hoppe PROBLEM 1 eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJz dWIiOiJtaTZ8MDA3IiwibmFtZSI6IkphbWVzIEJv bmQiLCJsaWNlbnNlX3RvX2tpbGwiOnRydWV9.
@marcin_hoppe PROBLEM 1 eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJz dWIiOiJzcGVjdHJlfDAwMSIsIm5hbWUiOiJFcm5z dCBTdGF2cm8gQmxvZmVsZCJ9.
RS256 ⇒ HS256 @marcin_hoppe PROBLEM 2
@marcin_hoppe PROBLEM 2 {"alg": ”RS256", "typ": "JWT" } {"sub": "1234567890",
"iss": "https://issuer.com", "aud": "https://myapi.com", "exp": 1516239022 } + podpis RSA (klucz publiczny)
@marcin_hoppe PROBLEM 2 {"alg": ”HS256", "typ": "JWT" } {"sub": "1234567890",
"iss": "https://issuer.com", "aud": "https://myapi.com", "exp": 1516239022 } + podpis HMAC (klucz publiczny)
@marcin_hoppe PROBLEM 2 {"alg": ”HS256", "typ": "JWT" } {"sub": ”0000000001",
"iss": "https://issuer.com", "aud": "https://myapi.com", "exp": 1516239022 } + podpis HMAC (klucz publiczny)
Słabe klucze HMAC @marcin_hoppe PROBLEM 3
Klucze HMAC H4sł4 to nie klucze hashcat i słowniki Ten
sam klucz dla wszystkich Brak KDFów @marcin_hoppe PROBLEM 3
@marcin_hoppe Podmiana tokenów IdP #1 API #1 PROBLEM 4
@marcin_hoppe Podmiana tokenów IdP #1 API #2 PROBLEM 4
@marcin_hoppe PROBLEM 4 {"alg": ”RS256", "typ": "JWT" } {"sub": "1234567890",
"exp": 1516239022 } + podpis RSA (klucz publiczny)
@marcin_hoppe PROBLEM 4 {"alg": ”RS256", "typ": "JWT" } {"sub": "1234567890",
"iss": "https://idp1.com", "aud": "https://api1.com", "exp": 1516239022 } + podpis RSA (klucz publiczny)
Co robić? „alg”: „none” Wymuszać algorytm i klucz Ostrożnie z
HMAC Weryfikować claimy @marcin_hoppe
A może są inne formaty? @marcin_hoppe
Tokenowy zawrót głowy @marcin_hoppe
Platofrm Agnostic SEcurity TOkens Ciastka i tokeny Local: poufność i
integralność z kluczem symetrycznym Public: integralność z kluczem publicznym @marcin_hoppe
@marcin_hoppe CRYPTO
@marcin_hoppe FORMAT v2.local.97TTOvgwIxNGvV80XKiGZg_kD3tsXM_ -qB4dZGHOeN1cTkgQ4PnW8888l802W8d9AvEGnoN BY3BnqHORy8a5cC8aKpbA0En8XELw2yDk2f1sVOD yfnDbi6rEGMY3pSfCbLWMM2oHJxvlEl2XbQ
@marcin_hoppe FORMAT {"alg” : ”XChaCha20-Poly1305", ”nonce": 0000...0} {”data": ”this is
a signed message", ”exp” : "2019-01-01T00:00:00+00:00”} Stopka (AEAD): (pusty)
PASETO vs JWT Problem #1 Problem #2 Problem #3 Problem
#4 @marcin_hoppe
Wnioski wym. dżot Zastosowanie kryptografii jest trudne Są alternatywy @marcin_hoppe
Marcin Hoppe Engineering Manager Product Security Auth0 Security Working Group
Node.js Foundation marcin.hoppe @ acm.org twitter.com/Marcin_Hoppe
Ask me anything! @marcin_hoppe