인프런 커뮤니티 질문&답변

딸기초콜릿님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

정리

배포 환경에서의 세션, 쿠키

작성

·

91

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 아니오

[질문 내용]
여기에 질문 내용을 남겨주세요.
http 프로토콜의 로컬 환경에서는 별도의 설정 없이 클라이언트에서 jsessionid를 헤더에 넣어서 서버에 전송하는 반면, 프론트엔드 서버와 분리된 배포 환경에서는 cors 설정 뿐만 아니라 https 프로토콜로 변경, yml 파일에
server: servlet: session: cookie: same-site: none secure: true
와 같은 별도의 설정을 완료함으로써 쿠키가 서버로 전달되었습니다. (same-site가 none이면 secure은 꼭 true여야 해서요) 비교적 쿠키-세션 방식이 간단한 것 같지만, 이러한 별도의 설정 그리고 stateful한 쿠키-세션 방식 때문에 배포 환경에서 jwt를 쓰는 것이 좋은지, 아니면 쿠키-세션 방식을 쓰는 것이 좋을 지 잘 모르겠습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 답변드리겠습니다.

HTTP 프로토콜에서 세션과 쿠키를 사용하는 방식과 귀하가 구성한 same-site: nonesecure: true 설정은 클라이언트와 서버 간의 안전한 쿠키 전송을 위해 필요한 중요한 설정입니다. 이는 특히 HTTPS 프로토콜을 사용하고 CORS 설정이 필요한 분리된 프론트엔드와 백엔드 서버 환경에서 더욱 중요합니다.

JWT와 세션-쿠키 방식 간의 선택은 많은 요소에 따라 달라질 수 있습니다. 예를 들어, JWT는 상태가 없는(stateless) 인증 방식을 제공하여 서버의 세션 관리 부담을 줄이지만, 쿠키-세션 방식은 상태를 서버에서 관리하기 때문에 서버가 사용자의 인증 상태를 더 구체적으로 제어할 수 있게 합니다.

각 방식의 장단점을 고려할 때, 보안성, 확장성, 개발 및 유지 관리의 용이성 등 귀하의 어플리케이션 요구 사항에 가장 적합한 방식을 선택하는 것이 중요합니다. 또한, 서버간 통신이 빈번하거나 마이크로서비스 아키텍처를 사용하는 경우 JWT를 사용하는 방식이 더 적합할 수 있습니다. 반면, 어플리케이션이 단일 도메인에서 운영되고 세션 관리에 추가적인 제어가 필요한 경우에는 쿠키-세션 방식이 더 나을 수 있습니다.

따라서 두 인증 방식의 특징과 귀하의 프로젝트 요구 사항을 면밀히 검토하여 가장 적합한 방식을 선택하는 것이 권장됩니다.