문제발생
문제분석
1. 백엔드에서 jwt를 발급은 문제 없다.
2. 클라이언트에 Set-Cookie헤더가 잘 담겼다.
3. SameSite이슈로 Set-Cookie가 막혔다.
원인 분석
- 기존 로컬환경에서 백엔드 서버를 AWS EC2상에 올리자 클라이언트가 이를 Same-site로 인식하지 않게되어 쿠키 생성이 되지 않는다.
- 왜냐하면 Same-site=Lax로 기본값인데 이는 'safe'한 요청인 Get 메소드, <a href="">, <link rel="prerender">의 접근만 허용한다.
- 그래서 이제 Cross-site로 인식되는 백엔드 서버로 오는 Set-Cookie가 작동하지 않음.
해결방법
- 응답을 Same-Site : None으로 설정해준다.
- 그러기 위해선, Secure를 설정해줘야한다.
- 그러기 위해선, SSL 인증서를 발급받아야 한다.
- 그러기 위해선, 도메인을 설정해야 한다.
- EC2의 엔드포인트를 바로 설정했더니 그렇게 바인딩 되는 것은 권장되지 않고 내가 시도한 인증서 발급프로세스에서도 거부당했다.
도메인 등록
https://thiswooin.tistory.com/115
SSL 인증서 발급
https://thiswooin.tistory.com/117
Spring Boot적용 https 포트 열기
https://thiswooin.tistory.com/118
위의 과정을 마치고 프론트, 백엔드 모두 https로 통신할 수 있게 환경이 마련됐다.
드디어, Cookie가 Set-cookie 헤더에 담긴 값으로 쿠키가 생성됐다.
'Projects > 푸하하 - 개인 프로젝트' 카테고리의 다른 글
SSL인증서 발급 받기 (Let's encrypt, certbot, ubuntu, ec2, spring boot) (0) | 2023.11.09 |
---|---|
도메인 등록하기, 네임서버 (0) | 2023.11.08 |
개인프로젝트 - 하하하 3 : 기본적인 보안. 쿠키, 로컬스토리지. + 리액트 렌더링 방식 (1) | 2023.10.23 |
개인프로젝트 - 하하하 2 : 로그인 후 상태관리에 대한 고민 (0) | 2023.10.07 |
개인프로젝트 - 하하하 1 : 단순 CRUD부터 애자일하게 (1) | 2023.10.04 |