Production에서만 간헐적으로 네이버 로그인 API가 안되는 문제와 원인 추측. 그리고, 해결.

[환경]

.Net 8.0
Razor Pages
Cookie 기반 인증 & Custom 인증
AspNet.Security.OAuth.Providers를 이용해서 네이버, 카카오, 구글 로그인
Linux Docker & Nginx Proxy Manager

[문제상황]

로컬에서 정상적으로 로그인이 되었으나 Production서버에 배포후 간헐적으로 네이버만 로그인이 안되는 현상이 발생하였으나 카카오와 구글은 오류가 없이 로그인이 되는 상황입니다.

문제의 상황 발생시 웹브라우저 네트워크 탭을 보면 정상적으로 nid.naver.com에서 인증되어 코드가 넘어오는 것을 확인했으나 사이트의 /signin-naver에서 간헐적으로 아무런 응답이 없습니다. 60초후 Task 실패 오류만 발생하는 상황이였습니다.

[오류적인 생각]

로컬 테스트시 문제가 없었고 다른 Oauth서버들은 정상 작동했으므로 문제는 네이버나 AspNet.Security.OAuth.Providers.Naver에 문제가 있다는 생각이 들기 시작했습니다.

[해본 방안]

OauthEvent중 OnTicketReceived를 OnCreatingTicket으로도 테스트해보고,
네이버 API설정의 CallBackUrl도 여러번 확인해보고,
Nginx Proxy Manager Force SSL & HSTS도 다시 들여다 보고,
마지막으로, 네이버 로그인에 필요한 코드만 프로젝트로 만들어 Production서버에 배포하였습니다.
똑같은 증상이 발견되었습니다.

[원인 및 해결]

네이버 로그인 API Forum에 다양한 질문들은 많았지만 답변도 그렇게 많지 않은 상황에 실망하던중 방화벽이라는 글자를 보고 힌트를 얻어 Production 서버 방화벽쪽을 살펴본바 검색봇 차단룰이 있었는데 이게 문제의 원인 이였던것 같습니다. 네이버, 구글, 카카오 검색봇 차단 룰이 있었는데 네이버 로그인 서버쪽 ip에서 넘어오는것을 검색봇으로 오인된것 같습니다. 네이버로그인 서버쪽 ip와 네이버 검색봇 ip가 혼용되는지는 모르겠습니다. 네이버 검색봇 차단 룰 삭제후 정상적으로 로그인이 이루어지는 것을 확인하였습니다.

15 Likes

:heart: :heart: :heart: :heart:

1인 당 한 개만 누를 수 있는 좋아요가 모자라서 추가합니다.
주옥같은 경험담 감사합니다.

4 Likes

저도 하트 개수가 하나라는 게 너무 아쉽네요.
귀중한 경험 공유 고맙습니다 ㅠㅠ

3 Likes

깔끔한 정리네요 !

2 Likes