Access token 발급 시 클라이언트 노출

디벨로퍼스 ID : 12476

안녕하세요. 카카오 로그인 구현 중에 궁금증이 있어 질문 남깁니다. 토큰 발급 (REST API | Kakao Developers REST API) 을 할 때 access token 이 네트워크 응답으로 노출되는데 괜찮을지 궁금합니다.

예전에 이와 같은 답변을 확인했는데 js sdk 나 rest api 나 access token 이 네트워크 응답으로 노출되는 것은 동일한데 어떤 이유로 보안상 rest api 가 더 낫다고 하시는 걸까요?

안녕하세요.

앞선 안내에서

백엔드에서 REST-API로 액세스토큰 발급 하는 것을 권장드렸고

유저가 클라이언트를 통해 백엔드에 요청하고 백엔드 내부에서 카카오톡과 교신하면 네트워크 응답으로 노출될 수 없습니다.
제공하시는 백엔드 요청/응답만 노출되지요.

당연히 백엔드에서 격리하여 호출하는 것이 안전합니다.

accessToken 이 필요한 이유는 /v2/user/service_terms, /v2/user/me 와 같은 요청을 하려고 하는건데요. 유저 정보를 요청하는 과정도 백엔드에서 처리하는 것이 권장되는 것이죠?

네, 맞습니다.

액세스 토큰 발급 받은 이후, 카카오 KAPI와의 교신을 백엔드에 일임하고
프론트에는 결과만 전달하시는 것을 권장드립니다.

관련하여

"제23조의6(연계정보의 안전조치 의무 등) "조항이 포함된 정보통신망법 개정안 [2024. 7. 24. 시행] 국가법령정보센터 에 따라 /v2/user/me에서 전달하는 CI 항목도 서버to서버 CI 전송구간 HTTPS 적용하여 REST API로 백엔드에서만 사용해야합니다. (프론트 전달 불가)


참고. 본인확인서비스 이용기관 취약점 자체점검 체크리스트

https://identity.kisa.or.kr/web/main/bbs/guide/44?cp=1&sortOrder=BA_REGDATE&sortDirection=DESC&bcId=guide&baNotice=false&baCommSelec=false&baOpenDay=false&baUse=true

이해했습니다. 말씀해주신 CI 항목에 대해서도 확인해보도록 할께요.

그럼 js sdk 를 사용하여 사용자 정보 요청할 때는 어쩔 수 없이 accessToken 이 노출되는 구조인거죠? 토큰 할당을 할 때도 서비스 서버에서 accessToken 을 받아야하니까요. 이 경우에 보안을 높일 수 있는 방법은 어떤 것이 있을까요?

네, 프론트 웹브라우저에서 요청하는 것이므로 노출됩니다.

공개된 웹환경이라면
JS SDK로 사용자 정보를 요청 안하시는게 좋을 것 같은데요. 보안을 높히시려면 프론트에 관련 로직을 백엔드로 이관하시면 좋을 것 같습니다.

1개의 좋아요