1. JWT ๊ฐ์
JSON ์น ํ ํฐ์ธ JWT๋ ์ํ ๋น์ ์ฅ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ด๋ค.
์ํ ๋น์ ์ฅ? → ์๋ฒ๊ฐ ํ ํฐ ๋ฐํ ํ ์ฌ์ฉ์ ์ธ์ ์ ์ถ์ ํ์ง ์์์ ์๋ฏธ!
์๋ฒ๊ฐ ํ ํฐ์ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์ ์ ์กํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ์ ์ฅํ๊ณ ํ์ ์์ฒญ์ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ผ์ ๋ด๋นํ๋ค.
1.1. JWT ๊ตฌ์ฑ ์์
- ํค๋: ์๋ช ์๊ณ ๋ฆฌ์ฆ, ํ ํฐ ์ ํ์ ํฌํจ
- ํ์ด๋ก๋: ์ฌ์ฉ์ ์ ๋ณด, ์ญํ , ๋ง๋ฃ ๊ธฐ๊ฐ๊ณผ ๊ฐ์ ํด๋ ์์ ํฌํจ
- ์๋ช : ํ ํฐ์ด ์ ํจํ๊ณ ๋ณ์กฐ๋์ง ์์๋์ง ํ์ธ
1.2. ํด๋ผ์ด์ธํธ์ JWT?
- ์๋ฒ๋ ์ฌ์ฉ์๋ฅผ ์ธ์ฆ(๋ก๊ทธ์ธ) ํ ํ JWT๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ค์ ๋ณด๋ธ๋ค
- ํด๋ผ์ด์ธํธ๋ ๋ฐ์ JWT๋ฅผ ๋ค์ ์์น์ ์ ์ฅํ๋ค
- ๋ก์ปฌ ์ ์ฅ์: ๋ก์ปฌ ์คํ ๋ฆฌ์ง
- ์ธ์ ์ ์ฅ์
- ์ฟ ํค: HTTP ์ ์ฉ ๋ฐ ๋ณด์
- ํด๋ผ์ด์ธํธ๊ฐ ๋์ค์ ์๋ฒ์ ์์ฒญ์ ํ ๋ ์ฆ, ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์ค ์์ฒญํ ๋ ์์ฒญ ํค๋์ Authorization: Bearer๋ก ์ด JWT๋ฅผ ํฌํจํ๋ค
1.3. ์๋ฒ์ JWT?
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ผ๋ก JWT๋ฅผ ๋ณด๋ด๋ฉด ์๋ฒ๋ ํฌ๊ฒ 3๊ฐ์ง ๊ธฐ๋ฅ์ ์ํํ๋ค.
- JWT ๋์ฝ๋ฉ
- ํ ํฐ์ ์ถ์ถํ๊ณ ๋น๋ฐ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์๋ช ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ค
- ์ฌ์ฉ์ ID, ๋ง๋ฃ ์๊ฐ ๋ฑ ํด๋ ์์ ํ์ธํ๋ค
- ํ ํฐ ๋ง๋ฃ ํ์ธ
- ์ฌ์ฉ์ ํ์ธ
- ์ ํจํ ํ ํฐ์ผ ๊ฒฝ์ฐ ์๋ฒ๋ ํด๋ ์์์ ์ฌ์ฉ์๋ฅผ ์๋ณํ๊ณ ๋ณดํธ๋ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ค
2. ๋ก๊ทธ์์?
2.1. ์ํ ๋น์ ์ฅ ํ ํฐ์ ํ๊ณ์
JWT๋ ์ํ ๋น์ ์ฅ ํ ํฐ์ด๋ค. ํ ํฐ ๋ฐ๊ธ ํ์ ์๋ฒ๊ฐ ํ ํฐ์ ์ถ์ ํ์ง ์๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก JWT๋ฅผ ํตํ ๋ก๊ทธ์์์๋ ์๋์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ์๋ฒ๋ ์ด๋ฏธ ๋ฐ๊ธ๋ ํ ํฐ์ ๋ฌดํจํํ ์ ์๋ค.
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์์ํ์ด๋ ํ ํฐ์ ์ฌ์ ํ ์ ํจํ๊ณ , ๋ค๋ฅธ ์ฅ์น์ ๊ณต๊ฒฉ์๋ ์ฌ์ฉ์๊ฐ ์์ ํ๊ณ ์๋ ๊ฒฝ์ฐ, ํด๋น ํ ํฐ์ ๋ง๋ฃ ๊ธฐ๊ฐ๊น์ง ๊ณ์ ์ ํจํ๋ค.
๋ฐ๋ผ์, JWT๋ฅผ ํตํ ๋ก๊ทธ์์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋, ๋ฌดํจํ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ก ํด์ฃผ์ด์ผ ํ๋ค.
2.2. ๋ธ๋๋ฆฌ์คํธ
๋ธ๋๋ฆฌ์คํธ ์ฒ๋ฆฌ๋ฅผ ํตํด ์๋ฒ์์์ ํ ํฐ ๋ฌดํจํ๋ฅผ ๊ตฌํํ ์ ์๋ค.
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์์ํ๋ฉด ํด๋ผ์ด์ธํธ๋ ๋ก์ปฌ ์ ์ฅ์(or ์ฟ ํค)์์ ํ ํฐ์ ์ ๊ฑฐํ๋ค.
- ๋ง์ผ ํ ํฐ์ด ์์๋ ๊ฒฝ์ฐ(๋ค๋ฅธ ์ฅ์น์ ์กด์ฌํจ) ๊ณ์ ์ฌ์ฉ ๊ฐ๋ฅํจ
- ์ด์ ๋์ํ๊ธฐ ์ํด ์๋ฒ๋ ๋ ์ด์ ์ ํจํ์ง ์์ ํ ํฐ์ ๋ธ๋๋ฆฌ์คํธ๋ฅผ ์ ์ง ๊ด๋ฆฌ ํ๋ค.
3. ์ ์ฒด์ ์ธ ํ๋ฆ
1. ๋ก๊ทธ์ธ
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์๊ฒฉ ์ฆ๋ช ์ ์ ์ก
- ์๋ฒ๊ฐ JWT๋ฅผ ์์ฑ
- ํด๋ผ์ด์ธํธ๋ ์ด JWT๋ฅผ ๋ก์ปฌ(๋ก์ปฌ ์คํ ๋ฆฌ์ง, ์ฟ ํค)์ ์ ์ฅ
2. ์์ฒญ
- ํด๋ผ์ด์ธํธ๋ ‘Authorization’ ํค๋์ JWT๋ฅผ ์ ์ก
- ์๋ฒ๋ ํ ํฐ์ ํ์ธํ๊ณ ์์ฒญ์ ์ฒ๋ฆฌ
- ๋ธ๋๋ฆฌ์คํธ์ ๋ฑ๋ก๋ ํ ํฐ์ผ ๊ฒฝ์ฐ ์์ฒญ์ ๊ฑฐ๋ถ
3. ๋ก๊ทธ์์
- ํด๋ผ์ด์ธํธ๋ ๋ก์ปฌ์ JWT๋ฅผ ์ ๊ฑฐ
- ์๋ฒ๋ JWT๋ฅผ ๋ธ๋๋ฆฌ์คํธ์ ์ถ๊ฐ
- ๋ธ๋๋ฆฌ์คํธ์ ๋ฑ๋ก๋ ํ ํฐ์ด ํฅํ ์์ฒญ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๊ฑฐ๋ถํ ์ ์์
ํด๋ผ์ด์ธํธ๋ JWT๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ๊ณ ๋ก๊ทธ์์ ์ ์ ๊ฑฐํ๋ค
์๋ฒ๋ JWT ์๋ช /๋ง๋ฃ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค
๋ธ๋๋ฆฌ์คํธ ์ฒ๋ฆฌ๋ฅผ ํตํด ๋ก๊ทธ์์ ํ ์์๋ ํ ํฐ์ด ์ฌ์ฉ๋๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ์์ ํ ๋ก๊ทธ์์์ ๋ณด์ฅํ ์ ์๋ค.
'๐ฟSpring, SpringBoot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JPA Repository? DAO, VO? (1) | 2025.02.04 |
---|---|
spring- ๋ก๊ทธ ์ถ๋ ฅ ์๋๋ ๋ฌธ์ ํด๊ฒฐ (1) | 2024.01.07 |