이 프로젝트는 쿠키(Cookie) 기반 인증을 기본으로 사용합니다. 따라서 로컬 테스트 시에도 쿠키를 저장하고 전송하는 방식을 권장합니다.
| 쿠키명 | 설명 | 유효시간 | 속성 |
|---|---|---|---|
accessToken |
JWT Access Token | 1시간 (3600초) | HttpOnly, Secure, SameSite=Lax |
refreshToken |
Refresh Token | 7일 (604800초) | HttpOnly, Secure, SameSite=Lax |
SameSite 설정:
COOKIE_SAMESITE환경변수로 제어 가능 (기본값:Lax) Secure 설정:COOKIE_SECURE환경변수로 제어 가능 (기본값:true) 로컬 개발 환경에서 HTTP로 테스트할 경우COOKIE_SECURE=false로 설정해야 합니다.
auth-service가 정상적으로 실행되어 있어야 합니다.
- Auth Service URL:
http://localhost:8080/auth(Gateway 경유) - Direct URL:
http://localhost:8081/auth(Direct)
curl의 쿠키 저장(-c) 및 전송(-b) 옵션을 사용하면 브라우저와 동일한 환경을 시뮬레이션할 수 있습니다.
로그인 성공 시 서버가 반환하는 accessToken 및 refreshToken 쿠키를 파일(cookies.txt)에 저장합니다.
# -c cookies.txt: 서버에서 받은 쿠키를 파일에 저장
curl -c cookies.txt -X POST http://localhost:8080/auth/v1/login \
-H "Content-Type: application/json" \
-d '{
"email": "dev@test.com",
"password": "Password123!"
}'응답 확인:
정상 로그인 시 아래와 같은 응답과 함께 cookies.txt 파일이 생성됩니다.
{
"message": "Login successful",
"tokenType": "Bearer"
}저장된 쿠키 파일을 사용하여 인증이 필요한 다른 서비스를 호출합니다.
# -b cookies.txt: 저장된 쿠키를 요청에 포함
curl -b cookies.txt -X GET http://localhost:8080/meetings/123auth-service 및 각 서비스의 필터(JwtAuthenticationFilter)는 개발 편의를 위해 Authorization 헤더 방식도 지원합니다.
로그인 요청 시 -i (include headers) 옵션을 사용하여 Set-Cookie 헤더를 확인합니다.
curl -i -X POST http://localhost:8080/auth/v1/login \
-H "Content-Type: application/json" \
-d '{
"email": "dev@test.com",
"password": "Password123!"
}'응답 헤더 예시:
HTTP/1.1 200 OK
Set-Cookie: accessToken=eyJhbGciOiJSUzI1...; Path=/; HttpOnly; SameSite=Lax
Set-Cookie: refreshToken=d29a...; Path=/; HttpOnly; SameSite=Lax
...위의 Set-Cookie 헤더에서 accessToken 값(eyJ...)을 복사합니다.
curl -X GET http://localhost:8080/meetings/123 \
-H "Authorization: Bearer <COPY_PASTE_ACCESS_TOKEN>"게스트 로그인은 회원가입 없이 임시 토큰을 쿠키로 발급받습니다. Access Token은 4시간, Refresh Token은 1일 유효합니다.
# 쿠키 저장 방식
curl -c guest_cookies.txt -X POST http://localhost:8080/auth/v1/login/guest \
-H "Content-Type: application/json" \
-d '{
"name": "Guest User",
"meetingId": "meeting-123"
}'
# 서비스 호출
curl -b guest_cookies.txt http://localhost:8080/meetings/meeting-123/joinRefresh Token이 유효한 경우 새로운 Access/Refresh 토큰을 발급받을 수 있습니다 (Token Rotation).
# 쿠키 파일에서 refreshToken 자동 사용
curl -c cookies.txt -b cookies.txt -X POST http://localhost:8080/auth/v1/refreshAccess Token을 블랙리스트에 추가하고 쿠키를 삭제합니다.
curl -b cookies.txt -X POST http://localhost:8080/auth/v1/logout