ํผ๋๋ฐฑ ๊ฐ์
์ธ์ฆ ํค๋
๋ก๊ทธ์ธ์ ํตํด ํ ํฐ์ ๋ฐ๊ธ ๋ฐ์ ํ ํค๋์ Authorization์ ํ ํฐ์ ์ค์ด๋ณด๋ธ๋ค.
์ ๊ตณ์ด ์ด ํค๋์ ํ ํฐ์ ๋ฃ์ด ๋ณด๋ผ๊น?
HTTP ์ธ์ฆ
HTTP ํ๋กํ ์ฝ์ ์ ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ โ/โ ์์ฒญ์ ๋ณด๋ธ๋ค.
- ์๋ฒ๋ ์ ๊ทผ์ ํ ์ ์๋์ง ํ์ธํ๊ณ , ์์ผ๋ฉด 401์ ๋ณด๋ธ๋ค.
- ์ฌ๊ธฐ์๋ basic์ด๋ผ๋ ๋ฐฉ์์ผ๋ก ํ ํฐ์ ๊ฒ์ฆํ๊ณ ์๋ค. ์๋ชป๋์์ผ๋ ๋ค์ ์์ฒญํด!
HTTP ์ธ์ฆ ์คํด
Basic
- base64๋ฅผ ์ด์ฉํด ์ธ์ฝ๋ฉ๋ ์ฌ์ฉ์์ id/pw ์์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ ๋ฌ
- ์์ ์ ์ํด HTTPS(TLS) ์ฐ๊ฒฐ ์์์ ๋ฐ์๋์ด์ผ ํจ
Bearer
- bearer token์ด๋ผ๋ ๋ณด์ ํ ํฐ์ ํ์ฉํ๋ ์ธ์ฆ ์คํด
- Outh2.0์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ง๋ค์ด์ง
JWT
- Json Web Token
- ์น ํ์ค (RFC 7519)
- ์์ฒด์ ์ผ๋ก ๊ฒ์ฆ๋์์์ ์ฆ๋ช ํด์ฃผ๋ signature๋ฅผ ํฌํจ
- ์์ฑ์ ๊ฒ์ฆ์ด๋ ๊ถํ ์ธ๊ฐ ์ ํ์ํ ๊ฐ์ ๋ฃ์ด ์ํ๋ฅผ ๋ฐ๋ก ๊ด๋ฆฌํ์ง ์์๋ ๋จ
ํ ํฐ์ ๊ตฌ์ฑ
1. Header
- ํ ํฐ์ ๋ํ ํด์ ๋ฐฉ๋ฒ
- alg : ์๊ทธ๋์ฒ์์ ์ฌ์ฉํ ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ๋ฒ
- typ : ํ ํฐ์ ํ์
2. Payload
- ํ ํฐ์ ๋ด์ฉ, ์ ๋ฌํ ๋ด์ฉ
- payload์ ๊ฐ๊ฐ์ ๊ฐ์ ํด๋ ์์ด๋ผ๊ณ ํจ
- sub : ํด๋ ์์ ์ ๋ชฉ
- name :
- iat : ์์ฑ ์๊ฐ
- ์ด ์ญ์๋ base64๋ก ์ธ์ฝ๋ฉ
3. Signature
- ํค๋์ ํ์ด๋ก๋๊ฐ ๋ณ์กฐ๋์ง ์์์์ ๊ฒ์ฆ
- base64๋ก ์ธ์ฝ๋ฉ์ ํ๊ณ , ์๊ณ ๋ฆฌ์ฆ๊ณผ ํค๊ฐ์ผ๋ก ํด๋
basic๊ณผ bearer ๋ ๋ค base64๋ก ์ธ์ฝ๋ฉ ํ๋ฉด ์ด๋ป๊ฒ ๊ตฌ๋ณํ๋์?
์ด๋ ์๋ฒ์์ ํ์ดํฌ์ฒ๋ผ ์ธ ์ ์์ง!
payload๊ฐ ๊ฐ์ผ๋ฉด ํ ํฐ ๊ฐ๋ ๊ฐ์์ง๋์?
๊ทผ๋ฐ ์๋ง iat๊ฐ ๋ฌ๋ผ์ ๋ค๋ฅผ ์ ๋ฐ์ ์์ ๋ฏ
Dispatcher Servlet
์์ฒญ์ ๋ฐ๋ผ ์ํํ ๋ก์ง ๋ถ๊ธฐ
DispatcherServlet ์์น
- Handler ์์ Interceptor๊ฐ ์์
MVC Config ๊ฐ์ฒด๋ ๋ชจ๋ ๋น์ด์๋ค.