안녕하세요
모바일 디바이스에서 소셜 플러그인 사용에 대한 궁금한 것이 있어 문의드립니다.
보통 카카오 게임들(또는 페이스북이나 기타 소셜 플러그인을 사용한 앱)은 카카오 계정으로 로그인하면 휴대폰을 바꿔가면서 사용해도 계정 데이터가 동기화 됩니다.
그 카카오 계정으로 사용자를 식별하기 때문일 겁니다. 사용자 입장에서는 굉장히 편하죠.
그런데 그 사용자 데이터는 카카오와 무관한 별도의 게임사 서버에 저장되어 있을테고,
게임 클라이언트나 서버에 입장에서는 해당 카카오 계정의 일반적인 정보만을 접근할 수 있고 비밀번호는 알 수가 없을 텐데요
게임 클라이언트가 서버에 계정 정보를 보내면서 자기의 데이터를 요청했을 때, 서버가 어떻게 그 사람이 정말 해당 카카오 계정의 사용자라는 걸 확인할 수 있냐 하는 것입니다.
오늘 오후에 몇 시간 생각을 해 봤는데..
제 결론은 "결!" (지니어스에서...) 없다는 겁니다.
제 판단이 맞는 걸까요?
일반적으로 자사의 아이디와 함께 비밀번호까지 입력받는 경우에는 그 비밀번호가 사용자의 고유의 것이고 다른 사람이 알 수 없는 것이라는 가정을 통해서 사용자를 식별할 수 있지만
앱에 소셜 플러그인을 사용하는 것은 해당 소셜 서비스에 로그인한 것이지, 그 소셜 플러그인 사용하는 앱에 입장에서는 그 사용자만의 고유의 비밀정보를 전혀 모르기 때문이죠.
만약, 어떤 사용자가 역공학등으로 로직을 알게 되었을 때, 다른 사용자의 아이디는 비밀정보가 아니기 때문에 그것을 이용하여 그 사용자의 데이터를 조작할 수 있게 됩니다.
대체할 수 있는 방법들을 생각해 보니 너무 취약하거나 불편한 것들 뿐이네요..
첫째, 임의로 고정된 비밀번호 할당하는 것은 모든 사용자가 같은 비밀번호를 공유하는 개념이라 너무 취약한 것 같고 (네트워크 상에서 안전하게 전송될 수 있다는 것과는 별개로...)
둘째, 사용자별로 난수를 생성해 비밀번호로 할당하고 클라이언트에 저장하는 것은 앱을 재설치 한다거나 할 때 저장된 정보가 없어지니까 너무 불편할 것 같고요 (다시 그 난수(비밀번호)를 서버에서 받아오기 위해 인증이 필요하다는 순환논리문제)
괜찮은 방법이 없을까요?