๐งฑ JWT ์ธ์ฆ์ ์ํ “๊ฐ๋ ํผ๋ผ๋ฏธ๋”
์๋๋ ์ง์ง ๋ฐ๋ฅ๋ถํฐ ๊ผญ๋๊ธฐ๊น์ง ์์์ผ. (๊ฐ๋
์์กด๋ ํผ๋ผ๋ฏธ๋ !!)
์๋ก ๊ฐ์๋ก “๋ค๊ฐ ์ง๊ธ ํ๊ณ ์๋ ์์ญ”์ด์ผ.
1๏ธโฃ ๋คํธ์ํฌ์ ์ง์ง ๋ฐ๋ฅ
๐น HTTP๋ ๋ฌด์์ธ๊ฐ โ
https://proverbs33.tistory.com/89
[260115] HTTP ๋ (http ์ธ์ฆ, http ์๋ต ์ฝ๋ ๋ฑ)
HTTP | MDN๊ฐ์ด๋์ ํํ ๋ฆฌ์ผ์ ํตํด HTTP๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด์ธ์. HTTP ๊ฐ์ ํด๋ผ์ด์ธํธ-์๋ฒ ํ๋กํ ์ฝ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ค์ ๋๋ค. HTTP๋ก ํ ์ ์๋ ๊ฒ๊ณผ ์๋๋ ์ฉ๋๋ฅผ ์์๋ณด์ธ์. HTTP ์บ์ ์บ
proverbs33.tistory.com
- ์์ฒญ(Request) / ์๋ต(Response)
- ํค๋ / ๋ฐ๋
- ์ํ์ฝ๋: 200, 401, 403…
๐ ์ด๊ฑฐ ๋ชจ๋ฅด๋ฉด
JWT, ์ธํฐ์
ํฐ, ์ธ์ฆ ์ ๋ถ ์๋ฏธ๊ฐ ์๋ค.
2๏ธโฃ ํด๋ผ์ด์ธํธ–์๋ฒ ๊ตฌ์กฐ
๐น REST API ๊ฐ๋ โ
https://proverbs33.tistory.com/90
[260115] REST API ์ ๋ฌด์ํ์ฑ(state less)
REST API ๋ (Representational State Transfer API)์น์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ ์ธํฐํ์ด์ค REST ์ํคํ ์ณ ์คํ์ผ์ ์ค๊ณ ์์น์ ์ค์ํ์ฌ์ ๋ง๋ ์ธํฐํ์ด์ค HTTP URI ๋ฅผ ํตํด ์์(resourc
proverbs33.tistory.com
- ์๋ฒ๋ ์ํ๋ฅผ ๊ธฐ์ตํ์ง ์์(stateless)
- ๊ทธ๋์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋งค ์์ฒญ๋ง๋ค ๋ณด๋ด์ผ ํจ
๐ ์ฌ๊ธฐ์ JWT๊ฐ ๋ฑ์ฅํ๋ ์ด์ ๊ฐ ์๊น.
3๏ธโฃ ์ธ์ฆ์ ๊ธฐ๋ณธ ๊ฐ๋
๐น ์ธ์ฆ(Authentication) vs ์ธ๊ฐ(Authorization)
- ์ธ์ฆ: “๋ ๋๊ตฌ์ผ?”
- ์ธ๊ฐ: “๋ ์ด๊ฑฐ ํด๋ ๋ผ?”
JWT๋
๐ ์ธ์ฆ ์ ๋ณด๋ฅผ ํ ํฐ์ผ๋ก ๋ค๊ณ ๋ค๋๋ ๋ฐฉ์.
4๏ธโฃ ํ ํฐ ๊ฐ๋
๐น ์ธ์ vs ํ ํฐ
- ์ธ์ : ์๋ฒ๊ฐ ๊ธฐ์ต
- ํ ํฐ: ํด๋ผ์ด์ธํธ๊ฐ ๋ค๊ณ ๋ค๋
JWT๋
๐ ํ ํฐ ๋ฐฉ์ ์ธ์ฆ์ ๋ํ.
5๏ธโฃ JWT ์์ฒด ๊ตฌ์กฐ โ
๐น JWT = Header.Payload.Signature
- Base64 ์ธ์ฝ๋ฉ
- ์๋ช (Signature) = ์์กฐ ๋ฐฉ์ง
์ฌ๊ธฐ์
๐ “์, ๊ทธ๋์ Base64๋ฅผ ์์์ผ ํ๊ตฌ๋”๊ฐ ์ฐ๊ฒฐ๋จ.
6๏ธโฃ Access / Refresh ํ ํฐ ์ ๋ตโ
๐น ์ ๋ ๊ฐ๋?
- Access: ์งง๊ฒ, ์ํ ์ ๊ฒ
- Refresh: ๊ธธ๊ฒ, ์๋ฒ๊ฐ ํต์
๐ ์ฌ๊ธฐ์ ๋ค๊ฐ ์ง๊ธ ์ค๊ณํ๊ณ ์๋
“์๋ ๋ก๊ทธ์ธ / ์ฌ๋ฐ๊ธ / ์ฌ๋ก๊ทธ์ธ”์ด ๋ค ๋์จ๋ค.
7๏ธโฃ HTTP ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ (์๋๋ก์ด๋)
๐น OkHttp๋?
- ์ค์ HTTP ์์ฒญ์ ๋ณด๋ด๋ ์์ง
- ์ธํฐ์ ํฐ, ์ด์ผํฐ์ผ์ดํฐ๊ฐ ์ฌ๊ธฐ์ ์ํจ
๐น Retrofit์ด๋?
- OkHttp ์์ ์น์ ํธ์ ๋ ์ด์ด
- API๋ฅผ ํจ์์ฒ๋ผ ์ฐ๊ฒ ํด์ค
8๏ธโฃ ๋คํธ์ํฌ ํ (Hook) ๊ฐ๋
๐น Interceptor
- ์์ฒญ ๋ณด๋ด๊ธฐ ์ ๊ฐ๋ก์ฑ์ ์์
๐น Authenticator
- ์๋ต์ด 401์ผ ๋ ๋ณต๊ตฌ ์๋
๐ ์ด๊ฒ ์ง๊ธ ๋ค๊ฐ ๊ตฌํ ์ค์ธ ํต์ฌ.
9๏ธโฃ ๋ณด์ ์คํ ๋ฆฌ์ง
๐น SharedPreferences / EncryptedSharedPreferences
- ํ ํฐ์ ์ด๋์ ์ ์ฅํ๋๋
- ์ ํ๋ฌธ ์ ์ฅํ๋ฉด ์ํํ์ง
HTTP ๊ธฐ๋ณธ → REST ๊ตฌ์กฐ → ์ธ์ฆ/์ธ๊ฐ ๊ฐ๋ → ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ → JWT ๊ตฌ์กฐ → Access/Refresh ์ ๋ต → OkHttp ๋์ ์๋ฆฌ → Interceptor / Authenticator → ์๋๋ก์ด๋ ์ ์ฅ์
ํ์ฌ ์ํ
- HTTP ๊ธฐ๋ณธ โ
- REST ๊ฐ๋ โ
- JWT ๊ตฌ์กฐ โ
- Access/Refresh ์ ๋ต โ
- Interceptor/Authenticator ๊ฐ๋ โ
์ง๊ธ ํท๊ฐ๋ฆฌ๋ ๊ฑด
๐ OkHttp / Retrofit์ “์ญํ ๋ถ๋ฆฌ ์
๐ ๊ฐ์ฒด ์๋ช
์ฃผ๊ธฐ(๋๊ฐ ์ธ์ ๋ง๋ค์ด์ง๊ณ ์ฐ์ด๋๋) ์ด ๋ถ๋ถ๋ฟ์ด์ผ.