'์˜ค๋Š˜์˜ ๊ณ„์ ˆ, ์˜ค๋Š˜์˜ ๋…ธ๋ž˜' ๋ผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ

JWT๋ฐฉ์‹์œผ๋กœ ๋กœ๊ทธ์ธ+ํšŒ์›๊ฐ€์ž…์„  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด๋ณด์•˜์ง€๋งŒ, 

JWT์™€ ์นœํ•ด์ง€์ง€ ์•Š์•„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ๋กœ ํ•ด๋ณด์•˜๋‹ค.

 


JWT ๋Š” ๋ฌด์—‡์ผ๊นŒ?

JWT๋Š” JSON Web Token์˜ ์•ฝ์ž๋กœ ์ „์ž ์„œ๋ช… ๋œ URL-safe (URL๋กœ ์ด์šฉํ•  ์ˆ˜์žˆ๋Š” ๋ฌธ์ž ๋งŒ ๊ตฌ์„ฑ๋œ)์˜ JSON์ž…๋‹ˆ๋‹ค.

 

 

JWS (Jason Web Signature) : JSON์„ ์•”ํ˜ธํ™”ํ•˜์—ฌ URL-safe ๋ฌธ์ž์—ด๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ

JWE (Jason Web Encryption) : JSON ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•

*URL Safe : URL์— ํฌํ•จ ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒƒ

 

 

 

JWT ํ† ํฐ ๊ตฌ์„ฑ

JWT ํ† ํฐ ๊ตฌ์„ฑ์€ ํ—ค์–ด(header) + ํŽ˜์ด๋กœ๋“œ(payload) + ์„œ๋ช…(Signature)๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ,

๊ฐ ๋ถ€๋ถ„์€  Base64๋กœ ์ธ์ฝ”๋”ฉ ๋˜์–ด ํ‘œํ˜„๋œ๋‹ค. 

 

ํ—ค์–ด(header) : ํ† ํฐ์˜ ์œ ํ˜• (JWT) +  HMAC, HS256(SHA256) ๋˜๋Š” RSA์™€ ๊ฐ™์€ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

ํŽ˜์ด๋กœ๋“œ(payload) : ํ† ํฐ์— ๋‹ด์„ (name/value)๋ฅผ ํ•œ์Œ์œผ๋กœ ์ด๋ฃฌ ํด๋ ˆ์ž„(claim)์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 
                                   ํด๋ ˆ์ž„ ์ •๋ณด๋Š” ๋“ฑ๋ก๋œ ํด๋ ˆ์ž„, ๊ณต๊ฐœ ํด๋ ˆ์ž„, ๋น„๊ณต๊ฐœ ํด๋ ˆ์ž„์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

์„œ๋ช…(Signature) : secret key๋ฅผ ํฌํ•จํ•˜์—ฌ ์•”ํ˜ธํ™” ๋˜์–ด์žˆ๋‹ค.

 

 

JWT Process 

- ํด๋ผ์ด์–ธํŠธ์˜ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜์ง€ ์•Š์•„, ํ† ํฐ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•œ๋‹ค.

- ๋กœ๊ทธ์•„์›ƒ ์‹œ, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ์ €์žฅ๋œ JWT ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

 

 

 JWT์˜ ์ ์šฉ

  • ํšŒ์›์ธ์ฆ : JWT์˜ ๊ฐ€์žฅ ํ”ํ•œ ๋ฐฉ๋ฒ• 
  • ์ •๋ณด๊ต๋ฅ˜ : ๋‘ ๊ฐœ์ฒด ์‚ฌ์ด์—์„œ ์•ˆ์ •์„ฑ์žˆ๊ฒŒ ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ์— ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.  
                    ์ •๋ณด๊ฐ€ ์„œ๋ช…๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ณด๋‚ธ์ด๊ฐ€ ๋ฐ”๋€Œ์ง„ ์•Š์•˜๋Š”์ง€ ๋„์ค‘์— ์กฐ์ž‘๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

JWT ์žฅ์   

  • ์‚ฌ์šฉ์ž ์ธ์ฆ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋Š” ํ† ํฐ ์ž์ฒด์— ํฌํ•จ๋˜์–ด ๋ณ„๋„ ์ธ์ฆ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”์—†๋‹ค.
  • ๋””๋ฒ„๊น… ๋ฐ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜๋‹ค.
  • ํŠธ๋ž˜ํ”ฝ ๋ถ€๋‹ด์ด ๋‚ฎ๋‹ค.    
  • ๋…๋ฆฝ์ ์ธ JWT

 

JWT ๋‹จ์  

  • ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ• ์ˆ˜๋ก ํ† ํฐ์ด ์ปค์ ธ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค. 
  • JWT๋Š” ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•„ ์ œ์–ด๊ฐ€ ์–ด๋ ต๋‹ค. 
  • ์ž„์˜๋กœ ํ† ํฐ์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์–ด 'ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„'์„ ๊ผญ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • Payload ๋Š” ์•”ํ˜ธํ™” ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—
  • JWE๋ฅผ ์•”ํ˜ธํ™” ํ•˜๊ฑฐ๋‚˜ Payload์— ์ค‘์š”ํ•œ ๋ฐ์ž‰ํ„ฐ๋ฅผ ๋„ฃ์ง€ ๋ง์•„์•ผํ•œ๋‹ค.

 

 

 

 

opennaru blog, 'JWT(JSON Web Token) ์ดํ•ด์™€ ํ™œ์šฉ' ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

http://www.opennaru.com/opennaru-blog/jwt-json-web-token/

+ Recent posts