๊ฐ์ฅ ์๋ ์ ์ฌ์ฉํ๋ ๋ก๊ทธ์ธ ๋ฐฉ์์ ๋จผ์ ์์๋ณด์.
๊ฐ์ฅ ์๋ ์ ์ฌ์ฉํ๋ ๋ก๊ทธ์ธ ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ก ๋ก๊ทธ์ธํ๋ฉด ๊ทธ ์ ๋ณด์ ๋ํ ํน์ ์์ด๋(sessionId)๋ฅผ ๋ฐ์์ ์ ์ฅํด๋๊ณ api๋ฅผ ์์ฒญํ ๋๋ง๋ค sessionId๋ฅผ ๊ฐ์ด ์ฒจ๋ถํด์ ๋ณด๋ด๋ ๋ฐฉ์์ด์๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์์๋ ์ฌ์ฉ์๋ค์ ๋ชจ๋ ์์ฒญ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ฒ ๋๋๋ฐ ์์ฒญ์ด ๋ง์์ง๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ด ๋ถ์กฑํ๊ฒ ๋๋ค.
๊ทธ๋์ ํ์ฌ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฐฉ์์ผ๋ก ์๋ ๋ฐฉ์๊ณผ ํฐ ํ์ ๋น์ทํ์ง๋ง ๋ ๋ง์ ์ ์ ๋ค์ ๋ฐ์ ์ ์๊ฒ ๋์๋ค.
ํ์ฌ ๋ก๊ทธ์ธ ๋ฐฉ์๊ณผ JWT ์์๋ณด๊ธฐ
JWT๋ ๋๊ตฌ๋ ์ง ๋ณผ ์๋ ์์ง๋ง ์กฐ์์ ๋ถ๊ฐ๋ฅํ๋ค.
VERIFY SIGNATURE์ ์ ๋ ฅํ๋ KEY๋ฅผ ๊ฐ์ง๊ณ ์ฒ์์ ์๋ช ๋ ๋ด์ฉ์ด๋ ๋น๊ต๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์กฐ์๋๊ฑด์ง ์๋์ง๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ ์์ผ๋ก ์ฐ๋ฆฌ๋ JWT๋ฅผ ๋ก๊ทธ์ธ์ ์ ๊ทผํ๋ ์ฉ๋๋ก ์ธ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ accessToken์ด๋ผ๊ณ ๋ถ๋ฅผ ๊ฒ์ด๋ค. ๋ก๊ทธ์ธ์ ์ฌ์ฉ๋๋ ํ ํฐ์ ์ด๋ค ๊ฑธ๋ก๋ ์ธ ์ ์์ง๋ง ์ฐ๋ฆฌ๋ ๊ทธ ์ค์์ JWT๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค. (๋๊ฐ๊ฐ ๊ฐ๋ค๋ ์๋ฏธ๊ฐ ์๋๋ค.)
accessToken !== JWT
JWT !== accessToken
์ด ํ ๊ทผ์ ์ค์ API์ ํจ๊ป ๋ณด๋ด๊ธฐ ์ํด์๋ HTTP Headers์ ์ฒจ๋ถํ๋ฉด ๋๋ค.
API๋ฅผ ๋ณด๋ผ ๋ request header(์์ฒญ์ ๋ณด๋ผ ๋), response header(์๋ต์ ๋ฐ์ ๋)๋ฑ์ด ์๋ค.
๋ฐ์ดํฐ์ ์์ฝ์ ๋ณด, ์ด๋์ ๋ฐ์ดํฐ๊ฐ ์ถ๋ฐ๋๋์ง(Origin), ์ด๋ป๊ฒ ์์ถ์ด ๋์๋์ง ๋ฑ์ ๊ดํ ์ ๋ณด๋ค์ด ์์ฝ๋์ด ์ ์ฅ๋์ด ์๋ค.
์ด๋ request header์ accessToken์ ๊ฐ์ด ์ฒจ๋ถํด์ ๋ณด๋ด์ฃผ๋ฉด ๋๋ค.
{
"Authorization" : "Bearer accessToken"
}
๋ค์์ฒ๋ผ Request Headers์ Authorization ๋ถ๋ถ์ ํ ํฐ์ด ์ถ๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ฌ๊ธฐ์ Authorization ๊ณผ Bearer์ ๋ํด ๋ ์์๋ณด์.
์ธ์ฆ์ Authentication์ด๊ณ ์ธ๊ฐ๋ Authorization์ด๋ค.
์ธ์ฆ์ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ํ ํฐ(accessToken)์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋งํ๋ค. login API
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ธ๊ฐ๋ ์ด๋ฏธ ๋ฐ์ ํ ํฐ์ ๊ฐ์ง๊ณ ๋ด ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ฑฐ๋(fetchUserLoggedIn
) ์ํ์ ๋ฑ๋ก(createUser
)ํ๊ฑฐ๋ ๋ฑ์ ์ถ๊ฐ ์์
์ ํ๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ์์
์ ํ๋ ค๋ฉด ์ด ์ฌ๋์ด ๋๊ตฐ์ง ์์์ผํ๊ธฐ ๋๋ฌธ์ accessToken์ผ๋ก ๋ณตํธํ๋ฅผ ํตํด์ ์ ์ ๋ฅผ ์ ์ ์๋ค. ์ด๋ฌํ ๊ณผ์ ์ ์ธ๊ฐ๋ผ๊ณ ํ๋ค.
๊ทธ๋์ ์ธ์ฆ์ ํ ๋๋ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๊ฐ ํ์ํ๊ณ ์ธ๊ฐ๋ฅผ ํ ๋๋ request headers์ accessToken์ ๋๊ธฐ๊ฒ ๋๋ค. ์ธ์ฆ์ ํ๋ฒ๋ง ํ๋ฉด ๋๊ณ ์ธ๊ฐ๋ ํ์ํ ๋๋ง๋ค ๋งค๋ฒ ์ด๋ฃจ์ด์ง๊ฒ ๋๋ค.
authorization์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐ๊ฒ ๋ ๋ ์ด ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด ์ด๋ค ๊ฒ์ธ์ง ์๋ ค์ฃผ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๋ฌธ์์ด์ด๊ณ Bearer ๋ง๊ณ Basic ๋ฑ์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค. ๊ด๋ก์ Bearer๋ ํ ํฐ ์ธ์ฆ์ ํ ๋ ์ฌ์ฉํ๋ค. ์ด๋ ํน์ ํ ๊ธฐ๋ฅ์ ํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ๋นผ๊ฑฐ๋ ๋ค๋ฅธ ๋จ์ด๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง ๋ฐฑ์๋์์ ์ด๋ป๊ฒ ์ฝ๋ฉ์ ํด๋จ๋์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋ค. ๋ฐฑ์๋์์ ์ด ํ ํฐ์ ๊ฐ์ ธ๊ฐ ๋ ๋ฌธ์์ด์์ replace("Bearer", "")ํด์ ํ ํฐ์ ๊ฐ์ ธ๊ฐ ์ ์๊ฒ ์ค์ ํด๋จ๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฐฉํฅ ์ํธํ
๋จ๋ฐฉํฅ ์ํธํ (Hash)
ํ์ง๋ง ์๋ฒฝํ ๋ณด์์ ์๊ธฐ ๋๋ฌธ์ ์ ์ ๋ ๊ฐ๋ฐ์๋ ๋ณด์์ ์ ์ํด์ผ ํ๋ค.