๐Ÿ’ Spring/Spring Security

7. JWT๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์ „ Basic, Bearer ๋ฐฉ์‹

iseunghan 2021. 10. 31. 23:08
๋ฐ˜์‘ํ˜•

์ด ํฌ์ŠคํŠธ๋Š” ๋ฐ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋‹˜์˜ ์œ ํŠœ๋ธŒ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋‚˜์„œ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

Token ์ธ์ฆ ๋ฐฉ์‹

  • ์„ธ์…˜์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์„œ๋ฒ„์— ๋‘๋Š” ์„ธ์…˜ ์ €์žฅ์†Œ, ๋˜ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์ผ ๋•Œ์˜ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ฌธ์ œ๋“ค์„ ํ•œ๋ฐฉ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ ์ฟ ํ‚ค๋ฅผ ํƒˆ์ทจ ๋‹นํ–ˆ์„ ๋•Œ์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ๋“ค๋„ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๋Œ€ ์ด์–ด๋„ Secret_key ๊ฐ’๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ํ† ํฐ์„ Valid ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Session์€ ๋™์ผ ๋„๋ฉ”์ธ์—์„œ๋งŒ..

  • ๋งŒ์ผ ๋™์ผ ๋„๋ฉ”์ธ์—์„œ์˜ ์š”์ฒญ์ด ์•„๋‹ˆ๋ผ๋ฉด, ์ฟ ํ‚ค๊ฐ€ ์•ˆ ๋‚ ๋ผ๊ฐ„๋‹ค! (์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค๋ฅผ ๊ฑฐ๋ถ€!)
  • ๊ทธ๋ ‡๋‹ค๋ฉด, javascript์—์„œ Ajax๋กœ ํ—ค๋”์— ์ฟ ํ‚ค๋ฅผ ๊ฐ•์ œ๋กœ ๋‹ด์•„์„œ ๋ณด๋‚ผ ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ์„œ๋ฒ„์—์„œ๋Š” HTTP Only ์„ค์ •์„ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ HTTP ์š”์ฒญ์ด ์•„๋‹Œ javascript ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๊ฑฐ๋ถ€๋˜๋Š” ์„ค์ •์„ ํ•œ๋‹ค.
  • HTTP Only = false๋กœ ํ’€์–ด์ฃผ๋ฉด, ์™ธ๋ถ€์—์„œ javascript๋กœ ์žฅ๋‚œ์„ ๋งŽ์ด ์น˜๊ธฐ ๋•Œ๋ฌธ์— true๋กœ ์„ค์ •ํ•˜๋Š” ํŽธ์ด๋‹ค.

 

Authorization

์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, ์š”์ฒญ ํ—ค๋”์— Authorization : <type> <credentials> ์„ ๋‹ด์•„์„œ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

type์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„๋ณผ ํƒ€์ž… ๋‘ ๊ฐ€์ง€๋ฅผ ์•Œ์•„๋ณด๊ฐฐ์Šต๋‹ˆ๋‹ค.

 

Basic

์‚ฌ์šฉ์ž ID์™€ PW๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฐ’์„ ํ† ํฐ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. (RFC 7617)

  • Basic ํ† ํฐ ๊ฐ’์ด ๋…ธ์ถœ์ด ๋˜๋ฉด ID, PW๊ฐ€ ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค.

 

Bearer

์ผ๋ฐ˜์ ์œผ๋กœ JWT(RFC 7519) ๊ฐ™์€ OAuth ํ† ํฐ์„ ์‚ฌ์šฉํ•œ๋‹ค. (RFC 6750)

  • Basic ๋ฐฉ์‹๊ณผ๋Š” ๋‹ฌ๋ฆฌ ํ† ํฐ์— ID, PW ๊ฐ’์„ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.
  • ๋กœ๊ทธ์ธ ์‹œ ํ† ํฐ์„ ๋ถ€์—ฌ๋ฐ›๊ณ , ์ดํ›„ ์š”์ฒญํ•  ๋•Œ ์š”์ฒญ ํ—ค๋”์— ํ† ํฐ์„ ์‹ค์–ด์„œ ๋ณด๋‚ธ๋‹ค.
  • ์„ธ์…˜ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”๊ฐ€ ์—†๊ณ , ํ† ํฐ ์ž์ฒด์— ๋‚ด์žฅ์ด ๋˜์–ด์žˆ๋‹ค.
  • STATELESS, ๋ฌด๊ฒฐ์„ฑ, ๋ณด์•ˆ์„ฑ์ด ์žฅ์ 
๋ฐ˜์‘ํ˜•