프론트 측에서 쿠키를 전달받지 못합니다

문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.
ID: 1008984


안녕하세요 저는 spring boot + react + oauth2를 사용해서 소셜 로그인을 구현하고 있습니다.

백엔드에서 소셜 로그인 처리를 한 후 ResponseCookie에 jwt 토큰값을 담아서 리다이렉트를 했는데

프론트측에서 쿠키를 받지 못하고 있습니다.

OAuth2SuccessHandler

JwtToken jwtToken = jwtTokenProvider.createJwtToken(member.getEmail(), member.getRole().getValue());

response.addHeader(HttpHeaders.SET_COOKIE, createCookie("accessToken", jwtToken.getAccessToken()));        
response.sendRedirect("https://[url].cloudfront.net/home");

createCookie

private static String createCookie(String name, String value) {
        return ResponseCookie.from(name, value)
                .path("/")
                .httpOnly(true)
                .sameSite("None")
                .secure(true)
                .maxAge(60 * 60 * 6)
                .build()
                .toString();
}

application.yml

redirect-uri: https://[백엔드 배포 주소]

image

  • 리다이렉트한 주소인 /home까지 가지만 쿠키가 없습니다.
  • /home 바로 위에 있는 kakao?code=sdad 이 주소까지는 쿠키가 살아있습니다.

둘 다 https 통신을 하고 있는데 왜 프론트 측에서 쿠키를 못받는지 모르겠습니다ㅠㅠ…

안녕하세요.

재현가능한 URL 부탁드립니다.

1개의 좋아요

댓글로 적으면 되나요?

댓글로 부탁드리며 공개글에 노출되기를 원치 않으신다면 개인 메시지로 전달 부탁 드립니다

@woody.ho ← 클릭하시면 메시지 전송 가능합니다.

보냈습니다!

서브 도메인을 파서 전달하는게 좋을까요?

Set-Cookie 가 응답되는 도메인은 tr******.site 이고, 프론트측 도메인은 dko**********.cloudfront.net 입니다.

기본적으로 쿠키는 다른 도메인에서 엑세스 불가합니다.
SameSite 옵션 및 cors 설정으로 가능할수 있으나 일반적으로 사용하지 않습니다.

말씀처럼 서비스 도메인 부터 맞추는것을 추천 드립니다.

1개의 좋아요

답변 감사합니다!
현재는 토큰을 쿼리 파라미터에 포함시켜서 리다이렉트 방식으로 수정했고,
고도화 기간에 도메인 맞추고 쿠키를 전달하는 방식으로 리팩토링 하려고 합니다.