개요
AWS 관련 서류 준비 중이여서 아직 클라우드 서비스를 이용하지 못하는 상황이였다. 백엔드는 Spring Security 와 JWT 을 이용하여 소셜 로그인 연동까지 구현하였고, 프론트도 로그인 페이지 까지 만들었다. 그래서 로그인이 잘되어 쿠키에 토큰이 잘 전달 되고 저장되는지 확인해보고 싶어서 개발서버를 배포하게 되었다.
연동 하기에 앞서 걱정되는 부분이 몇개 있었다.
1. CORS 에러
→ 예상 했던대로 CORS 에러를 만나게 되었다. 예상했던거라 대응할 수 있었다. https://localhost:3000 을 열어 주었고 Spring 시큐리티 설정도 바꾸어주었다.
2. HTTPS 그리고 HTTP
→ 아마 작업하면서 가장 큰 난관이었던 부분이였다. 프론트는 https://localhost:3000 백엔드는 https://localhost:9090 을 사용중이 었고 중간에는 웹서버(Nginx)는 없었다.
→ 백엔드는 https을 적용하기 위해 자체서명 인증서를 이용하였다.
→ 프론트 또한 프록시 설정을 통해 자체서명 인증을 받았다고 했다.
→ 그럼 쿠키가 잘 받아져야 한다고 생각하였다. 하지만 HTTP Response 헤더 안에 Set-Cookie에는 쿠키가 잘 박히지만 웹 브라우저 쿠키 저장소에서는 쿠키가 저장되지 않는 이슈가 생겨버렸다.. 그리고 만난 오류는 SSL_ERROR..어쩌구저쩌구.. 쉽게 요약하면 너네 HTTPS 적용 했긴 했는데~ 어느 인증기관에서 인증 받았는지 모르는데 우리가 어떻게 신뢰하고 쿠키를 넘겨줘? 이런 느낌이였다. 그래서 고뇌했다.. 아.. 이거 nginx 띄워서 SSL 설정 해야겠네? 그리고 HTTPS 인증 해야하니깐 도메인도 하나 필요하겠네? 그렇다 완전 돌아가는거였다. 그렇게 최대한 무료 도메인도 찾아보고 구글링하면서 래퍼런스를 찾아봤지만 결국 도메인을 사야했었다.. 그렇게 결론이 나려는 순간 어느 글에서 사파리에서는 되고 크롬에서는 안된다 라는 말을 보았다. 그래서 한번 더 생각해보았다. 이거 브라우저에서만 안되는거 일 수도 있겠네? 그렇게 찾은 결과.. 방법을 찾았다!! 이제 도커를 통해 간이 개발 서버를 배포해보자
PS) 규정상 HTTPS 와 HTTP 통신은 막고 있다.