
1. 역할
- 클라이언트 인증 처리 및 토큰 관리 담당
- 로그인 시
accessToken / refreshToken 발급
- refreshToken 기반 액세스 토큰 갱신
- 로그아웃 시 refreshToken 폐기
- 서비스 레벨에서 예외 발생 → 글로벌 핸들러 처리
2. Controller: AuthController
로그인 (/login)
@PostMapping("/login")
publicResponseEntity<?>login(@RequestBodyLoginRequestrequest,HttpServletResponseres) {
Tokenstokens=authService.login(request.email(),request.password());
CookieUtil.addHttpOnlyCookie(res,"refreshToken",tokens.refreshToken(),10080);
returnResponseEntity.ok(Map.of("accessToken",tokens.accessToken()));
}
- 이메일/비밀번호 검증 후 로그인
- Single Session 정책 → 기존 토큰 폐기
accessToken → JSON 응답
refreshToken → HttpOnly 쿠키
토큰 갱신 (/refresh)
@PostMapping("/refresh")
publicResponseEntity<?>refresh(HttpServletRequestreq,HttpServletResponseres) {
StringrefreshToken=CookieUtil.readCookie(req,"refreshToken");
Tokenstokens=authService.refresh(refreshToken);
CookieUtil.addHttpOnlyCookie(res,"refreshToken",tokens.refreshToken(),10080);
returnResponseEntity.ok(Map.of("accessToken",tokens.accessToken()));
}
- 쿠키 refreshToken 검증
- 기존 토큰 폐기 후 새 토큰 발급 (회전)
로그아웃 (/logout)