결론부터 말하자면 고쳤다.
문제의 원인
그래서 원인이 뭐였냐?
백엔드가 https를 못알아먹는다. -> 이에 대한 설정을 추가함.
그래도 안된다. -> 강제로 설정할 수 있게끔함.
간단하게 말하면 이렇게 고쳤음.
제일 처음엔 구글콘솔에 등록 하지 않은 줄 알았다. 그래서 가보니까 되어있네?
그럼 뭐가 문제일까 싶어서 로그인 창을 보니까 개발자가 볼 수 있게 문제가 뭔지 보여주는 곳에서
400 에러를 명시해주고 로그인 버튼을 눌렀을 때 나온 url을 보여주는데 여기서 http://<my-url>/google/login/url
뭐 이런식으로 되어있었음. 그러니까 난 nginx
초기 설정을 할 때 https
에 대한 설정을 끝냈는데 이상하게 로그인 버튼을 클릭하면 그게 해체가 된거.
그래서 원인은 url이 이상하다. 였다.
그래서 우째 고침?
고친 방법을 순서대로 읊어보면 우선 nginx
에서 https
에 대한 설정을 바르게 해놨는데 그게 제대로 먹히지 않았나?
싶어서 서버 컴퓨터 nginx
이미지 내부로 들어가서 nginx.conf
파일을 까보고 설정이 제대로 되어있나 확인을 했고, 보니까 잘 되어있었다.
-> 그럼 프론트의 설정 url이 잘못되었나? 싶어서 좀 까봤는데 아무리 생각해도 딱히 잘못된건 없는 것 같아서 좀 알아보니까
백엔드는 https
를 못알아먹어서 이걸 설정을 따로 해줘야한다고 하더라고,
spring:
forward-headers-strategy: native
그래서 이걸 추가해 줬음. 그리고 테스트 해봤는데 안됨.
그래서 다음으로는 시큐리티에서 로그인 url을 만들 때를 살펴보자 싶어서,
의존성 org.springframework.boot:spring-boot-starter-oauth2-client
추가후 시큐리티 필터체인, OAuth2
로그인 단계에서 설정을 좀 해줌.
.oauth2Login(oauth2 -> oauth2
.loginPage(baseUrl + "/react/login") // 로그인 페이지 설정
.successHandler(oAuth2AuthenticationSuccessHandler)
.failureHandler(customOAuth2FailureHandler)
.authorizationEndpoint(authorizationEndpoint ->
authorizationEndpoint.authorizationRequestResolver(
new CustomAuthorizationRequestResolver(clientRegistrationRepository, baseUrl)
)
)
.userInfoEndpoint(userInfoEndpoint ->
userInfoEndpoint.userService(customOAuth2UserService)
)
)
이렇게 설정을 했고 CustomAuthorizationRequestResolver
가 새롭게 추가가 됐음. 그냥 갖다 쓰려고 했는데 안되서 커스텀으로 만들었음.
그래서 저게 뭘 하는거냐면
주요 구성 요소 및 역할
DefaultOAuth2AuthorizationRequestResolver
:- Spring Security에서 기본적으로 제공하는 OAuth2 인증 요청 생성기.
/oauth2/authorization/{registrationId}
경로로 들어오는 요청을 처리하여OAuth2AuthorizationRequest
를 생성합니다.- 기본적으로
redirect-uri
는 Spring Security의 내부 설정에 따라 자동 생성됩니다.
CustomAuthorizationRequestResolver
:OAuth2AuthorizationRequestResolver
를 구현하여 Spring Security의 기본 동작을 커스터마이징.DefaultOAuth2AuthorizationRequestResolver
를 감싸는 형태로 사용.redirect-uri
를 명시적으로 설정하거나 수정하는 역할을 수행.
resolve
메서드:- HTTP 요청을 받아
OAuth2AuthorizationRequest
객체를 생성. customizeAuthorizationRequest
메서드를 호출하여redirect-uri
를 설정합니다.
- HTTP 요청을 받아
customizeAuthorizationRequest
메서드:OAuth2AuthorizationRequest
객체를 받아, 새로운redirect-uri
를 추가로 설정.- 기존 요청(
request
)의 정보를 유지하면서,redirect-uri
만 변경. - 변경된
redirect-uri
는 Google로 전달.
- Security 설정 내
authorizationRequestResolver
:- Spring Security의 OAuth2 로그인 과정에서 인증 요청 생성을 담당.
- 커스텀 리졸버(
CustomAuthorizationRequestResolver
)를 설정함으로써, 기본 동작을 대체.
이렇다..
여튼 구글 로그인 정상화.
별게로 사이트 로그인 해보니까 약간 공들여서 만든 알람 같은게 조금 고장이 나있긴한데 그래도 만족스럽다.
토큰도 정상작동해서 감격스러움 ㅠㅠ
정보 저장도 잘 되고,
즐겨찾기 설정도 잘 되고,
즐겨찾기 기준으로 날씨 요청도 잘 한다.
직접 요청해도 잘 됨.
뭐 기능에 문제가 있다거나 하는 부분은 없다.
여튼 진짜 배포로직도 끝이다 자동화까지 되어있으니,
오늘 이제 학원가서 develop
브랜치로 병합 이후에 staging
브랜치로 옮기고 코드 수정 이후 재배포 하면 찐막임. 발표 준비에 힘쓰면 될듯.
'Coding History > Team Project' 카테고리의 다른 글
팀플) 자동배포, 무중단 배포 구현 (0) | 2024.12.09 |
---|---|
팀플) 배포 준비. 도메인 -> 자동배포 구현 (1) | 2024.12.07 |
팀플) JWT 엑세스 토큰 쿠키로 관리. (0) | 2024.12.06 |
팀플) 디테일 수정 사항 (0) | 2024.12.05 |
팀플) 오늘 한 것.. (JWT 완전 도입 완료, 세세한 수정, 상세 페이지 CRUD) (3) | 2024.12.03 |