기존에는 토큰을 localStorage에 저장한 후, 이를 Authorization 헤더에 포함하여 인증을 처리하고 있었습니다.
그러나 보안상의 이유로 쿠키 기반 인증 방식으로 변경하기로 결정하였고,
이에 따라 백엔드에서는 토큰을 쿠키에 저장하는 방식으로 인증 방식을 변경하였습니다.
이에 맞춰 프론트엔드에서는 API 요청 시 credentials: 'include' 옵션을 추가하여 쿠키를 함께 전송하도록 수정하였습니다.
하지만 예상과 달리 401 Unauthorized 에러가 발생하며 인증이 정상적으로 이루어지지 않는 문제가 발생하였습니다.
CORS 설정 문제 가능성 검토
credentials: true를 설정해야 합니다. API 요청 경로 확인
API Route에서 쿠키 전달 누락
request.headers.get('cookie')를 이용하여 클라이언트에서 받은 쿠키를 백엔드로 넘기는 방식으로 변경하였습니다. 이제 쿠키가 정상적으로 전달되면서 401 오류 없이 인증이 정상적으로 작동하게 되었습니다.
쿠키 기반 인증은 credentials: 'include' 설정만으로 충분하지 않다.
CORS 설정을 정확히 이해하고 적용해야 한다.
Access-Control-Allow-Credentials: true 설정이 필요하며,credentials: 'include'를 반드시 추가해야 합니다. API Route가 반드시 필요한지 검토해야 한다.
이번 문제를 통해 쿠키 기반 인증 방식으로 전환할 때 단순히 API 요청만 변경하는 것이 아니라, 전체적인 인증 흐름을 점검하는 것이 중요하다는 점을 깨닫게 되었습니다.
특히 Next.js API Route를 사용할 경우, 클라이언트에서 받은 쿠키를 백엔드로 전달해야 한다는 점을 반드시 고려해야 합니다.