๐Ÿ•ธ๏ธ
WebAPI Server
WebAPI ServerASP.NET CoreMain Subject
  • Intro
  • Web
  • HTTP๋ž€
  • HTTP ๋ฉ”์‹œ์ง€
  • URL๊ณผ ๋ฆฌ์†Œ์Šค
  • ์ƒํƒœ์ฝ”๋“œ
  • HTTP ๋ฉ”์†Œ๋“œ
  • ์›น ๋ธŒ๋ผ์šฐ์ €
  • ์›น ์„œ๋ฒ„
  • REST
  • API
  • WebAPI Server
  • Extra learning
    • IIS
    • JSON
    • JWT
    • DNS
Powered by GitBook
On this page
  • ์˜๋ฏธ
  • ์‚ฌ์šฉ ์ด์œ 
  • ๊ตฌ์„ฑ
  • ์žฅ์ 
  • ๋‹จ์ 
  • ์ฐธ๊ณ 
  • ์ฐธ๊ณ ๋ฌธํ—Œ
  1. Extra learning

JWT

PreviousJSONNextDNS

Last updated 2 years ago

์˜๋ฏธ

  • ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•œ ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜

  • SON ํ˜•ํƒœ๋กœ ์ธ์ฝ”๋”ฉ๋œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ฌธ์ž์—ด๋กœ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์„œ๋ฒ„์—๊ฒŒ ์ž์‹ ์˜ ์‹ ์›์„ ์ฆ๋ช…ํ•˜๊ณ  ๋ณด์•ˆ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Œ

  • URL-safe : base24url ์ธ์ฝ”๋”ฉ ์‚ฌ์šฉ. URL๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋จ

์‚ฌ์šฉ ์ด์œ 

  • ์›น ์„œ๋ฒ„๋Š” stateless ๋กœ ํด๋ผ์ด์–ธํŠธ์™€ ์š”์ฒญ์„ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—, ์š”์ฒญ์„ ๋ฐ›์•˜์„ ๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Œ.

  • ๋งค ์š”์ฒญ๋งˆ๋‹ค ID, PW๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์—†์œผ๋‹ˆ, ์ตœ์ดˆ ์ ‘์†์‹œ์—๋งŒ ID,PW๋ฅผ ๋ฐ›์•„ ์ธ์ฆ์„ ํ•˜๊ณ  JWT๋ฅผ ๋ฐœ๊ธ‰ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธํ•œํ…Œ ์ œ๊ณตํ•จ.

  • ์ดํ›„ ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค JWT๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” JWT๋กœ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํŠน์ •ํ•˜๊ณ  ํ™•์ธํ•จ.

๊ตฌ์„ฑ

  • Header : JWT ํ† ํฐ์˜ ์œ ํ˜•๊ณผ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ

  • payload : ํ† ํฐ์— ๋‹ด์„ ํด๋ ˆ์ž„(claim) ์ •๋ณด๋ฅผ ํฌํ•จ. ์ด๋Š” ์‹ค์ œ๋กœ ์ „์†กํ•˜๋ ค๋Š” ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ์‹๋ณ„ ์ •๋ณด, ๋งŒ๋ฃŒ์‹œ๊ฐ„ ๋“ฑ์ด ํฌํ•จ๋จ. name-value์˜ ํ•œ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ํด๋ ˆ์ž„์„ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ

  • signature : secret key๋ฅผ ํฌํ•จํ•˜์—ฌ ์•”ํ˜ธํ™” ๋˜์–ด์žˆ์Œ. ํ† ํฐ์ด ์œ ํšจํ•œ์ง€ ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•จ

์žฅ์ 

  • Stateless: ์„œ๋ฒ„ ์ชฝ์—์„œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ํ™•์žฅ์„ฑ์ด ๋†’์•„์ง

  • Interoperability: JSON ํ˜•ํƒœ๋กœ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์–ธ์–ด ๋ฐ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  • Extensibility: ํด๋ ˆ์ž„(claim)์— ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์„œ ์‚ฌ์šฉ์ž ๋‹ค์–‘ํ•œ ์ •์˜ ์ •๋ณด๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

  • Security: JWT๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด์„œ ๋ฌด๋‹จ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์œ„์กฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Œ

  • REST ์„œ๋น„์Šค๋กœ ์ œ๊ณต ๊ฐ€๋Šฅ

๋‹จ์ 

  • Payload Size: JWT๋Š” ์ •๋ณด๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ณด๊ฐ€ ์ปค์ง€๋ฉด ์ „์†ก ์‹œ๊ฐ„๊ณผ ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ

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

  • Revocation: JWT๋Š” ๋ฐœ๊ธ‰ ํ›„ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด๋‚˜ ๊ถŒํ•œ ์ทจ์†Œ ๋“ฑ์˜ ๊ฒฝ์šฐ์—๋„ ์„œ๋ฒ„์—์„œ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ. ์ฆ‰, JWT๋ฅผ ๊ฐ•์ œ๋กœ ๋งŒ๋ฃŒ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์–ด๋ ค์›€

  • statless ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ† ํฐ์€ ๊ฑฐ์˜ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ์ „์†ก๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ํŠธ๋ž˜ํ”ฝ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜์Œ

์ฐธ๊ณ 

์ฐธ๊ณ ๋ฌธํ—Œ

JWS(JSON Web Signature) : JSON ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ช… ํ‘œ์ค€

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

RFC7519 ํ‘œ์ค€
(RFC7515)
(RFC7516)
์˜คํ”ˆ๋‚˜๋ฃจ
์œ„ํ‚คํ”ผ๋””์•„