Skip to content

Fix: 소셜로그인 운영서버 "Invalid credentials" 에러 #250

Description

@yeahdy

어떤 버그인가요?

  • 운영 서버에서 소셜 로그인(구글,카카오) 시 "Invalid credentials" 에러 발생

어떤 상황에서 발생한 버그인가요?

  • Given
    운영 도메인에서 소셜 로그인 진행
  • When
    소셜로그인 로그인 페이지에서 아이디, 비밀번호 입력 후 [로그인] 클릭 시 404 "Invalid credentials" 에러 발생
  • Then
    로그인에 실패 하여 리다이렉트 페이지로 이동하지 않음
invalid credentials

예상 결과

  • 소셜로그인 로그인 페이지에서 아이디, 비밀번호 입력 후 [로그인] 클릭 시 리다이렉트 페이지로 이동
  • 개발서버에서는 소셜로그인 정상 작동함

삽질의..흔적 (최대한 자세하게)

1. application.yaml 파일 OAuth2 설정 확인

application.yaml 파일은 dev,prod 을 분리했기 때문에 scope값, client-id, client-secret, redirect-uri 를 운영에 맞게 분리
OAuth2 설정 10번 이상 확인,복붙,제3자와 더블체크체크체크
→ 해결안됨

2. 브라우저 개발자도구에서 네트워크 통신된 부분 디버깅

  1. 소셜로그인 로그인 페이지에서 아이디 비번 입력
  2. 302 리다이렉트 요청헤더 확인
    Request URL: https:/도메인/login/oauth2/code/kakao?code=~~
    Status Code: 302 Found
  3. Response Header 의 Location이 404 에러 발생
    개발서버의 경우 302 리다이렉트 이후 Response Header 의 Location 이 지정한 페이지로 되어있음

→ 해결안됨

3. 쿠키에 셋팅 설정 및 도메인과 리다이렉트url 확인

소셜로그인 성공 시 핸들러에서 헤더로 전달할 쿠키에 도메인 셋팅

// OAuth2SuccessHandler 

response.setHeader(
                "Set-cookie",
                CookieUtils.createCookies(AUTHORIZATION,refreshToken,properties.domain(),REFRESH_TOKEN_DURATION).toString());
// ...
getRedirectStrategy().sendRedirect(request, response, redirectUrl);
  • properties.domain()
    쿠키 셋팅 시 개발/운영모두 도메인은 board-go.net으로 설정

일단 소셜로그인 성공핸들러까지도 안들어오고, DefaultOAuth2UserService를 상속받은 서비스까지도 들어오지 않음
아예 OAuth2AuthorizationRequest 객체가 없는 것 같음!

→ 해결안됨

4. 운영서버 스케일아웃시 OAuth2 로그인 상황에 대해 로드밸런서가 동일한 서버로 요청을 분배시키지 않는 경우

NGINX 헤더 설정 트러블슈팅 이슈 참고

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions