๋ฉ์ ์ ์ ์ผํ ๊ธฐ๋ฅ์ด ๊ฒฐํฉ๋ ์๋น์ค์ ๋๋ค. ํ๋์ด์ง์ฐ ์๋ฐ ํ์คํ ๊ฐ๋ฐ ๊ณผ์ 6์ธ ํ ํ๋ก์ ํธ๋ก ๋ฉ์ ์ /์ผํ/์ธ์ฆ ๋๋ฉ์ธ์ 2๋ช ์ฉ ๋๋ ์งํํ์ต๋๋ค.
์ธ์ฆ ๋๋ฉ์ธ ๋ฐฑ์๋ (2์ธ ์ค 1)
- Java 21, Spring Boot 3.5, Spring Security
- JPA(Hibernate)
- Oracle DB
- JWT
- AWS S3(ํ๋กํ ์ด๋ฏธ์ง ์ ๋ก๋)
- WebSocket / STOMP(์ค์๊ฐ ์ฑํ )
๋ฉ์ ์ ์ ์ผํ ๊ธฐ๋ฅ์ด ๊ณต์กดํ๋ ์๋น์ค ํน์ฑ์, ์๋ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํ๋ ์ธ์
๋ฐฉ์๋ณด๋ค JWT๊ฐ ์ ํฉํ๋ค๊ณ ํ๋จํ์ต๋๋ค. ๋ค๋ง JWT๋ ํ ํฐ ์ ํจ์ฑ๋ง์ผ๋ก ์ธ์ฆ์ ์ฒ๋ฆฌํด ํํดํ ์ฌ์ฉ์๋ ํ ํฐ์ด ๋ง๋ฃ๋๊ธฐ ์ ๊น์ง ์ ๊ทผ ๊ฐ๋ฅํ ๋ณด์ ๊ณต๋ฐฑ์ด ์์์ต๋๋ค. AuthenticationFilter์์ JWT ์ ํจ์ฑ ๊ฒ์ฆ ํ DB์์ ์ฌ์ฉ์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์ถ๊ฐ๋ก ํ์ธํ๋ ์ด์ค ๊ฒ์ฆ ๊ตฌ์กฐ๋ฅผ ์ ์ฉํด, ํํด ์ฌ์ฉ์๋ฅผ ์ฆ์ ์ฐจ๋จํ์ต๋๋ค.
๊ณ ์ ๋ Refresh Token์ ํ์ทจ ์ ๋ง๋ฃ ์ ๊น์ง ๊ณ์ ์ ์ฉ๋ ์ ์์ต๋๋ค. ์ฌ๋ฐ๊ธ ์์ฒญ๋ง๋ค ๊ธฐ์กด Refresh Token์ ์ฆ์ ํ๊ธฐํ๊ณ ์ ํ ํฐ์ผ๋ก ๊ต์ฒดํ๊ณ , ์์ฒญ ํ ํฐ๊ณผ DB ์ ์ฅ ํ ํฐ์ด ๋ถ์ผ์นํ๋ฉด ์ฆ์ ์์ธ ์ฒ๋ฆฌ๋ก ์ฐจ๋จํ์ต๋๋ค. Refresh Token์ HttpOnly ์ฟ ํค๋ก ์ ๋ฌํด XSS ๊ณต๊ฒฉ์ผ๋ก ํ์ทจ๋์ง ์๋๋ก ํ์ต๋๋ค.
์ฌ์ฉ์๊ฐ ํํดํด๋ ๊ด๋ จ๋ ์น๊ตฌ์ ์ ๋ฌผ ๋ด์ญ, ์ฑํ
๊ธฐ๋ก์ ๋ณด์กด๋์ด์ผ ํ์ต๋๋ค. DELETED_AT ์ปฌ๋ผ๊ณผ @SQLRestriction์ผ๋ก ํํด ๊ณ์ ์ ์กฐํ์์ ์๋ ์ ์ธํ๊ณ , loginId๋ฅผ deleted_{userId}๋ก ๋ง์คํนํด ๋์ผ ์์ด๋๋ก ์ฌ๊ฐ์
์ด ๊ฐ๋ฅํ๋๋ก ํ์ต๋๋ค. ๋ฐฐ์ก ์ค์ธ ์ฃผ๋ฌธ์ด ์์ผ๋ฉด ํํด ์์ฒด๋ฅผ ์ฐจ๋จํด ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ ์งํ์ต๋๋ค.
๋ถํธ์บ ํ ๊ธฐ๊ฐ ์ค ์ฌ์ฉํ AWS ํ๋ฆฌํฐ์ด๊ฐ ๋ง๋ฃ๋์ด S3 ์ฐ๋์ ๋น๋กฏํ ์ผ๋ถ ์ธํ๋ผ๊ฐ ํ์ฌ ๋นํ์ฑํ๋ ์ํ์ ๋๋ค. ๋ผ์ด๋ธ ๋ฐ๋ชจ๋ณด๋ค๋ ์ฝ๋ ๋ ๋ฒจ ๊ฒํ ๋ฅผ ์ํ ์ฐธ๊ณ ์ฉ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋๋ค.