Authentication: DAY TWO ๐
ํ ํฐ์ ์์ฒญ ํค๋์ authorization ํ๋์ ๋ด์์ ธ ๋ณด๋ด์ง๋ค.
authorization: <type> <credentials>
ํ ํฐ์๋ ๋ง์ ์ข
๋ฅ๊ฐ ์๊ณ ์๋ฒ๋ ๋ค์ํ ์ข
๋ฅ์ ํ ํฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ์ก๋ฐ์ type์ ๋ฐ๋ผ ํ ํฐ์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ค.
Bearer๋ ์ ํ์์์ type
์ ํด๋นํ๋ ๊ฐ์ด๋ค.
"JWT ํน์ OAuth์ ๋ํ ํ ํฐ์ ์ฌ์ฉํ๋ค. (RFC 6750)"๋ ์๋ฏธ.
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
๋ฅผ ๋ฐ๋์ ์ค์ ํด์ฃผ์ด์ผ ํ๋ค.
์ธ์
์ด ์๋๋ผ๋(์: ํ ํฐ ์ฌ์ฉ) ์ธ์ฆ์ด ํฌํจ๋ axios ์์ฒญ ์ ๋ฐ๋์ Credentials ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค. ๋ฐฉ๋ฒ์ ์ธ์
์ธ์ฆ์ Credentials ์ค์ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๋ค.
์ฐธ๊ณ - session ์ธ์ฆ์ด ๋ค์ด๊ฐ axois ํต์ ์ฌ์ฉ ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ค์ ํ๊ธฐ