210415_TIL

seungyeonยท2021๋…„ 4์›” 15์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
54/64

IM: DAY

Authentication: DAY TWO ๐Ÿ”

์˜ค๋Š˜

  • ํ† ํฐ๊ธฐ๋ฐ˜ ์ธ์ฆ
  • JWT (JSON Web Token)
  • ํ”„๋กœ์ ํŠธ ์ž๋ฃŒ์กฐ์‚ฌ

๊ธฐ์–ตํ•  ๊ฒƒ

Bearer ๋ž€?

ํ† ํฐ์€ ์š”์ฒญ ํ—ค๋”์˜ authorization ํ•„๋“œ์— ๋‹ด์•„์ ธ ๋ณด๋‚ด์ง„๋‹ค.

authorization: <type> <credentials>

ํ† ํฐ์—๋Š” ๋งŽ์€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๊ณ  ์„œ๋ฒ„๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํ† ํฐ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ „์†ก๋ฐ›์€ type์— ๋”ฐ๋ผ ํ† ํฐ์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.
Bearer๋Š” ์œ„ ํ˜•์‹์—์„œ type์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด๋‹ค.
"JWT ํ˜น์€ OAuth์— ๋Œ€ํ•œ ํ† ํฐ์„ ์‚ฌ์šฉํ•œ๋‹ค. (RFC 6750)"๋Š” ์˜๋ฏธ.

set-cookie๋กœ ์„ค์ •๋œ ์ฟ ํ‚ค ์‚ฌ์šฉ

set-cookie ํ—ค๋”๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์— ์ฟ ํ‚ค๋ฅผ ์„ค์ •ํ•˜๋ฉด, ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ๋‹ค์Œ ์š”์ฒญ์— ๊ฐ™์ด ํฌํ•จ๋œ๋‹ค.

res.cookie() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด cookie ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

httpOnly: true ์˜ ์˜๋ฏธ

์˜ต์…˜ ์ค‘ httpOnly: true๋กœ ์„ค์ •ํ•˜๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด์„œ๋งŒ cookie์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ด์ฒ˜๋Ÿผ ์ฟ ํ‚ค๊ฐ€ HttpOnly ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์ „์†ก ๋œ ๊ฒฝ์šฐ JavaScript์™€ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ์ธก ํ”„๋กœ๊ทธ๋žจ์— ์ฟ ํ‚ค๊ฐ€ ์ง์ ‘ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ฒฐ๊ตญ "HTTP๊ฐ€ ์•„๋‹Œ" API (์˜ˆ : JavaScript)์—์„œ ์ฟ ํ‚ค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†๋‹ค.

sameSite

sameSite: Lax : sameSite๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ, GET ์š”์ฒญ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. (์›๋ž˜๋Š” None์ด ๊ธฐ๋ณธ๊ฐ’์ด์—ˆ๋Š”๋ฐ, ์–ผ๋งˆ์ „๋ถ€ํ„ฐ Lax๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค.)
sameSite: Strict : sameSite๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ, ์ฟ ํ‚ค ์ „์†ก์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
sameSite: None : sameSite๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์ฟ ํ‚ค ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ https ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, cookie ์˜ต์…˜์˜ secure: true ๋ฅผ ๋ฐ˜๋“œ์‹œ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

Credentials ์„ค์ •

์„ธ์…˜์ด ์•„๋‹ˆ๋ผ๋„(์˜ˆ: ํ† ํฐ ์‚ฌ์šฉ) ์ธ์ฆ์ด ํฌํ•จ๋œ axios ์š”์ฒญ ์‹œ ๋ฐ˜๋“œ์‹œ Credentials ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๋ฐฉ๋ฒ•์€ ์„ธ์…˜ ์ธ์ฆ์‹œ Credentials ์„ค์ • ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•˜๋‹ค.
์ฐธ๊ณ  - session ์ธ์ฆ์ด ๋“ค์–ด๊ฐ„ axois ํ†ต์‹  ์‚ฌ์šฉ ์‹œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์„ค์ •ํ•˜๊ธฐ

๋‚ด์ผ

  • Toy Problem
  • OAuth
  • AWS ๊ฐ€์ž…

Reference

0๊ฐœ์˜ ๋Œ“๊ธ€