Search
๐Ÿš€

โœ… JWT(Json Web Token)

JWT ํŠน์ง•๊ณผ ์ฃผ์˜ ์‚ฌํ•ญ

ํŠน์ง•

JWT(Json Web Token) ์€ ํ†ต์‹  ์ •๋ณด๋ฅผ JSON ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. JWT๋Š” ํ† ํฐ ์ž์ฒด์— ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ํด๋ ˆ์ž„ ๊ธฐ๋ฐ˜ ํ† ํฐ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ JWT๋Š” ์ฃผ๋กœ ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. JWT๋Š” ํ—ค๋”, ํŽ˜์ด๋กœ๋“œ, ์‹œ๊ทธ๋‹ˆ์ฒ˜๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ํ—ค๋”์—๋Š” ํ† ํฐ์˜ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ํƒ€์ž…์„ ๊ฐ€์ง€๋ฉฐ, ํŽ˜์ด๋กœ๋“œ์—๋Š” ๋ฐ์ดํ„ฐ(๋งŒ๋ฃŒ์ผ, ์‚ฌ์šฉ์ž ์ •๋ณด ๋“ฑ)์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์‹œ๊ทธ๋‹ˆ์ฒ˜๋Š” ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๊ฐ€ ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š”๋ฐ์š”. ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ๋น„๋ฐ€ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ—ค๋”์— ๋ช…์‹œ๋œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.
JWT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๊ฐ€๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ, ํด๋ ˆ์ž„ ๊ธฐ๋ฐ˜ ํ† ํฐ์˜ ํŠน์„ฑ ๋•๋ถ„์— ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ์— ๋น„ํ•ด์„œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์„œ๋ฒ„๊ฐ€ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ์ด์ค‘ํ™”๋œ ํ™˜๊ฒฝ์—์„œ๋„ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์„ธ์…˜ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

์ฃผ์˜ ์‚ฌํ•ญ

โ€ข
JWT๋Š” ๋””์ฝ”๋”ฉ์ด ์‰ฝ์Šต๋‹ˆ๋‹ค. Base64๋กœ ๋””์ฝ”๋”ฉํ•˜๋ฉด ํŽ˜์ด๋กœ๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ฒƒ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์‹œํฌ๋ฆฟ ํ‚ค์˜ ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์€ ๊ฒฝ์šฐ, ๋ฌด์ž‘์œ„ ๋Œ€์ž… ๊ณต๊ฒฉ(Brute force Attack)์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐ•๋ ฅํ•œ ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.
โ€ข
์‹œํฌ๋ฆฟ ํ‚ค๋Š” ์œ ์ถœ๋˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•œ ๊ณต๊ฐ„์— ๊ด€๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
โ€ข
JWT ํƒˆ์ทจ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ JWT ์ €์žฅ ๊ณต๊ฐ„, ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๋„์ž… ์—ฌ๋ถ€, Refresh Token Rotation, ํƒˆ์ทจ ๊ฐ์ง€ ๋ฐ ๋Œ€์‘์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํ† ํฐ์˜ ์žฆ์€ ๊ฐฑ์‹ ์ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ €ํ•ดํ•˜๋Š”์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๊ธ€์„ 3์‹œ๊ฐ„ ๋™์•ˆ ์ž‘์„ฑํ•˜๊ณ  ์ œ์ถœํ–ˆ์ง€๋งŒ JWT๊ฐ€ ๋งŒ๋ฃŒ๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€์€ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์Šฌ๋ผ์ด๋”ฉ ์„ธ์…˜๊ณผ ๊ฐ™์€ ์ „๋žต์„ ๊ณ ๋ฏผํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
JWT none ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๊ฒฉ์„ ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๊ฐ€ ํ† ํฐ์˜ ํ—ค๋”์— ๋ช…์‹œ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ none์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ, ํŽ˜์ด๋กœ๋“œ๊ฐ€ ๋ณ€์กฐ๋˜์–ด๋„ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๊ฒ€์ฆ์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ none ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๊ฒฉ์„ ์˜ˆ๋ฐฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, none ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์ด ์•ฝํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ํ•„ํ„ฐ๋งํ•˜๋Š” ๋“ฑ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

JWT(Json Web Token)์˜ ์žฅ์  ๋ฐ ๋‹จ์ 

์žฅ์ 

1.
์ฒซ์งธ
JWT๋Š” Stateless ์ธ์ฆ ๋ฐฉ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ƒํƒœ๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์–ด, ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ฆ ์ƒํƒœ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ์—†์–ด์ง€๋‹ˆ ์„œ๋ฒ„์˜ ํ™•์žฅ์„ฑ ์ธก๋ฉด์—์„œ๋„ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
2.
๋‘˜์งธ
JWT๋Š” ํ† ํฐ์— ์ž์ฒด์ ์œผ๋กœ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ID, ๊ถŒํ•œ ์ •๋ณด ๋“ฑ์„ ํ† ํฐ ์ž์ฒด์— ๋‹ด์„ ์ˆ˜ ์žˆ์–ด, ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ ์—†์ด๋„ ํ•„์š”ํ•œ ์ธ์ฆ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3.
์…‹์งธ
JWT๋Š” ์„œ๋ช…(Signature)์„ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ ๋ฐœ๊ธ‰ํ•œ JWT๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž„์˜๋กœ ๋‚ด์šฉ์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ 

๋จผ์ €, ๋กœ๊ทธ์•„์›ƒ์„ ๊ฐ•์ œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ํ† ํฐ์˜ ์ƒํƒœ๋Š” ์„œ๋ฒ„์—์„œ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํ•œ ๋ฒˆ ๋ฐœ๊ธ‰๋œ ํ† ํฐ์€ ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„์—์„œ ์ž„์˜๋กœ ํ† ํฐ์„ ๋ฌดํšจํ™”ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋‹ค์ค‘ ๋กœ๊ทธ์ธ ์ œํ•œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๋„ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๋กœ ์ธํ•œ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JWT๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ ์„ธ์…˜ ID๋ณด๋‹ค ์šฉ๋Ÿ‰์ด ํฌ๋ฉฐ, ์ด์— ๋”ฐ๋ผ ๋„คํŠธ์›Œํฌ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.