๐Ÿ›ก๏ธ

JWT ๋””์ฝ”๋” & ๊ฒ€์ฆ๊ธฐ JWT Decoder

JSON Web Token ๊ตฌ๋ฌธ ๋ถ„์„, ๋งŒ๋ฃŒ์ผ์‹œ(exp) ํ•ด์„, ํด๋ ˆ์ž„ ์ธ์ŠคํŽ™ํ„ฐ ๋ฐ HS256 ์‹ค์‹œ๊ฐ„ ์„œ๋ช… ๊ฒ€์ฆ

โœ“
ํ† ํฐ ๊ตฌ์กฐ๊ฐ€ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค์•„๋ž˜์—์„œ ๋น„๋ฐ€ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋””์ง€ํ„ธ ์„œ๋ช… ๋ฌด๊ฒฐ์„ฑ์„ ์ฆ‰์‹œ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งŒ๋ฃŒ ์ƒํƒœ ํ™•์ธ ์ค‘
ENCODED์ธ์ฝ”๋“œ๋œ ํ† ํฐ (Encoded Token)
ํ—ค๋” (Header)ํŽ˜์ด๋กœ๋“œ (Payload)์„œ๋ช… (Signature)
๐Ÿ”‘ ์„œ๋ช… ๊ฒ€์ฆ ๋น„๋ฐ€ํ‚ค (Secret Key)

๋น„๋ฐ€ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ Web Crypto API๋กœ ์„œ๋ช… ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ์ฆ‰์‹œ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

DECODED๋””์ฝ”๋“œ๋œ ๋‚ด์šฉ (Decoded Claims)
HEADER: ์•Œ๊ณ ๋ฆฌ์ฆ˜ & ํ† ํฐ ํƒ€์ž…HS256
PAYLOAD: ๋ฐ์ดํ„ฐ ๋ฐ ํด๋ ˆ์ž„ (Claims)0 claims

ํ‘œ์ค€ ํด๋ ˆ์ž„(Standard Claims) ์ƒ์„ธ ๋ถ„์„

exp (๋งŒ๋ฃŒ ์‹œ๊ฐ„):
-
iat (๋ฐœํ–‰ ์‹œ๊ฐ„):
-
sub (์ฃผ์ œ / ID):
-
iss (๋ฐœํ–‰์ฒ˜):
-
๐Ÿ”’

JWT ๋ณด์•ˆ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ๋ผ์ธ

ํŽ˜์ด๋กœ๋“œ ์•”ํ˜ธํ™” ์•„๋‹˜

JWT์˜ ํŽ˜์ด๋กœ๋“œ๋Š” ๋‹จ์ˆœ Base64URL ์ธ์ฝ”๋”ฉ์ผ ๋ฟ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ฃผ๋ฏผ๋ฒˆํ˜ธ ๋“ฑ ๋ฏผ๊ฐํ•œ ๊ฐœ์ธ์ •๋ณด๋ฅผ ํŽ˜์ด๋กœ๋“œ์— ์ €์žฅํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

"alg": "none" ๊ณต๊ฒฉ ๋ฐฉ์–ด

์„œ๋ฒ„ ์ธก ๊ฒ€์ฆ ์‹œ ํ—ค๋”์˜ alg๊ฐ€ none์ธ ํ† ํฐ์„ ๋ช…์‹œ์ ์œผ๋กœ ๊ฑฐ๋ถ€ํ•˜๋„๋ก ๊ฐ•์ œํ•ด์•ผ ์„œ๋ช… ๊ฒ€์ฆ ์šฐํšŒ ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ์ ˆํ•œ ๋งŒ๋ฃŒ์‹œ๊ฐ„(exp) ์„ค์ •

Access Token์€ ํƒˆ์ทจ ํ”ผํ•ด๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด 15๋ถ„~1์‹œ๊ฐ„ ๋‚ด์™ธ์˜ ์งง์€ ์œ ํšจ๊ธฐ๊ฐ„์„ ๊ถŒ์žฅํ•˜๋ฉฐ, ์žฌ๋ฐœ๊ธ‰์€ Refresh Token์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ฐ•๋ ฅํ•œ ๋น„๋ฐ€ํ‚ค(Secret) ์‚ฌ์šฉ

HS256 ์„œ๋ช… ๋น„๋ฐ€ํ‚ค๋Š” ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ(Brute-force)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ 256๋น„ํŠธ(32์ž ์ด์ƒ)์˜ ๋ฌด์ž‘์œ„ ์—”ํŠธ๋กœํ”ผ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!