๐ฅ Spring Security_ํ ํฐ-์ธ์ -์ฟ ํค-JWT ์ ๋ํ์ฌ
์ธ์ฆ(Authentication):
๊ถํ ๋ถ์ฌ(Authorization):
๋ณด์ ํํฐ:
ํ์ฅ์ฑ:
ํญ๋ชฉ | AOP ํํฐ | Spring Security ํํฐ |
---|---|---|
์ ์ฉ ๋ฒ์ | ํน์ ํด๋์ค, ๋ฉ์๋ (๋น์ฆ๋์ค ๋ก์ง). | HTTP ์์ฒญ ๋ฐ ์๋ต (ํด๋ผ์ด์ธํธ-์๋ฒ ํต์ ). |
์ ์ฉ ๋์ | Spring Bean ๋ด๋ถ์ ๋ก์ง. | HTTP ์์ฒญ์ URL, ํค๋, ํ๋ผ๋ฏธํฐ ๋ฑ. |
๋์ ์์ | ๋ฉ์๋ ์คํ ์ ํ, ๋๋ ํน์ ์กฐ๊ฑด์์ ๋์. | HTTP ์์ฒญ/์๋ต์ด ์ฒ๋ฆฌ๋๋ ์ค๊ฐ ๋จ๊ณ. |
์ฃผ์ ๋ชฉ์ | ๋ก๊น , ํธ๋์ญ์ ๊ด๋ฆฌ, ์์ธ ์ฒ๋ฆฌ ๋ฑ ๊ณตํต ๊ด์ฌ์ฌ ์ฒ๋ฆฌ. | ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ์ฒ๋ฆฌ. |
๊ตฌ์ฑ ์์ | Advice, Pointcut, Join Point. | Filter Chain, Authentication, Authorization. |
ํ๋ก์ ์ฌ์ฉ ์ฌ๋ถ | ๋ฐํ์ ํ๋ก์๋ฅผ ํตํด ๋ฉ์๋ ํธ์ถ ์์ ์ ๊ฐ์ . | HTTP ์์ฒญ์ ํํฐ ์ฒด์ธ์ ํตํด ์์ฒญ ์ฒ๋ฆฌ์ ๊ฐ์ . |
์์ ๋จ์ | ๋น์ฆ๋์ค ๋ก์ง ๋ ๋ฒจ. | HTTP ์์ฒญ ๋ ๋ฒจ. |
์์ | ๋ฉ์๋ ์คํ ์ ํ ๋ก๊น , ํธ๋์ญ์ ์์/์ข ๋ฃ. | JWT ๊ฒ์ฆ, ์ฌ์ฉ์ ์ธ์ ์ธ์ฆ, OAuth2 ์ธ์ฆ |
๋ฌด์ํ์ฑ:
ํ ํฐ ์ข ๋ฅ:
key=value
ํํ๋ก ์ ์ฅ.ํญ๋ชฉ | ์ธ์ (Session) | ์ฟ ํค(Cookie) |
---|---|---|
์ ์ฅ ์์น | ์๋ฒ ์ธก ์ ์ฅ์: ์ธ์ ๋ฐ์ดํฐ๋ ์๋ฒ์ ์ ์ฅ๋ฉ๋๋ค. | ํด๋ผ์ด์ธํธ ์ธก ์ ์ฅ์: ์ฟ ํค๋ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ์ ์ฅ๋ฉ๋๋ค. |
๋ฐ์ดํฐ ํฌ๊ธฐ | ์๋ฒ ๋ฉ๋ชจ๋ฆฌ ๋๋ ์ธ๋ถ ์ ์ฅ์(Redis, DB ๋ฑ) ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ํ ์์. | ์ผ๋ฐ์ ์ผ๋ก 4KB ํฌ๊ธฐ ์ ํ์ด ์์. |
๋ณด์์ฑ | ์๋์ ์ผ๋ก ์์ : ํด๋ผ์ด์ธํธ๋ ์ธ์ ID๋ง ์๊ณ ๋ฐ์ดํฐ๋ ์๋ฒ์ ์ ์ฅ. | ๋น๊ต์ ๋ ์์ : ์ฟ ํค๊ฐ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๋ฏ๋ก ํ์ทจ ๊ฐ๋ฅ. |
JWT๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ:
{"alg": "HS256", "typ": "JWT"}
{"sub": "user123", "role": "admin"}
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Authorization
ํค๋์ ํฌํจ.ํญ๋ชฉ | Session | JWT |
---|---|---|
์ํ ์ ์ง | ์๋ฒ์์ ์ํ๋ฅผ ์ ์ง (์ธ์ ์ ์ฅ์ ํ์). | ์๋ฒ๋ ์ํ๋ฅผ ์ ์งํ์ง ์์. |
๋ณด์ | ์ธ์ ID ํ์ทจ ์ ์ํ. | ์๋ช ์ผ๋ก ๋ณ์กฐ ๋ฐฉ์ง ๊ฐ๋ฅ, Payload๋ ์ํธํ๋์ง ์์. |
ํ์ฅ์ฑ | ์๋ฒ๊ฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก ํ์ฅ์ฑ์ ํ๊ณ. | ์๋ฒ ์ํ ์ ์ง ๋ถํ์ โ ๋์ ํ์ฅ์ฑ. |
์ฌ์ฉ ์ | ์ ํต์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ . | SPA, ๋ชจ๋ฐ์ผ ์ฑ ๋ฑ ๋ฌด์ํ ์ธ์ฆ ํ์ ์. |
ํน์ง | JWT ๊ธฐ๋ฐ ๊ถํ ๊ด๋ฆฌ | DB ๊ธฐ๋ฐ ๊ถํ ๊ด๋ฆฌ |
---|---|---|
์ํ ๊ด๋ฆฌ | ๋ฌด์ํ (Stateless). | ์ํ ์ ์ง (Stateful). |
๊ถํ ์ ๋ณด ์ ์ฅ ์์น | ํด๋ผ์ด์ธํธ(JWT Payload์ ํฌํจ). | ์๋ฒ(DB์ ์ ์ฅ). |
์ค์๊ฐ ๋ฐ์ | ์ด๋ ค์: ํ ํฐ์ ํฌํจ๋ ๊ถํ ์ ๋ณด๊ฐ ์ ๋ฐ์ดํธ๋์ง ์์. | ๊ฐ๋ฅ: DB์์ ์ต์ ๊ถํ ์ ๋ณด๋ฅผ ์กฐํ. |
์์ฒญ ์ฒ๋ฆฌ ์๋ | ๋น ๋ฆ: ์๋ฒ๋ ํ ํฐ ๊ฒ์ฆ๋ง ์ํ. | ์๋์ ์ผ๋ก ๋๋ฆผ: DB ์กฐํ๊ฐ ํ์. |
ํ์ฅ์ฑ | ๋์: ์ํ๋ฅผ ์ ์งํ์ง ์์ผ๋ฏ๋ก ์๋ฒ ํ์ฅ์ด ์ฉ์ด. | ๋ฎ์: ์ํ ๊ด๋ฆฌ ๋ฐ DB ์์ฒญ์ด ์ฆ๊ฐํ๋ฉด ๋ถํ๊ฐ ๋ฐ์. |
๋ณด์ | Payload๊ฐ ์ํธํ๋์ง ์์ ๊ถํ ์ ๋ณด๊ฐ ๋ ธ์ถ๋ ๊ฐ๋ฅ์ฑ ์์. | ์๋ฒ์ DB์์๋ง ๊ด๋ฆฌ๋๋ฏ๋ก ๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๋ณดํธ์ ์ ๋ฆฌ. |
๊ตฌํ ๋ณต์ก๋ | ์๋์ ์ผ๋ก ๊ฐ๋จ: ํ ํฐ ์์ฑ ๋ฐ ๊ฒ์ฆ๋ง ๊ตฌํ. | ๋ณต์ก: DB์ ์๋ฒ ์ํ ๋๊ธฐํ๊ฐ ํ์. |
Spring Security:
Token:
Session:
Cookie:
JWT: