Cloudflare 봇 차단 환경에서 연결 해제 웹훅 운영 관련 문의

안녕하세요. 카카오 로그인으로 회원 가입·로그인을 처리하는 웹 서비스를 운영 중입니다(앱 ID: 1478878, URL: https://badaro.app). 탈퇴 동기화를 위해 연결 해제 웹훅(연결끊기 알림 URL)을 등록해서 사용하고 있습니다.

저희 서비스는 Cloudflare를 앞단에 두고 운영하고 있어서, 모든 인바운드 요청이 Cloudflare의 방화벽(WAF)·레이트리밋·봇 차단 기능을 거쳐 서버에 도달합니다. 최근 봇 트래픽 대비를 위해 이런 보안 기능을 강화하려고 검토 중인데, 걱정되는 부분이 카카오 서버에서 저희 쪽으로 들어오는 웹훅 요청이 봇으로 오인 차단되는 경우입니다.

문서상 웹훅은 3초 내 200 응답이 필수이고, 기존 스레드를 보면 잘못된 응답이 지속될 경우 웹훅이 비활성화된다고 안내되어 있더라고요. 보안 룰이 웹훅을 잘못 차단하면(카카오는 403이나 챌린지 페이지를 받게 됩니다) 이용자의 연결 해제 사실을 저희가 놓쳐서, 이용자는 탈퇴했다고 생각하는데 저희 DB에는 계정이 남는 상황이 생길 수 있어 예외 설정을 신중하게 하려고 합니다.

방화벽 문서의 인바운드 IP 대역과 IP 목록 조회 API는 확인해서 IP 기준 예외는 구성할 수 있는 상태입니다. 다만 문서에서 찾지 못한 부분이 있어 문의드립니다.

  1. 연결 해제 웹훅 요청의 User-Agent 값이 고정되어 있나요? IP 대역은 변경될 수 있다 보니, 보안 룰에서 카카오 웹훅을 식별할 보조 수단(UA 등)이 있으면 이중으로 안전하게 예외 처리를 할 수 있을 것 같습니다.
    저희 보안 로그에서 연결 해제 웹훅 요청의 User-Agent가 CAPRI-AHC/2.6.0 으로 관측되었습니다. 이 값이 고정인지(추후 버전·이름 변경 가능성 포함) 궁금합니다. 실제로 이 UA가 CDN의 봇 차단 기능(Browser Integrity Check)에 차단되어 웹훅이 유실된 사례가 있었고, 보안 룰의 예외 설정에 활용하려 합니다.

  2. 잘못된 응답 지속 시 웹훅이 비활성화된다는 안내와 관련해, 비활성화 기준(오류 횟수나 기간), 비활성화 시 통지 방식, 재활성화 절차가 어떻게 되나요? 실패 시 재전송 정책(횟수·간격) 도 함께 알고 싶습니다.
    저희 보안 로그에서는 같은 알림이 서로 다른 카카오 서버 IP로 약 1시간여에 걸쳐 총 3회 시도된 것이 관측되었는데, 공식적인 재시도 횟수·간격·최대 기간이 정해져 있는지 확인 부탁드립니다.

  3. 웹훅이 비활성화됐거나 일시 장애로 알림을 놓친 경우, 놓친 연결 해제 건을 소급 확인하는 권장 방법이 있을까요? 예를 들어 어드민 키로 사용자 목록 API를 주기적으로 대조하는 방식이 적절한지 궁금합니다.

덧붙여, 카카오톡 링크 미리보기(스크랩) 봇도 같은 이유로 예외 처리를 해두었는데, 예전 안내 글의 User-Agent(facebookexternalhit/1.1; kakaotalk-scrap/1.0)가 현재도 유효한지 확인 부탁드립니다.

감사합니다.

안녕하세요. @kd

연결 해제 웹훅과 계정상태변경 웹훅의 동작은 차이가 있습니다. 말씀하신 내용상 ‘계정상태변경 웹훅’ 사용하시면 좋을 것 같습니다.


https://developers.kakao.com/docs/ko/kakaologin/callback#unlink

연결 해제 웹훅은 User-Agent: “CAPRI-AHC/2.6.0” 로 전달되고

https://developers.kakao.com/docs/ko/kakaologin/callback#ssf

계정상태변경 웹훅의 OAUTH_USER_UNLINKED 구독은 User-Agent: Kakao-HttpClient/2.3.3 로 전달됩니다.


에러 발생 시, 디벨로퍼스 알림(우측상단 프로필아이콘 > 알림설정) 으로 안내됩니다.

웹훅은 발송 실패 시, 즉시 1회 재처리 됩니다.
(계정상태변경 웹훅은 단계별로 6회 재처리)

비활성화는 여러 차례 안내에도 조치 하지 않는 경우 관리자가 확인 후, 비활성화 처리 합니다.
(계정상태변경 웹훅은 웹훅 이벤트 발송이 3시간 동안 연속적으로 실패하면 비활성화)
비활성화 시, 운영하시는 시스템 응답 조치하시고 디벨로퍼스에서 다시 활성화 설정 하시면됩니다.


웹훅 호출을 소급확인 하는 기능은 제공하고 있지 않습니다.


스크랩서버 UA 는 아래와 같습니다.

facebookexternalhit/1.1; kakaotalk-scrap/1.0; +https://devtalk.kakao.com/t/scrap/33984

감사합니다.

1개의 좋아요

안녕하세요.

권장해 주신 대로 ‘계정상태변경 웹훅’ 사용을 검토하겠습니다. 감사합니다.

좋은 하루 되세요.