로그아웃 후 인증코드 받기 api 호출하면 왜 로그인창이 안뜰까요?

로그아웃을 성공적으로 하고 잘 response를 받아 왔는데 그 이후 인증코드 받기 api를 호출하면

권한동의 화면이 바로 뜹니다. 자동으로 로그인이 되었다는 소리겠죠.

제 생각엔 로그아웃을 했기 때문에 로그인 화면을 거쳐야 할 거 같은데 바로 권한동의 화면으로

이동을 하는데 제가 뭘 잘못했을까요?

예상 자답입니다.

로그인화면은 카카오의 화면을 브라우저에 나타내고 로그인 이후 쿠키를 통해 로그인부분을 처리하는 것으로 보입니다.

쿠키가 있는 브라우저에선 쿠키를 통해 자동로그인처리되지만 로그아웃 호출은 화면을 통한 처리가 아니기 때문에 로그아웃을 호출해도 브라우저에 쿠키는 여전히 존재합니다.

이 문제의 애초 문제점은 로그인/아웃 프로세스에 대한 화면구성이 잘못된 문제인 것으로 보입니다.

카카오측의 답변 부탁드립니다.

1개의 좋아요

:slight_smile: 정확한 예측이십니다.
다만, 해당 동작은 오류는 아니고 사실 의도된 플로우 동작입니다.
Third 앱에서 시작한 로그인 화면을 유심히 살펴보시면 카카오의 계정 통합 로그인으로 유도되는것을 짐작하실 수 있습니다.
즉, 로그인 처리를 카카오의 통합 계정 시스템으로 연동합니다. 이렇게 하는 이유는 카카오의 다른 서비스들과의 연동을 쉽게하며, 사용자의 보안적 측면을 강화하기 위함입니다.

그렇다면 로그아웃을 하였는데 왜 해당 통합 로그인 쿠키(토큰)을 지우지 않는가?
요것은 카카오계정으로 연결된 다른 서비스를 이용할 때 사용자에게 보다 편리한 플로우를 제공하기 위함입니다. 물론 tight하게 Thrid 앱의 로그아웃시 카카오계정의 로그아웃까지 진행할 수도 있지만, 만약 카카오 계정으로 연결된 다른 앱 또는 다른 카카오서비스 이용시 다시 사용자에게 로그인 프로세스를 태우는것보다, 카카오계정을 통해 인증된 유저일 경우 바로 서비스를 연결해 주기 위함입니다. 카카오계정으로 연결된 여러 서비스들의 single signon 개념으로 생각하시면 이해가 쉬우실것 같습니다.

정리를 하자면, 로그인의 경우 사용자에게 최대한 빠르고 쉽게, 안전히 제공하면서, 타 서비스의 영향도를 최소화 하되, 로그아웃의 경우 해당 Third 앱만의 로그인 세션을 끊는 개념입니다.
각기 장단점이 있지만 현 동작이 사용자에게 보다 의미있다고 생각되었기 때문입니다(물론 원하시는 동작을 할 수 있도록 제공할 수도 있는 여지는 여전히 존재합니다. :wink:)

도움이 되시면 좋겠네요!

1개의 좋아요

마지막 말씀 "원하는 동작을 할 수 있도록 하는 방법"은 어떤게 있을 수 있나요?

스마트폰은 개인이 사용하다보니 그런 보안적인 부분에 대해서는 전적으로 개인이 책임져야 할 문제이지만

웹상에서 이루어지는 서비스는 간혹 피시방에서 공공장소에서 로그인을 할 수도 있습니다 이같은 경우

쿠키삭제를 비롯한 로그아웃이 전제 되지 않는다면 서비스에 큰 결함을 초래할수 있지 않을까 싶습니다

참고로 저는 리눅스/php 기반으로 서비스하고 있습니다.

@openerzone @by
Javascript SDK를 이용하여, Kakao.Auth.logout을 호출하면 카카오 로그인 쿠키를 삭제할 수 있습니다.

REST API를 사용하는 사람은 어떻게 쿠키를 제거 할수 있죠?
PHP를 이용하고 있습니다.