배경과 문제상황

도입하게 된 배경

우리 서비스는 OAuth2.0을 사용해 구글, 깃허브 로그인을 진행하고, 이후에 얻어지는 서버 자체의 JWT토큰을 set-cookie를 통해 httpOnly쿠키를 set해주는 방식으로 인증을 구현했다.

들어가기에 앞서 우리 서비스의 쿠키 옵션을 살펴보자.

httpOnly O
secure O
same-site lax

httpOnly JS로는 쿠키를 조작할 수 없다.

secure https일 때 만 전송된다.

same-site: lax 같은 host인 경우에 전송함

이때 비교하는 값은 브라우저 주소창의 주소와 cookie의 domain이다.

(서브 도메인도 같은 host다. api.algoitni.site ↔ algoitni.site는 same-site다.)

문제상황

배포에서는 api.algoitni.site와 algoitni.site가 같은 도메인이므로 set-cookie를 통해 받아온 쿠키가 api요청에 잘 담겨서 전송된다.

하지만, 로컬에서 개발시에는 localhost와 api.algoitni.site간의 api통신이므로 set-cookie를 통해 받아온 쿠키를 담아서 전송하지 않게된다. 심지어 httpOnly이므로, 직접넣어줄수도 없다!

해결방안

same-site를 None으로 설정하기