문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.
안녕하세요 기존에 카카오로그인을 java단에서 값을 받아서 항상 처리해 오고 있었습니다.
최근 프로젝트의 데이터센터에서 was에서 외부로 나가는 걸 절대 열어줄 수 없으니 웹방식으로 개발하라고 합니다.
Kakao.Auth.login()을 통해서 id와 name을 가져올 수는 있는거 같은데 그걸 다시 백엔드에 보내서 인증을 처리해야 하다보니 보안적으로 안전하지 않다고 생각됩니다.
혹시 방화벽이 열리지 않는 상태에서도 카카오로그인이 웹방식을 통한 백엔드 인증이 제대로 구현될 수 있다고 봐야 하나요?
안녕하세요.
확인을 위해 앱 ID 부탁드립니다.
앱ID
https://developers.kakao.com/console/app 에 표시되는 ID 값 입니다.
숫자로된 ID 입니다
ex) 123456
아 제가 궁금한건
웹방식으로 구현을 하긴 했는데 스크립트에서 id값 가져다가 백엔드로 던져주는게 보안적으로 괜찮다고 봐야 하는건지 였습니다.
백엔드에서 복호화하면 사용자가 조작할일이 없는데 웹방식에서는 가능하겠다 싶었고 데이터센터에서는 무조건 웹방식으로 개발하라고 해서요…
tim.l
10월 29, 2025, 1:24오전
5
안녕하세요.
시스템 아키텍쳐는 운영하시는 상황 마다 다르므로 정답이 있을 수는 없지만, 보안을 강화하는 일반적인 패턴이 있어서 소개 드리도록 하겠습니다.
카카오디벨로퍼스 보안 권장 사항
카카오 로그인에서 주요하게 보호해야할 대상은 개인정보 및 식별자 그리고 액세스토큰일 것입니다.
이러한 측면에서 웹프론트가 아닌 백엔드 URL 리다이렉트 URL 설정해서 카카오와의 교신을 격리한다면 보안이 매우 강화될 것이고
프론트에는 꼭 필요한 정보만을 정제해 전달하는 것을 권장합니다.
더불어, 카카오디벨로퍼스에서 제공하는 1.4. 허용 IP 주소 기능을 설정하셔서 한정된 서버만 API 호출 가능하도록 하실 수 있고,
사전에 백엔드에서 발급한 난수를 카카오 로그인 state파라메터에 설정 후, 백엔드에서 다시 검증하는 방법도 있습니다. 2.3. state 파라미터 사용 (CSRF 공격 방지)
카카오로그인으로 전달받을 수 있는 항목 중 CI의 경우, SDK의 프론트 응답으로는 전달 하지 않고 반드시 백엔드에서만 전달하는 항목 도 있습니다.
위 내용과 별개로 말씀하신 Kakao.Auth.login() 기능은 Javascript SDK v2에서는 더이상 제공하지 않는 기능으로 카카오와의 교신을 SDK가 담당하는 기능입니다.
보안이 한층 강화된 Javascript SDK v2 Kakao.Auth.authorize() 기능으로 리다이렉트 URI를 백엔드로 설정하여 개발하시는 것을 추천드립니다.
혹시 방화벽이 열리지 않는 상태에서도 카카오로그인이 웹방식을 통한 백엔드 인증이 제대로 구현될 수 있다고 봐야 하나요?
말씀하신 방법도 구현 불가능한 것은 아니나 백엔드와 프론트간 교신의 신뢰성을 보장할 CSRF(Cross-Site Request Forgery) 공격 방지용 장치들을 추가로 설정하시면 좋을 것 같습니다.
감사합니다.
tim.l
10월 29, 2025, 1:37오전
6
참고1. 반드시 백엔드 API 호출만 해야 하는 경우
CI 동의 항목 설정 권한이 있어 조회 가능한 경우에도
"제23조의6(연계정보의 안전조치 의무 등) "조항이 포함된 정보통신망법 개정안 [2024. 7. 24. 시행] 국가법령정보센터 에 따라 클라이언트로 내려가는 SDK 응답에 CI는 제외되고 백엔드에서 서버to서버 전송구간 HTTPS 적용하여 REST API 사용자 정보조회 API 로 CI를 조회 해야합니다.
참고2. PKCE(Proof Key for Code Exchange)
좋은답변 감사합니다.
추가적으로 여쭙자면..
현재 WAS방화벽은 차단이라서 백엔드 통신은 안됩니다.
이런상황에서 AUTH.LOGIN을 통해 ID_TOKEN을 받고 그걸 POST로 재전송해서 백엔드에서 처리했는데
AUTH.LOGIN대신 AUTHORIZE를 쓴다면 찾아본 자료는 백엔드 통신이 기본인데 그럼 WAS에서 외부통신이 안된다면 구현이 불가능하다고 봐도 될까요?
현재는 AUTH.LOGIN이지만 이 함수가 없어진다면 was통신이 안된다는 조건에서는 카카오로그인 적용은 힘들다고 봐야 하는건지 여쭤봅니다..
tim.l
10월 29, 2025, 8:55오전
8
참고로, 행정안전부 통합소셜로그인 AnyID에서도 카카오와 백엔드 통신하도록 구현되어 있으므로 방화벽 담당자분과 상의 해보시면 좋을 것 같습니다.
WAS에서 외부통신이 안되는 것은 운영하시는 시스템 만의 특별한 상황이니 일반적인 답변은 의미 없을 것 같습니다.
현재 상태에서 그나마 보안을 강화하시려면,
ID_TOKEN을 사용하시면 2.5. nonce 파라미터 사용 으로 백엔드에서 한차례 호출처 검증 하시면 좋을 것 같습니다.
감사합니다.