Files
api2/docs/security-and-response.md
T

3.1 KiB

보안 및 응답 규칙

예외/응답 규칙

  • 공통 예외 응답은 GlobalExceptionHandler 에서 처리하므로 Controller 별 개별 예외 처리를 중복해서 늘리지 않는다.
  • @Valid, 바인딩 실패, JSON 파싱 실패, 타입 오류는 CODE_4001 로 통일하고 필드 오류가 있으면 Map<String, String> 형태로 반환한다.
  • 단순 성공/실패 문자열을 직접 내려주기보다 ApiResponse.entity(...)ApiResponseCode 조합을 우선 사용한다.
  • 404/405/500 같은 공통 HTTP 오류도 가능하면 ApiResponseCode enum 으로 맞춘다.

보안 구조

  • Swagger: /v3/api-docs/**, /swagger-ui/** → HTTP Basic 인증 (InMemory)
  • API: JWT Bearer 토큰 인증 (Stateless)
  • 세션/쿠키: Redis Session 저장소 사용, 쿠키 속성은 프로파일별 cookie.* 설정으로 제어
  • Admin API: /admin/** 는 별도 SecurityFilterChain 으로 분리하며 /admin/auth/** 만 공개하고 나머지는 ADMIN 권한을 요구한다.
  • 공개 경로: /, /actuator/health, /sso/**, /auth/**, /user/signup, /user/migrationUserList, /tusFiles/tusHook, /tusFiles/uploadAuth
  • TUS 업로드 토큰은 일반 access token 이 아니므로 /tusFiles/uploadAuth, /tusFiles/tusHookJwtAuthenticationFilter.shouldNotFilter(...) 에서도 제외한다.
  • /admin/auth/loginChecked 는 admin access token 쿠키의 현재 로그인 상태 확인용이다. 토큰을 재발급하지 않으며 isAdminAccessToken, isAdminRefreshToken, loggedIn, userId, userIdx, userTokenIdx, userRole 형태의 값을 반환한다.
  • Swagger 인증과 API 인증은 SecurityFilterChain 을 분리해서 관리한다.

응답 코드 규칙

  • 응답 코드는 ApiResponseCode enum 으로 관리한다.
코드 메시지 HTTP Status 용도
CODE_200 성공 200 OK 일반 성공
CODE_400 잘못된 요청 400 Bad Request 일반 클라이언트 오류
CODE_401 인증 필요 합니다. 401 Unauthorized 인증 없음
CODE_403 접근 권한 필요 합니다. 403 Forbidden 권한 없음
CODE_404 페이지를 찾을 수 없습니다. 404 Not Found 리소스 없음
CODE_405 잘못된 요청입니다. 요청 방식을 확인해 주세요. 405 Method Not Allowed 메서드 불일치
CODE_500 요청을 처리하는 중 오류가 발생했습니다. 500 Internal Server Error 서버 오류
CODE_2001 {0} 정보 조회에 성공하였습니다. 200 OK 단건 조회 성공
CODE_2002 {0} 등록 되었습니다. 201 Created 등록 성공
CODE_2003 조회된 정보가 없습니다. 200 OK 조회 결과 없음
CODE_2004 중복된 {0} 정보 입니다. 409 Conflict 중복 데이터
CODE_4001 입력값을 확인해주세요. 400 Bad Request @Valid / 바인딩 / 타입오류 / JSON 파싱 실패
CODE_4003 필수 요청 파라미터가 누락되었습니다. 400 Bad Request 필수 파라미터 누락
  • {0} 자리에 대상명 삽입 (예: CODE_2001 → "회원 정보 조회에 성공하였습니다.")