전체 보기
🍀

Cross Domain 간 쿠키 전송

작성일자
2023/09/21
태그
DIARY_DEVELOP
프로젝트
FIS
책 종류
1 more property

Cross Domain 간 쿠키 전송

서론

현재 인증 인가 시스템이 세션 방식으로 구성되어 있다.
세션은 서로 같은 도메인 혹은 서브도메인에서 호스팅되어야지만 공유가 가능하다.
prod 서버는 프론트엔드와 백엔드의 도메인이 서브 도메인 관계라 세션 공유에 문제가 없었다.
허나, dev 서버의 경우 백엔드만 사용하고 프론트엔드는 local에서 실행시키고 있어 세션 공유를 하지 못하는 문제가 있었다.
이로 인해 백엔드 실행 파일을 프론트엔드에 넘겨주어 프론트 측에서 백엔드를 직접 local에서 함께 실행 시켜 개발을 진행하고 있다는 큰 불편함이 존재했다. 용량이 큰 jar 파일을 매번 직접 넘겨줘야 했기에 병목이 불가피했다.
이 고질적인 문제를 해결하기 위해 인증 인가 시스템을 토큰 방식으로 전환할까도 고민했지만
일단 더 빠르게 적용할 수 있는 방법을 찾았다.
쿠키 설정을 통해 서로 다른 도메인 간에도 전송 가능하게 해주는 것이다.

본론

그렇다면, 프론트가 local에서 실행할 땐 어떻게 해야 다른 도메인의 쿠키를 받을 수 있을까?
가장 간단한 방법으론 응답 header에 쿠키를 담아 보내는 방법이 있겠지만, 나는 설정을 통해 근본적인 문제를 해결하고자 했다.
따라서 SameSite 설정을 none으로 바꿔주어 이를 해결했다.
server: servlet: session: cookie: same-site: none secure: true
Java
복사
다만, SameSite 설정을 none으로 하려면 secure 설정이 true여야 해서 https 배포를 함께 진행해줬다.
cookie 속성에 대해선 아래 문서를 참고했다.
Lax Cookies are not sent on normal cross-site subrequests (for example to load images or frames into a third party site), but are sent when a user is navigating to the origin site (i.e., when following a link). This is the default cookie value if SameSite has not been explicitly specified in recent browser versions (see the "SameSite: Defaults to Lax" feature in the Browser Compatibility). None Cookies will be sent in all contexts, i.e. in responses to both first-party and cross-origin requests. If SameSite=None is set, the cookie Secure attribute must also be set (or the cookie will be blocked). Secure A Secure cookie is only sent to the server with an encrypted request over the HTTPS protocol. Note that insecure sites (http:) can't set cookies with the Secure directive.
참고

결론

프론트 local에서 테스트해본 결과 성공적으로 동작한다.