커뮤니티를 구축중인데요
앱에서 로그인해서 accToken을 웹서버로 넘겨서
웹서버에서 accToken을 가지고 사용자 정보 요청을 했더니 권한이 없다면서 안되더군요.
아마 플랫폼별로 accToken이 다른거 같은데
이럴 경우 로그인을 android SDK가 아닌 웹뷰를 통해서 인증을 진행해야하는 것인가요?
만약 그런것이라면 사용자관리 SDK는 무용지물아닌가요?
소스가 모두 디컴파일되는 안드로이드에서 세션이 무슨 소용이죠?
서버에서 세션을 관리할 수 있어야 하는거 아닌가요?
예를 들어 안드로이드에서 로그인을 해서
웹서버에 글을 남기려고 할 때
웹서버가 이 사용자의 세션이 유효한지 판단을 내릴 수 있는 장치가 필요한거 아닌가요?
제가 방법을 모르고 있는건가요?
아래의 토픽이 혹시 도움이 되실지 모르겠습니다.
https://devtalk.kakao.com/t/topic/4000
플랫폼별로 다르게 access token을 관리하는 것은 보안적으로 안전하게 접근하려다보니 사용성에는 불편함이 좀 있는것 같습니다.
이론상으로 타플랫폼 access token으로 API 호출은 가능하지만, access token의 경우 유효기간을 짧게 발급하기에 재갱신시에는 타플랫폼에서 여러 어려움이 있을것 같네요. 따라서 같은 플랫폼으로 token을 사용하시는것을 권장 드립니다~
@copiny7 추가적으로 unlink관련 내용의 문의를 받은것이 있어서 관련하여 좀 더 설명드릴께요.
access token을 플랫폼별 쉐어 하였을 경우라 하더라도, access token이 상징하는 user는 같은 user입니다.
예를들어 웹(Javascript, REST API)에서 unlink를 수행하였다면, 해당 앱에 대해 해당 user는 쉽게 탈퇴와 비슷한 상황이 됩니다.
이때, 안드로이드등에서 다른(또는 같은) 유효한 access token이 존재하였다면, api 호출시 error가 발생되게 됩니다. 예를들어 다음 링크의 에러코드 중 -101 등의 응답을 받으실 수 있습니다.
https://dev.kakao.com/docs/restapi#간편한-참조-응답-코드
이때 해당 앱은 에러가 발생할 경우의 뒷처리가 구현되어야 합니다(예를들어 로그인 화면등으로 이동 등).
그외 첫 질문에 세션, token등이 디컴파일되는 안드로이드 환경에서 취약하지 않느냐는 질문이 있었는데요, 좋은 질문 같아요.
얼마든지 맘만 먹으면 token등이 탈취되고 악용될 수 있는데요, 모바일 환경의 경우 그나마 쉬운일은 아니고, 토큰이 탈취되더라도 플랫폼 별 짧은 expire 정책으로 보안을 유지하고 있습니다. 또한 앱 생성시, 플랫폼 별 기본 설정등을 받고 있는데요, 이를 통해서도 추가 보안 장치가 걸려있습니다. 단지 토큰만 탈취되더라도 발생할 수 있는 이슈를 최소한으로 줄이기 위해서요~
이외에 refresh token개념이 존재하는데, 이는 말씀하신대로 웹의 경우 server-side에서만 재갱신할 수 있도록 되어 있습니다.
도움이 되시면 좋겠습니다. 이외의 다른 문제점이나 혹시 이해가 안되시는 부분이 있다면 편하게 계속 문의해 주세요!
감사합니다~
제가 말한 보안이 취약하다는 의미가 단순히 토큰문제가 아닙니다.
지금의 유저관리 android SDK는 반쪽짜리입니다.
카카오스토리나 그외에 카카오 플랫폼에 연계된 앱을 개발할 때는 문제가 되지 않지만
현재 자체 커뮤니티에서 유저관리 부분만 카카오톡으로 관리하고 싶을 경우
android SDK는 무용지물이라는 얘기입니다
웹서버에서는 안드로이드에서 인증한 내용을 확인할 길이 없기 때문이죠
1개의 좋아요