์ฟ ํค-์ธ์ , JWT ํ ํฐ ์ธ์ฆ
์ฟ ํค-์ธ์ ์ธ์ฆ๊ณผ JWT ํ ํฐ ์ธ์ฆ์ ์์๋ณด์.
์ฟ ํค-์ธ์ ์ธ์ฆ
HTTP ํ๋กํ ์ฝ์ Stateless
HTTP ํ๋กํ ์ฝ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋ชจ๋ ์ฐ๊ฒฐ์ ์ ์ฅํด๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ, ์๋ฒ์ ๋ถ์ฐ ๋ฑ ๋ฌธ์ ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก Stateless(๋น์ฐ๊ฒฐ์ฑ, ๋ฌด์ํ)
์ํ์ด๋ค.
์ด Stateless ์ํ์์ ์ธ์ฆ๋ ํด๋ผ์ด์ธํธ์์ ํ์ธํ๊ธฐ ์ํด์๋ ๊ทธ ์ ๋ณด๋ฅผ ์ฟ ํค์ ์ธ์
์ ์ ์ฅํด์ผ ๋๋ค.
์ฟ ํค-์ธ์ ์ธ์ฆ์ ๊ณผ์
- ํด๋ผ์ด์ธํธ๊ฐ ID์ Password๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋ด์ค๋ค.
- ํด๋ผ์ด์ธํธ ---(ID, PW)--> ์๋ฒ
- ์๋ฒ๋ ํด๋น ์ ๋ณด๋ฅผ DB์์ ์กฐํํ๊ณ ์ ํํ ์ฌ์ฉ์์ ์ ๋ณด๋ผ๋ฉด ์๋ฒ์
Session
์ ์ธ์ฆํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๊ณ sessionID๋ฅผ ์ฟ ํค๋ก ๋ฐ๊ธํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ค.
- ํด๋ผ์ด์ธํธ <--(sessinID)-- ์๋ฒ
- ์ฟ ํค๋ ๋ฐ๊ธ๋ฐ์ sessionID๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋ด ๋ก๊ทธ์ธ ํ ์ฌ์ฉ์์์ ์ธ์ฆํ๋ค.
- ํด๋ผ์ด์ธํธ --(sessinID)--> ์๋ฒ (์ธ์ฆ ์๋ฃ)
์ฟ ํค-์ธ์ ์ธ์ฆ์ ๋จ์
- ๋ณ๋์ ์ ์ฅ ๊ณต๊ฐ์ด ํ์
- ํ์ทจ ๋นํ๋ฉด ์ ์์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
๋ ๋จ์ ์ ๋ค์ง๊ธฐ ์ํด์ JWT ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ ์ฌ์ฉํ ์ ์๋ค.
์บ์ vs ์ฟ ํค
- ๊ณตํต์ ์ ๋ ๋ค ํด๋ผ์ด์ธํธ์ ๋ํ ์๋น์ค
- ์บ์ : ์์ฃผ ์ฌ์ฉํ๋ ์ ๋ณด (์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋จ)
- ์ฟ ํค : ๋ง๋ฃ ๊ธฐ๊ฐ์ด ์ ํด์ ธ์๊ณ ๋ง๋ฃ ๊ธฐ๊ฐ ์ดํ ์ญ์ ๋๋ค.
JWT ํ ํฐ
์ฟ ํค-์ธ์
์ธ์ฆ์ ๋จ์ ์ ๋ค์ง๋ ๋ฐฉ๋ฒ์ด ํ์
-> JWT ํ ํฐ(Json Web Token
)์ ๋ฐ๊ธํ๋ค.
JWT ํ ํฐ์ ๊ตฌ์ฑ ์์
- header : ํ ํฐ ํ์ , ์ธ์ฝ๋ฉ ๋ฐฉ์
- payLoad : ํ์์ ๋ณด๋ ์ ๋ฌํ๊ณ ์ถ์ ์ ๋ณด (๋์ฝ๋ฉ ํ ์ ์์ผ๋ฏ๋ก ๋ฏผ๊ฐํ ์ ๋ณด๋ ๋ฃ์ง ์๋๋ค.)
iat(๋ฐ๊ธ ์๊ฐ)
,exp(๋ง๋ฃ์๊ฐ)
-> ๊ณ์ ๊ด๋ จ ์ ๋ณด๋ ๋ง๋ฃ ๊ธฐ๊ฐ์ด ์๋ค.
- signature(์๋ช ) : ํน์ ์๋ฒ์์ ๋ฐ๊ธํ๋ค๋ ์๋ช (์๋ฒ๊ฐ ๋ฐ๊ธํ ์ํธํ์ ๋ค์ด๊ฐ๋ ํค๊ฐ ์์)
signature์ ์ฌ์ฉ๋๋ ๋น๋ฐํค๊ฐ ํ์ทจ๋นํ๋ฉด JWT ํ ํฐ ์ธ์ฆ๋ ์ํํ๊ธฐ ๋๋ฌธ์ https ํ๋กํ ์ฝ๋ก ๋ณด์์ ๊ฐํํด ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
JWT ์์
(์ถ์ฒ : https://jwt.io)
{HEADER๋ฅผ base64UrlEncode}.{PAYLOAD๋ฅผ base64UrlEncode}.
{ {HEADER๋ฅผ base64UrlEncode} + "." + {PAYLOAD๋ฅผ base64UrlEncode} +์ํธ ํค}๋ฅผ HMACSHA256 ๋ฐฉ์์ผ๋ก ์ํธํํ ๊ฐ}
JWT ํ ํฐ ์ธ์ฆ์ ๊ณผ์
- ํด๋ผ์ด์ธํธ๊ฐ ID์ Password๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋ด์ค๋ค.
- ํด๋ผ์ด์ธํธ ---(ID, PW)--> ์๋ฒ
- ์๋ฒ๊ฐ JWT ํ ํฐ์ ๋ฐ๊ธ( ํด๋ผ์ด์ธํธ๋ง ๋ฐ๋ก ์ ์ฅ, ์๋ฒ๋ ๋ฐ๋ก ์ ์ฅ X)
- ํด๋ผ์ด์ธํธ <--(JWT ํ ํฐ)-- ์๋ฒ
- ์ดํ ๋ก๊ทธ์ธ์ ํด๋ผ์ด์ธํธ๊ฐ ํค๋์ JWT ํ ํฐ์ ๋ณด๋
- ํด๋ผ์ด์ธํธ ---(JWT ํ ํฐ)--> ์๋ฒ
- ์๋ฒ์์ ๊ทธ JWT ํ ํฐ์ ํ์ธํด์ ์ธ์ฆ์ ํ์ธํ๋ค.
- signature๋ฅผ ํ์ธํ์ฌ ๋ณธ ์๋ฒ์์ ๋ฐ๊ธํด ์ค JWT ์ธ์ง ํ์ธ ํ header์ payLoad์ ๋์ฝ๋ฉํจ.
- header์ payLoad๋ฅผ ์ธ์ฝ๋ฉํ ๊ฐ๊ณผ ์๋ฒ์ ๋น๋ฐํค๋ฅผ ํค๋์ ์๋ ๋ฐฉ์์ผ๋ก ์ํธํํ ํ signature์ ์ผ์นํ๋์ง ํ์ธํ๋ค.
- signature๋ฅผ ํ์ธํ์ฌ ๋ณธ ์๋ฒ์์ ๋ฐ๊ธํด ์ค JWT ์ธ์ง ํ์ธ ํ header์ payLoad์ ๋์ฝ๋ฉํจ.
์ธ์ฝ๋ฉ : ๋ณตํธํ ํ ์ ์๋ ๋ฐฉ์, ์ํธํ : ๋ณตํธํ ํ ์ ์๋ ๋ฐฉ์ (์ธ์ฝ๋ฉ != ์ํธํ)
'๋ณด์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Bcrypt ์ธ์ฝ๋ฉ (0) | 2022.03.15 |
---|---|
์ํธํ ํด์ ํจ์ (0) | 2022.03.13 |
A5/1 แแ ฎแแ งแซ(C++) (0) | 2022.03.13 |