-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BE_5] JwtProperties 중앙 관리 & JwtFilter를 통한 토큰 검증 & 엑세스, 리프레쉬 기능 분리 & User별 JPA Generic 레포 변경 #62
Comments
🚀 온프레미스 백엔드 서버 보안 아키텍처 및 동작 방식온프레미스 환경에서 백엔드 서버를 운영할 때 보안 장비 및 계층별 보안 정책을 적용해야 합니다. 아래는 네트워크 → 애플리케이션 서버 → 컨트롤러까지의 보안 흐름 및 주요 보안 장비를 정리한 내용입니다. ✅ 1. 보안 장비 및 계층별 역할온프레미스 환경에서 보안을 강화하기 위해 아래 5가지 핵심 보안 계층을 도입합니다.
✅ 2. 보안 장비 동작 방식 및 요청 흐름온프레미스 서버에서 외부 요청이 들어와 컨트롤러에 도달하기까지의 보안 검증 과정을 아래의 6단계 흐름으로 정리했습니다. 📌 1️⃣ 네트워크 보안 계층 (외부 → 내부 접근 제한)
📌 2️⃣ 시스템 보안 계층 (서버 내부 보호)
📌 3️⃣ 애플리케이션 보안 계층 (API 요청 인증 및 검증)
📌 4️⃣ 데이터 보안 계층 (DB 접근 및 데이터 암호화)
📌 5️⃣ 모니터링 및 로깅 계층 (실시간 보안 감시)
✅ 3. 전체 보안 아키텍처 다이어그램다음은 온프레미스 백엔드 서버 보안 아키텍처 및 요청 흐름을 시각적으로 정리한 다이어그램입니다.
✅ 4. 보안 시스템 최적화 전략
✅ 결론온프레미스 환경에서 백엔드 서버의 보안을 강화하려면 방화벽, IDS/IPS, VPN, HSM, SIEM, API Gateway, 데이터 암호화 등의 다중 보안 계층을 적용해야 합니다. 또한 Spring Security + JWT/OAuth2 인증, WAF 보호, 실시간 로그 분석을 통해 실제 공격에 대한 대응력을 극대화할 수 있습니다. 🚀 |
Refactor: JwtFilter를 통한 토큰 검증 & 엑세스, 리프레쉬 기능 분리 & User별 JPA Generic 레포 변경[박한솔]
pjhcsols
Feat: JwtProperties 중앙 관리 & 리프레쉬 토큰 로직 작성[박한솔]
Jwt 관련 중앙 관리와 jwt 필터를 통한 토큰 검증과정에서 엑세스 토큰에 특정 클레임이 포함되어있다.
특정 클레임이 없으면 권한이 없음을 제어를 할수있다. (리프레쉬, 엑세스 토큰의 기능 분리)
User별 JPA Generic 레포 변경 리펙토링
다음은 OAuth 2.0 & JWT 기반 인증 시스템의 Spring Security Filter 인증 구조 다이어그램입니다. 이 다이어그램에서는 유저별 역할(Role) 을 나누고, JWT 기반의 인증 과정에서 어떤 흐름으로 요청이 처리되는지 시각적으로 표현하였습니다.
다음은 Spring MVC에서 Servlet Request 흐름을 기준으로
Filter → DispatcherServlet → Interceptor → AOP → Controller → Servlet Response
의 실행 순서와 역할을 정리한 다이어그램 및 설명입니다.📌 Spring MVC 요청 처리 흐름 (Servlet Request → Response)
📌 각 단계별 역할
- 보안, 인증, CORS 설정, 로깅 수행
- (예:
JwtFilter
에서 JWT 검증)- 요청을 해당하는 컨트롤러로 전달
-
preHandle()
→ 요청 전-
postHandle()
→ 응답 후-
afterCompletion()
→ 완료 후 로깅- 로깅, 트랜잭션 관리, 성능 모니터링 등 수행
- API 요청 처리 후 데이터 반환
📌 각 단계에서 수행되는 작업 예시
JwtFilter
→Authorization
헤더에서 JWT 검증📌 실제 흐름 예시 (JWT 기반 인증 + AOP + Interceptor 포함)
1️⃣ 사용자가 API 요청 (
/user/profile
)을 보냄2️⃣ Filter 실행 (
JwtFilter
)Authorization: Bearer <JWT>
확인401 Unauthorized
반환DispatcherServlet
으로 전달3️⃣ DispatcherServlet이 적절한 Controller로 라우팅
/user/profile
경로를 처리할UserController
를 찾음4️⃣ Interceptor (
preHandle()
) 실행403 Forbidden
응답 반환5️⃣ AOP 실행 (
@Around
)@Transactional
)6️⃣ Controller (
UserController
) 실행7️⃣ Interceptor (
postHandle() & afterCompletion()
) 실행8️⃣ ServletResponse가 클라이언트로 응답 전달
{ "id": 1, "name": "John Doe" }
📌 핵심 정리
✅
Filter
→DispatcherServlet
→Interceptor
→AOP
→Controller
→Interceptor
→ServletResponse
흐름으로 동작✅ Filter: 보안, 인증 (JWT 검증)
✅ Interceptor: 요청 전/후 작업 (세션 체크, 로깅)
✅ AOP: 공통 관심사 처리 (트랜잭션, 성능 모니터링)
✅ Controller: 비즈니스 로직 실행 후 응답 반환
이 구조를 기반으로 Spring Security, JWT, AOP, Interceptor를 조합하여 최적화된 API 인증 시스템을 설계할 수 있습니다! 🚀
🛠 인증 구조 다이어그램
📝 설명
/auth/login
)JwtFilter
가 실행됨Authorization
헤더에서 JWT를 추출하여 검증 진행JwtUtil.validateToken()
을 호출하여 유효한 JWT인지 확인401 Unauthorized
반환401 Unauthorized
반환401 Unauthorized
반환JwtUtil.getUserId()
를 사용하여 유저 ID를 가져옴role
을 확인하고, SecurityContext에UsernamePasswordAuthenticationToken
을 저장@PreAuthorize("hasRole('ADMIN')")
@PreAuthorize("hasRole('USER')")
🔑 유저별 역할(Role)
🛠 JWT 토큰 검증 관련 주요 체크 사항
✅
JwtFilter
에서 토큰을 검증할 때:✅
JwtUtil
을 통한 토큰 생성 시:이 다이어그램과 설명을 기반으로 OAuth 2.0 & JWT 기반 인증 시스템의 동작 방식을 쉽게 이해 가능🚀**
The text was updated successfully, but these errors were encountered: