๋งค์ผ ์ฌ์ฉํ๋ ์น์ฌ์ดํธ๋ ์ฑ์์ '๋ก๊ทธ์ธ' ๋ฒํผ์ ๋๋ฅผ ๋,
์ฌ๋ฌ๋ถ์ ์ ๋ณด๋ ์ด๋ป๊ฒ ๋ณดํธ๋๊ณ ์์๊น์?
๋จ์ํ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ ๊ฒ ๊ฐ์ง๋ง, ๊ทธ ๋ค์๋
๋ณต์กํ๊ณ ์ ๊ตํ ๋ณด์ ์ ์ฐจ๊ฐ ์จ์ด ์์ต๋๋ค.
์ค๋์ ๊ฐ๋ฐ์๊ฐ ์๋๋๋ผ๋ ๊ผญ ์์๋๋ฉด ์ข์, ๋ด ์์คํ ์ ๋ณด๋ฅผ ์งํค๋
IT ๋ณด์์ ํต์ฌ ๊ธฐ์ ์ ์์ฃผ ์ฝ๊ฒ ํ์ด๋๋ฆฌ๋ ค ํฉ๋๋ค.
ํนํ ์์ฆ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ OAuth 2.0๊ณผ
JWT๊ฐ ๋ฌด์์ธ์ง, ๋ง์น ๋์ด๊ณต์ ์
์ฅ๊ถ์ฒ๋ผ ์ฝ๊ฒ ์ค๋ช
ํด
๋๋ฆด๊ฒ์.
๐ก ์ค๋์ ํต์ฌ ์ง๋ฌธ
"๊ตฌ๊ธ ์์ด๋๋ก ๋ก๊ทธ์ธํ๊ธฐ๋ ์ ํธ๋ฆฌํ๋ฉด์๋ ์์ ํ ๊น?"
"๋ก๊ทธ์ธ ํ์๋ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ณ์ ์
๋ ฅํ์ง ์์๋ ๋ ๊น?"
๐ 1. OAuth 2.0: ๋์งํธ ์ธ๊ณ์ '๋ฐ๋ ํํน' ํค
๋จผ์ OAuth 2.0์ด๋ผ๋ ์ฉ์ด๋ถํฐ ์์๋ณผ๊น์?
์ด๋ ต๊ฒ ๋ค๋ฆฌ์ง๋ง, ์ฌ์ค ์ฐ๋ฆฌ๊ฐ ๋งค์ผ ์ฐ๋
'์นด์นด์คํก์ผ๋ก ๋ก๊ทธ์ธ',
'๋ค์ด๋ฒ๋ก ๋ก๊ทธ์ธ'์ด ๋ฐ๋ก ์ด ๊ธฐ์ ์
๋๋ค.
์ฝ๊ฒ ๋งํด, ๋ด ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ฌ์ดํธ์ ๋๊ฒจ์ฃผ๋ ๊ฒ์ด ์๋๋ผ,
๊ฒ์ฆ๋ ๋๋ฆฌ์ธ(๊ตฌ๊ธ, ์นด์นด์ค ๋ฑ)์ ํตํด ์ ๋ถ์ ์ฆ๋ช
ํ๋
๋ฐฉ์์
๋๋ค.
๐ ๋ฐ๋ ํํน ๋น์ ๋ก ์ดํดํ๊ธฐ
-
✅
์ง์ง ์ด์ (๋น๋ฐ๋ฒํธ): ์ฐจ์ ๋ชจ๋ ๋ฌธ์ ์ด๊ณ ์๋๋ ๊ฑธ ์
์๋ ๋ง์คํฐํค์
๋๋ค.
๋จ์๊ฒ ํจ๋ถ๋ก ์ฃผ๋ฉด ์ ๋ ์ ๋๊ฒ ์ฃ ?
-
✅
๋ฐ๋ ํค(OAuth ํ ํฐ): ์ฐจ ๋ฌธ๋ง ์ด๊ฑฐ๋, ์๋๋ง ๊ฑธ ์
์๊ฒ ๊ถํ์ด ์ ํ๋ ํค์
๋๋ค.
ํธ๋ ํฌ๋ ๊ธ๋ฌ๋ธ ๋ฐ์ค๋ ์ด ์ ์๋๋ก ์ค์ ๋์ด ์์ด ์์ ํฉ๋๋ค.
์ฆ, OAuth 2.0์ ์ฌ๋ฌ๋ถ์ ์ง์ง ๋น๋ฐ๋ฒํธ๋ฅผ ๊ณต์ ํ์ง ์๊ณ ๋, ์๋น์ค ์ด์ฉ์
ํ์ํ
์ต์ํ์ ๊ถํ๋ง ๋น๋ ค์ฃผ๋ ์์ ํ ๋ณด์ ํ์ค์
๋๋ค.
๐ซ 2. JWT: ์๋ณ์กฐ๊ฐ ๋ถ๊ฐ๋ฅํ '๋์งํธ ์ ์ฅ๊ถ'
๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ค๋ฉด, ์ด์ ์น์ฌ์ดํธ๋ฅผ ์์ ๋กญ๊ฒ ์ด์ฉํด์ผ๊ฒ ์ฃ ?
์ด๋ ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ฐ๋ก JWT(Json Web Token)์
๋๋ค.
์๋ฒ๋ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ ์ฌ์ฉ์์๊ฒ
JWT๋ผ๋ ์ํธํ๋ ํ ํฐ(์
์ฅ๊ถ)์ ๋ฐ๊ธํด ์ค๋๋ค.
๋์ด๊ณต์ ์
๊ตฌ์์ ๋ช
๋ถ์ ์ด๋ฆ์ ์ ๊ณ , ํ ๋๋ง๋ค ์ง์์ด ๋ช
๋ถ๋ฅผ ํ์ธํ๋
๋ฐฉ์.
์ฌ๋์ด ๋ง์์ง๋ฉด ํ์ธํ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
์๋ชฉ์ ์์ ์ด์ฉ๊ถ ๋ (JWT)๋ฅผ ๋๋ฅด๋ ๋ฐฉ์.
์ง์์ ๋ ๋ง ํ์ธํ๋ฉด ๋๋ฏ๋ก ์ฒ๋ฆฌ๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ณ ๊ฐํธํฉ๋๋ค.
JWT๋ ๋จ์ํ ๋ฌธ์์ด์ฒ๋ผ ๋ณด์ด์ง๋ง, ๊ทธ ์์๋
์ฌ์ฉ์ ์ ๋ณด(๋๊ตฌ์ธ์ง)์
์ ํจ ๊ธฐ๊ฐ(์ธ์ ๊น์ง์ธ์ง), ๊ทธ๋ฆฌ๊ณ
์์กฐ ๋ฐฉ์ง ๋์ฅ(์๋ช
)์ด ์ฐํ ์์ต๋๋ค.
๋๊ตฐ๊ฐ ์ด ํ ํฐ์ ์กฐ์ํ๋ ค๊ณ ํ๋ฉด, ์์กฐ ๋ฐฉ์ง ๋์ฅ์ด ๊นจ์ง๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ
์ฆ์ ์์์ฑ ์ ์์ต๋๋ค.
๐ก️ 3. ๋ด ์ ๋ณด๋ ์ด๋์ ์ ์ฅํด์ผ ์์ ํ ๊น?
์ด ์ค์ํ ๋์งํธ ์
์ฅ๊ถ(JWT)์ ๋ธ๋ผ์ฐ์ ์ด๋์ ๋ณด๊ดํด์ผ
ํ ๊น์?
์ด๊ฒ์ด ๋ฐ๋ก ํ๋ก ํธ์๋ ๋ณด์ ์ ๋ต์ ํต์ฌ์
๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ ๊ฐ์ง ์ฅ์๊ฐ ๊ฑฐ๋ก ๋๋๋ฐ, ๊ฐ๊ฐ ์ฅ๋จ์ ์ด ๋๋ ทํฉ๋๋ค.
| ์ ์ฅ ์ฅ์ | ํน์ง (๋น์ ) | ๋ณด์ ์์ค |
|---|---|---|
|
๋ก์ปฌ ์คํ ๋ฆฌ์ง (LocalStorage) |
๋ด ์ฃผ๋จธ๋ ์ ์ง๊ฐ (๊บผ๋ด๊ธฐ ์ฝ์ง๋ง ์๋งค์น๊ธฐ ์ํ) |
์ํ (XSS ๊ณต๊ฒฉ ์ทจ์ฝ) |
|
์ฟ ํค (HttpOnly Cookie) |
์ํ ๊ฐ์ธ๊ธ๊ณ (์ง์ ๋ชป ๊บผ๋ด๊ณ ์ํ์๋ง ์ ๊ทผ ๊ฐ๋ฅ) |
์์ (์๋ฐ์คํฌ๋ฆฝํธ ์ ๊ทผ ๋ถ๊ฐ) |
๊ฐ๋ฐ์๋ค์ ๋ณดํต 'HttpOnly ์ฟ ํค'๋ผ๋ ๋ฐฉ์์ ์ ํธํฉ๋๋ค.
์ด ๋ฐฉ์์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์๋ฒ์ ํ ํฐ์ ๋ณด์ฌ์ฃผ์ง๋ง,
ํด์ปค๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ํ ํฐ์ ํ์ณ๊ฐ๋ ๊ฒ์ ์์ฒ์ ์ผ๋ก ์ฐจ๋จํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฌ๋ฌ๋ถ์ด ์์ ํ ์ฌ์ดํธ๋ฅผ ์ด์ฉํ ๋, ์๊ฒ ๋ชจ๋ฅด๊ฒ ์ด ๊ธฐ์ ์ด ์ฌ๋ฌ๋ถ์ ์ ๋ณด๋ฅผ
์งํค๊ณ ์๋ ์
์ด์ฃ .
๐ ๋ง์น๋ฉฐ: ํธ๋ฆฌํจ ๋ค์ ์จ๊ฒจ์ง ๊ฒฌ๊ณ ํ ๋ฐฉํจ
์ค๋ ์ฐ๋ฆฌ๋ OAuth 2.0๊ณผ JWT๋ผ๋ ๋ณด์
๊ธฐ์ ์ ํตํด, ์น์ฌ์ดํธ๊ฐ ์ด๋ป๊ฒ ์ฐ๋ฆฌ์ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ๋ค๋ฃจ๋์ง
์์๋ณด์์ต๋๋ค.
์ด๋ ต๊ฒ๋ง ๋๊ปด์ก๋ IT ๋ณด์ ์ฉ์ด๋ค์ด ์กฐ๊ธ์ ์น์ํด์ง์
จ๋์?
-
OAuth 2.0: ๋น๋ฐ๋ฒํธ ๋์ ๊ถํ๋ง ๋น๋ ค์ฃผ๋ '๋ฐ๋ ํค'
๋ฐฉ์์
๋๋ค.
-
JWT: ์์กฐ๊ฐ ๋ถ๊ฐ๋ฅํ ๋์งํธ '์์ ์ด์ฉ๊ถ'์
๋๋ค.
-
๋ณด์ ์ ๋ต: ์์คํ ํ ํฐ์ ํด์ปค๊ฐ ๊ฑด๋ค์ง ๋ชปํ๋๋ก
'HttpOnly ์ฟ ํค'์ ๋ณด๊ดํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
์์ผ๋ก "๊ตฌ๊ธ๋ก ๋ก๊ทธ์ธ" ๋ฒํผ์ ๋ณผ ๋๋ง๋ค,
'์, ๋ด ๋น๋ฐ๋ฒํธ ๋์ ์์ ํ ํ ํฐ์ด ์ค๊ณ ๊ฐ๊ฒ ๊ตฌ๋'๋ผ๊ณ
์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
๋ณด์์ ๋ฉ๋ฆฌ ์๋ ๊ฒ์ด ์๋๋ผ, ์ฐ๋ฆฌ ์ผ์์ ํด๋ฆญ ํ ๋ฒ์ ๋ชจ๋ ๋ด๊ฒจ
์์ผ๋๊น์.


.png)
.png)
๋๊ธ ์ฐ๊ธฐ