feat(auth): Nginx 프록시 서비스 인증/권한 체크 (PR #23 포함) #24

병합
htlee develop 에서 main 로 2 commits 를 머지했습니다 2026-02-18 12:56:48 +09:00
소유자

Summary

develop → main 머지. PR #23 포함.

변경 내용

  • GET /api/auth/check: Nginx auth_request용 쿠키 기반 인증/RBAC 권한 체크 엔드포인트
  • GC_SESSION 쿠키: 로그인 시 JWT를 HttpOnly 쿠키로 자동 설정
  • gc_proxy_auth 캐시 쿠키: HMAC-SHA256 서명 기반 24시간 캐시 (DB 조회 최소화)
  • AntPathMatcher: 사용자 롤의 URL 패턴과 X-Original-URI 매칭
  • 관리자: 모든 프록시 URL 자동 허용 / 일반 사용자: 롤 기반 제어

수정 파일

  • AuthController.java — /api/auth/check + GC_SESSION 쿠키 설정/삭제
  • JwtTokenProvider.java — 프록시 캐시 토큰 HMAC 생성/검증
  • SecurityConfig.java — /api/auth/check permitAll
  • WebMvcConfig.java — /api/auth/check 감사 로그 제외

Nginx 설정 (이미 배포됨)

  • auth_request → /api/auth/check
  • 401 → 로그인 리다이렉트, 403 → 권한 없음 페이지
## Summary develop → main 머지. PR #23 포함. ### 변경 내용 - **GET /api/auth/check**: Nginx auth_request용 쿠키 기반 인증/RBAC 권한 체크 엔드포인트 - **GC_SESSION 쿠키**: 로그인 시 JWT를 HttpOnly 쿠키로 자동 설정 - **gc_proxy_auth 캐시 쿠키**: HMAC-SHA256 서명 기반 24시간 캐시 (DB 조회 최소화) - **AntPathMatcher**: 사용자 롤의 URL 패턴과 X-Original-URI 매칭 - **관리자**: 모든 프록시 URL 자동 허용 / 일반 사용자: 롤 기반 제어 ### 수정 파일 - `AuthController.java` — /api/auth/check + GC_SESSION 쿠키 설정/삭제 - `JwtTokenProvider.java` — 프록시 캐시 토큰 HMAC 생성/검증 - `SecurityConfig.java` — /api/auth/check permitAll - `WebMvcConfig.java` — /api/auth/check 감사 로그 제외 ### Nginx 설정 (이미 배포됨) - auth_request → /api/auth/check - 401 → 로그인 리다이렉트, 403 → 권한 없음 페이지
htlee added 2 commits 2026-02-18 12:54:53 +09:00
- GET /api/auth/check: Nginx auth_request용 쿠키 기반 인증/RBAC 권한 체크
- GC_SESSION 쿠키: 로그인 시 JWT를 HttpOnly 쿠키로 자동 설정
- gc_proxy_auth 캐시 쿠키: HMAC 서명 기반 24시간 캐시 (DB 조회 최소화)
- AntPathMatcher로 사용자 롤의 URL 패턴과 X-Original-URI 매칭
- 관리자는 모든 프록시 URL 자동 허용, 일반 사용자는 롤 기반 제어

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
htlee merged commit 8535d5e765 into main 2026-02-18 12:56:48 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 1명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

마감일이 설정되지 않았습니다.

의존성

No dependencies set.

Reference: gc/gc-guide-api#24
No description provided.