JWT ํ† ํฐ์ด๋ž€?

์„ธ์…˜

์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„์ชฝ์— ์œ ์ € ์ •๋ณด๋ฅผ ์ €์žฅ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ž˜๋„ ์ถ”๊ฐ€์ ์ธ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋งŒ์•ฝ ๋‚ด์žฅ ํ†ฐ์บฃ ๋ฉ”๋ชจ๋ฆฌ์— ์„ธ์…˜์„ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐฐํฌํ•  ๋•Œ๋งˆ๋‹ค ์„ธ์…˜์ด ์ดˆ๊ธฐํ™” ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋“ค์„ ํ™œ์šฉํ•˜๋Š” ํŽธ์ด๋‹ค. 

 

ํ†ฐ์บฃ ์ž์ฒด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ๋‹ค. 

- ๊ฐ€์žฅ ๊ธฐ๋ณธ ์„ค์ • 

- ๋‘ ๋Œ€์ด์ƒ์˜ WAS๊ฐ€ ๊ตฌ๋™๋˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ๋ถ€๊ฐ€์ ์ธ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•œ๋‹ค. 

- ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด๋‹ค. 

- ๋ถ€๊ฐ€์ ์ธ ์„ค์ •์€ ํ•„์š” ์—†์ง€๋งŒ ์ธ์ฆ ์š”์ฒญ๋งˆ๋‹ค DB์™€ IO๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

Redis, Memcached ๋ฉ”๋ชจ๋ฆฌ DB ํ™œ์šฉ 

- B2C ์„œ๋น„์Šค์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.  

 

JWT ํ† ํฐ์€ ์„ธ์…˜๊ณผ ๋‹ค๋ฅด๊ฒŒ ์œ„์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์„œ๋ฒ„๊ฐ€ ๋”ฐ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค(Stateless). JWT ํ† ํฐ ์ž์ฒด์— ์ •๋ณด๊ฐ€ ์•”ํ˜ธํ™” ์ƒํƒœ๋กœ ํฌํ•จ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋Š” ๋‹จ์ˆœํžˆ ๋ณตํ˜ธํ™”์™€ ์•”ํ˜ธํ™” ์ฑ…์ž„๋งŒ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

 

JWT๋ž€?

JWT๋Š” ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”๋œ JSON ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•ด ํ‘œ์ค€๊ทœ์•ฝ์— ๋”ฐ๋ผ ์ƒ์„ฑํ•œ ์•”ํ˜ธํ™”๋œ ๋ฌธ์ž์—ด(Token)์ด๋‹ค. JWT๋Š” Claim ๊ธฐ๋ฐ˜์ด๋ผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, Claim์ด๋ž€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ํ”„๋กœํผํ‹ฐ ์†์„ฑ์„ ์ด์•ผ๊ธฐ ํ•œ๋‹ค.

 

JWT๋Š” '.'์„ ๊ตฌ๋ถ„์ž๋กœ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.  ๊ฐ๊ฐ ํ—ค๋”๋Š” ํ† ํฐ ํƒ€์ž…๊ณผ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ €์žฅํ•˜๊ณ , ๋‚ด์šฉ์€ ์‹ค์ œ๋กœ ์ „๋‹ฌํ•  ์ •๋ณด, ์„œ๋ช…์—๋Š” ์œ„๋ณ€์กฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ์œ„ํ•œ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

 

JWT์˜ Token ์ž์ฒด๋กœ ์˜๋ฏธ์žˆ๋Š” ํ† ํฐ(์œ ์ €์˜ ์ƒํƒœ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ)์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Statelessํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋•Œ ํšŒ์›์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๊ฐ€ ๋‹ด๊ธฐ๋Š” ๊ณณ์ด ๋ฐ”๋กœ JWT์˜ payload ๋ถ€๋ถ„์ด๊ณ  ์ด๊ณณ์— ๋‹ด๊ธฐ๋Š” ์ •๋ณด์˜ ํ•œ '์กฐ๊ฐ'์„ Claim ์ด๋ผ๊ณ  ํ•œ๋‹ค. Claim์€ name / value ํ•œ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ ๋‹น์—ฐํžˆ ์—ฌ๋Ÿฌ๊ฐœ์˜ Claim๋“ค์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

 

JWT์˜ ์žฅ์  

ํ™•์žฅ์„ฑ 

Token ์ž์ฒด๋กœ ์˜๋ฏธ ์žˆ๋Š” ๋‚ด์šฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ๋Š˜์–ด๋‚˜๋”๋ผ๋„ ์ธ์ฆ ๋ฐฉ์‹๋งŒ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์‚ฌ์šฉ์ž ์ธ์ฆ์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ๋ฌผ๋ก  ์„ธ์…˜๋„ ์„ธ์…˜ ์ „์šฉ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด DB์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ๋ชจ๋“  API์˜ ์š”์ฒญ์— ๋Œ€ํ•˜์—ฌ DB์˜ ๊ฐ’์„ ์ฝ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— DB ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.  ๋ธŒ๋ผ์šฐ์ €, ์•ฑ๊ฐ„์˜ ์ฟ ํ‚ค ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— JWT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์— ์ข‹๋‹ค. 

 

๋‹จ์  

๋ชจ๋“  ์š”์ฒญ์— ํ† ํฐ์ด ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ JWT ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์— ํƒˆ์ทจ ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด ํ† ํฐ ์ž์ฒด์— ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์ ธ ์žˆ์–ด ์ •๋ณด๋ฅผ ํƒˆ์ทจ ๋‹นํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

-> ๊ทธ๋ž˜์„œ ๋ณดํ†ต ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ๊ผญ ์ง€์ •ํ•˜๋„๋ก ํ•œ๋‹ค.

 

 

Reference

https://velopert.com/2389

 

[JWT] JSON Web Token ์†Œ๊ฐœ ๋ฐ ๊ตฌ์กฐ | VELOPERT.LOG

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ๋Š” ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ŠคํŠธ๋ฅผ ์ฝ๊ธฐ ์ „์—, ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด์„œ ์ž˜ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์€ ์ง€๋‚œ ํฌ์ŠคํŠธ๋ฅผ ๊ผญ ์ฝ์–ด์ฃผ์„ธ

velopert.com

https://zkdlu.tistory.com/12

 

OAuth2.0 + JWT๋ฅผ ์‚ฌ์šฉํ•œ ํ† ํฐ ๊ธฐ๋ฐ˜ ์„œ๋ฒ„ ์ธ์ฆ ๊ตฌํ˜„ํ•˜๊ธฐ

ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์ธ์ฆ๋ฐ›์€ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜์—ฌ, ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ๋•Œ ํ† ํฐ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด์–ด ์ธ์ฆ์„ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฒ™๋ณด๋ฅผ ์„ธ์…˜์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์„ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—

zkdlu.tistory.com

์Šคํ”„๋ง ๋ถ€ํŠธ์™€ AWS๋กœ ํ˜ผ์ž ๊ตฌํ˜„ํ•˜๋Š” ์›น ์„œ๋น„์Šค - ํ”„๋ฆฌ๋ ‰ - ์ด๋™์šฑ ์ง€์Œ