개발환경에서 플랫폼이 정상적으로 작동하는 것을 확인하고, WS-AutoML 사용자 페이지를 배포 후 배포환경에서 Google OAuth 2.0으로 구현한 뒤 로그인 화면(http://automl-user-load-balancer-366843044.ap-northeast-2.elb.amazonaws.com/loginPage)이 렌더링되지 않고 구글로그인(/oauth2/authorization/google)으로 바로 접근되는 이슈가 발생하였습니다.
몇가지 가정을 세우고 실행해 보았습니다.
- Front-End 이슈일 경우
- 배포과정에서 React 소스를 빌드하고 서빙해주는 과정이 있는데 이 과정에서 해당 경로가 맵핑이 제대로 안되었을거라고 가정했지만, 구글로그인을 한 뒤에 직접 경로로 이동하니 로그인 화면이 정상적으로 렌더링되는 것을 확인했습니다.
- Back-End 이슈일 경우
- 해당 웹페이지에 접근 시 나타나는 로그를 확인하니 CORS, CORB 에러로 확인되었고,
WebConfig.java
및SecurityConfig.java
에서 CORS 오류 처리를 했지만, 같은 결과가 반복되었습니다. - 구글로그인 후 로그인페이지가 렌더링이 되는 것으로 보아 권한 관련 소스라고 유추하였고,
SecurityConfig.java
파일 소스를 분석하였습니다.
- 해당 웹페이지에 접근 시 나타나는 로그를 확인하니 CORS, CORB 에러로 확인되었고,
.antMatchers("/loginPage", "/css/**", "/js/**", "/images/**").permitAll() // 로그인 페이지는 모든 사용자가 접근 가능
.antMatchers("/login/oauth2/code/google").permitAll()
.antMatchers("/**").access("hasRole('USER') or hasRole('MANAGER') or hasRole('ADMIN')")
SecurityConfig.java
에서 위 코드를 제거하고, 배포하니 정상적으로 작동하였습니다.
- 권한이 없으면
/loginPage
경로로 이동하는 소스와 충돌한 것으로 확인했습니다.
- 프론트앤드와 백앤드 사이에서 기능구현은 한쪽에서만 할 것
- 코딩의 기본적인 사항이지만 기능적인 보완을 위해 작성한 코드라고 해도, 중복된 코드는 오히려 충돌을 일으킬 수 있다는 것
- 코드의 중복이 일어나지 않게 패키지 구조를 명확히 하고, 각 기능에 대한 주석을 좀 더 명확하게 작성해야 될 것 같습니다.