
์ ๋ก๋์ค..์ธ์ฆ๊ณผ ์ธ๊ฐ(๊ถํ ๋ถ์ฌ)๋ ๋ฌด์์ด ๋ค๋ฅผ๊น?์ธ์ฆ ๋จ๊ณ์์๋ ์ฌ์ฉ์์ ์ ์์ ํ์ธํ๋ค.์ฆ, ์ฌ์ฉ์๊ฐ ํด๋น ์๋ฒ์ ๋ฑ๋ก๋ ํ์์ธ์ง ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๋ค.์ธ๊ฐ ๋ฐ ๊ถํ ๋ถ์ฌ ๋จ๊ณ์์๋ ์ ์์ด ํ์ธ๋ ์ฌ์ฉ์์๊ฒ ๋ฆฌ์์ค์ ์ ๊ทผํ ๊ถํ์ ๋ถ์ฌํ๋ค.์ธ์ฆ๊ณผ ์ธ๊ฐ๋ ๋น์ทํ๊ฒ ์๊ฐํ

HTTP๋ ๋ฌด์ํ ํ๋กํ ์ฝ์ ์ผ์ข ์ด๋ค.โ๋ฌด์ํ ํ๋กํ ์ฝ : ๊ฐ ์์ฒญ ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ, ์ด๋์๋ ์ ์ฅ๋์ง ์๊ณ ์๋ก ๋ค๋ฅธ ์์ฒญ ๊ฐ์ ๊ด๊ณ๊ฐ ์๋ ํ๋กํ ์ฝ.๋ฐ๋ผ์, HTTP ์์ฒด๋ก๋ ์์ฒญ ์๋ง๋ค ์ธ์ฆ์ ๋ฐ๋ณตํด์ผํ๋ ๋ฌธ์ ์ ๋ฐ์.์ด๋ฌํ HTTP ํ๋กํ ์ฝ์ ํ๊ณ๋ฅผ ๊ทน

์น์์ ์ฌ์ฉ๋๋ ์น ํ ํฐ์ ํ์ค๊ท๊ฒฉ.(RFC 7519)์ฌ์ฉ์์ ์ธ์ฆ, ์ธ๊ฐ ์ ๋ณด๋ฅผ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์์ ํ๊ฒ ์ฃผ๊ณ ๋ฐ๊ณ ์ ์ฌ์ฉ๋๋ค.์ด๋ฅผ ์ํด JSON ํํ์ ์ ๋ณด๋ฅผ ์ํธํ ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์๋ช ์ผ๋ก ๋ง๋ค์ด ํ ํฐ์ ๋ด์ ํต์ ํ๊ฒ ๋๋ค.ํค๋์๋ ํ ํฐ์ ์ ํ ๊ณผ ์๋ช

JWT ๋ฐฉ์์ ์ธ์ฆ์ ๊ฐํํ ๋ฐฉ์.Access ํ ํฐ์ ๋ฌธ์ ์ ์ ์ 3์์๊ฒ ํ์ทจ ๋นํ๊ฒ ๋ ๊ฒฝ์ฐ ์๋ฒ ์ธก์์ ์ด๋ ํ ์ ์ด๋ ๋ถ๊ฐํ์ฌ ๋ณด์์ ์ทจ์ฝํ๋ค๋ ์ ์ด๋ค.Access ํ ํฐ์ ๋ฐ๊ธ ์ดํ ์๋ฒ์ ์ ์ฅ๋์ง ์๊ณ ํ ํฐ ์์ฒด์ ์ ์ฅ๋ ์ ๋ณด๋ก ๊ฒ์ฆํ์ฌ ์ฌ์ฉ์ ๊ถํ์ ์ธ์ฆํ๊ธฐ

์ฐ์ CSRF ๋ Cross-Site Request Forgery๋ก ์ฌ์ดํธ ๊ฐ์ ์์กฐ ์์ฒญ์ ์๋ฏธํ๋ค. ์ด๋ฅผ ํด์ํด ๋ณด๋ฉด, ์ฌ์ฉ์์ ์๋์๋ ๊ด๊ณ์์ด ๊ณต๊ฒฉ์์ ์์์ ํ๋์ ์ํด ์ฌ์ดํธ์ ์์ , ์ญ์ ๋ฑ์ ์์ฒญ์ด ์ ์ก๋์ด ์๋ฒ๋ฅผ ๊ณต๊ฒฉํ๋ ๊ฒ์ ๋งํ๋ค.์ฆ, CSRF pr

๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, โ์๋๋ค.Spring Security์์ ์ ๊ณตํ๋ hasRole() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด, ROLE\_์ด ์ ๋์ด๋ก ์๋์ผ๋ก ๋ถ์ฌ์ค๋ค.๋ฐ๋ผ์, ์ฌ์ฉ์ ๊ถํ์ Role ์ด๋ ํด๋์ค๋ก ๊ด๋ฆฌํ ๊ฒฝ์ฐ, ADMIN, USER ์ ๊ฐ์ ๋ช ์นญ์ผ๋ก ์ฌ์ฉํด๋ ๊ฐ๋ฅํ๋ค.๋จ

ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ JWT๋ฅผ ํ์ฉํ ์ธ์ฆ/์ธ๊ฐ ๋ก์ง ๊ตฌํ์ ์ด๋ฒ์ด ์ฒ์์ด๋ค.๏ธโ๐ JWT๋ฅผ ๋์ํ๊ฒ๋ ์ด์ :์ด์ ๋ชจ๋๋ฆฌ์ ๋ฐฉ์์ ํ๋ก์ ํธ์๋ ๋ค๋ฅด๊ฒ ์ด๋ฒ ํ๋ก์ ํธ๋ MSA ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฐฉํ ํํ์ ํ๋ก์ ํธ์ด๋ค. ์ฆ, ํ๋ก์ ํธ์ ๊ด์ฌ์ฌ๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ๋๋์ด ๊ฐ ์๋น์ค๋ง๋ค ์

JWT ๊ด๋ จ ๊ธฐ๋ฅ ๊ตฌํ ์ค ๋ค์๊ณผ ๊ฐ์ด signWith() ๋ฉ์๋์ deprecated ๋์๋ค๋ ๋ด์ฉ์ ๊ฒฝ๊ณ ๋ฌธ์ด ๋์์ต๋๋ค.ํด๋น ๋ด์ฉ์ ์์ธํ๊ฒ ํ์ธํด๋ณด๋ ๋ค์๊ณผ ๊ฐ์ด jjwt 0.10.0 ๋ฒ์ ์ดํ๋ถํฐ deprecated ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.https

Spring Security