코드이그나이터 기반 PHP 오픈소스 게시판 : 씨아이보드

소셜 로그인에 관한 고찰

  • 관리자
  • 5
  • 10,013
  • 글주소
  • 09-16

소셜 로그인에 관한 고찰

 

씨아이보드는 이번에 프리미엄 버전에서 소셜 로그인 기능을 새롭게 추가하였습니다. 소셜 로그인 기능을 작업하면서 느낀 점을 몇자 적어보고자 합니다.

 

일단 소셜로그인이란 말의 정의부터 살펴보자면,  이미 기존에 가입되어 있는 소셜 (페이스북, 트위터, 구글 등) 웹사이트의 로그인 정보를 사용하여 해당 휍사이트에 로그인 계정을 얻게 되어 회원으로 접근할 수 있는 방법이라 할 수 있겠습니다. 

즉 다시 풀어 말하지면, 말 그대로 특별한 회원가입 절차 없이 이미 기존에 가입되어 있는 소셜 웹사이트의 회원의 아이디와 패스워드로 다른 사이트에 로그인할 수 있는 기능을 말합니다.

 

소셜 로그인 기능은 사용자와 관리자의 양 측면에서 여러가지 편리함을 주고 있습니다. 여러 가지 장점이 있지만, 오늘 이 글을 통해서 이야기하고 싶은 하나의 장점은, 내 개인정보를 많이 주지 않아도 된다는 것입니다. 

 

물론 지금은 상당히 줄었지만, 예전에는 주민등록번호를 받는 웹사이트가 많았습니다. 요즘은 개인정보 보호에 관한 관심도 많아지고 규정도 강화되어 감에 따라 주민등록번호를 받는 사이트는 거의 대부분이 없어졌지만, 아직도 회원가입시 휴대폰 인증, 아이핀 인증 등의 형식으로 운영하는 사이트에 내 민감한 개인정보를 입력해야 하는 경우가 더러 있습니다.

 

어디까지가 개인정보냐고 물은다면, 그 회원이 회원가입시 입력하는 모든 정보가 개인정보라고 할 수 있을 것입니다. 회원아이디, 패스워드, 이름, 닉네임, 이메일, 생년월일, 전화번호, 주소, 본인 소개 등 그 회원이 입력하는 모든 것은 그 회원에 관한 개인정보일 것입니다. 이러한 정보를 가입시 입력하지 않고서는 회원제 사이트를 전혀 운영할 수 없기에 회원가입시 개인정보를 주는 것은 불가피한 것이고 당연한 것이라 할 수 있습니다.

 

이 중 최소한의 정보라 함은, 그 회원에 대한 식별자(일반적으로 회원아이디나 이메일) 와 그 식별자를 내민 너가 정말 너냐! 를 검증하는 수단인 패스워드 정도가 되겠지요.

 

그 외에 회원에게 요구하는 다른 대부분의 정보는 회원에 대해 좀 더 자세히 알기 위한 추가 수단일 것입니다. 회원의 생년월일을 알게 됨으로서 연령 맞춤 서비스를 해줄 수 있는 것이며, 성별을 알게 됨으로서 여성이라면 여성화장품을 추천하는 사이, 남성이라면 남성화장품을 추천할 수 있는 쇼핑몰 사이트를 만들 수 있겠지요.

 

불과 며칠 전에, 큰 해킹 사건이 일어나 거대한 양의 개인정보가 유출되는 사고가 일어나고 말았습니다. 저도 이 사이트의 회원이었던지라, 마음이 상당히 불편했습니다. 그리고 제가 취하였던 행동은 제가 이 사이트에 입력했던 패스워드와 동일하게 입력했던 다른 사이트의 패스워드를 바꾸는 일이었습니다.

 

이미 그 사이트에 입력한 내 정보가 털린 상황에서, 그 털린 정보를 다시 거두어들일 수는 없기에, 그 사실은 받아들인 상태에서 제가 가장 두려웠던 것은 같은 아이디와 패스워드로 가입한 다른 사이트의 정보는 털리지 말자는 것이었습니다. 상당히 많은 사이트의 회원인 내가 모든 사이트의 패스워드를 다 다르게 입력하여 관리한다는 것은 핑계일지 모르나 제 한계가 있다고 판단하였고, 그래서 어느 정도 몇개의 패스워드 종류로 묶어놓고 관리를 해왔었습니다. 

 

일단 회원아이디부터가 여러 개라 햇갈립니다. 어떤 곳에서는 회원아이디 최소 요구 글자가 3글자입니다. 그래서 3글자짜리 아이디를 등록했습니다. 짧은 아이디를 등록하니 기분이 좋았습니다. 다른 사이트에 갔습니다. 그랬더니 거기는 최소 요구 글자가 4글자입니다. 그래서 그냥 평소에 제가 쓰던 7글자의 회원아이디로 가입했습니다. 또다른 사이트에 가입할 일이 생겼습니다. 평소에 쓰던 7글자로 회원아이디를 생성하고 싶었습니다. 이런, 중복확인에서 걸립니다. 다른 누군가가 내가 평소에 쓰던 아이디를 써버렸습니다. 아.. 혹시 내가 예전에 이 사이트를 가입한 적이 있었던가 잠시 했갈립니다. 그래서 그 아이디와 평소에 자주 쓰던 패스워드로 로그인을 시도해봅니다. 패스워드가 일치하지 않습니다. 아이디/패스워드 찾기를 누릅니다, 좋아하는 동물이 뭐냐고 물어옵니다. 기억이 잘 나지를 않습니다. 고양이 라고 입력해봅니다. 틀렸답니다. 제길, 그냥 제가 자주 쓰던 아이디에 맨 뒤에 숫자 1을 붙여서 새로 가입합니다. 다른 사이트에 방문합니다. 패스워드를 바꾼지 3개월이 지났으니 패스워드를 바꾸랍니다. 이 사이트는 패스워드에 특수문자도 넣으랍니다. 제길, 평소에 쓰는 패스워드에는 특수문자가 없는데… 내가 기억해야할 아이디와 패스워드 개수가 계속 늘어갑니다.

 

많은 분들의 고민일 것입니다. 점점 늘어나는 아이디와 패스워드의 관리, 어디에 적어놓자니, 그 적어놓은 곳이 털리면? 적어놓은 곳이 만약 종이라면, 그 종이를 잃어버린다면?, 내 노트북의 메모장이라면, 노트북을 잃어버린다면? 이런 저런 이유에서 아이디와 패스워드의 관리는 쉽지 않습니다.

 

소셜로그인 기능은 이런 면에서 좋은 기능을 발휘한다고 생각합니다. 내가 가입하고 싶은 사이트에 또 다른 패스워드를 내밀 필요가 없습니다. 나는 그저 내가 자주 사용하는 소셜웹사이트의 아이디와 패스워드만 기억하고 있으면 됩니다. 물론 그 소셜 웹사이트가 해킹당하면 큰일 나겠지만, 아무래도 매우 크고 유명한 기업들이니 그 큰 소셜 웹사이트들은 내 패스워드를 잘 보호해줄 것이라는 믿음이 사용자들 안에 있을 것입니다. 그래서 본인부주의만 아니라면 그 패스워드는 털릴 일이 거의 없을 것입니다. 

 

사실 소셜로그인의 기능이 해당 웹사이트에 아무 정보도 주지 않는 것은 아닙니다. 아무 정보도 주지 않는다면, 어찌 회원을 구분할 수 있으리요. 각 소셜별로 약간씩 다르지만, 이름, 닉네임, 이메일, 소셜 주소 등을 해당 웹사이트에 제공합니다. 그런데 일부 사용자들은 본인의 정보를 준다는 사실을 잘 알지 못합니다. 사용자 입장에서는 본인의 정보를 안준다고 착각할 수 있겠지만, 사실은 하나의 소셜 계정으로 그 회원이 사용하는 모든 사이트가 단단히 묶여있는 상황이라고도 볼 수 있을 것입니다. 그런 면에서 이 주제의 시작 부분에 장점이라고 언급했던 개인정보를 많이 주지 않아도 된다는 말이 틀린 셈입니다. 관점의 차이겠지요.

 

또 다른 이야기입니다. 소셜 로그인을 제공하는 서비스가 그리 많지 않지만 그래도 몇개 되다 보니, 이것도 햇갈립니다. 어떤 사이트는 카카오 로그인을 지원해서, 카카오로 로그인합니다. 다른 사이트에 방문하였더니 그 사이트는 해외 사이트라 카카오 로그인은 지원하지 않고 대신 페이스북 로그인을 지원합니다. 그래서 페이스북 로그인을 이용해 로그인을 합니다. 또 다른 사이트에 방문합니다. 처음 방문할 당시에는 트위터 로그인만 지원하였기에 트위터 로그인으로 활동하였습니다. 나중에 같은 사이트를 방문하였더니 페이스북 로그인을 지원하기에 이제는 페이스북 계정을 통한 로그인을 합니다. 그랬더니, 그 동안 트위터 계정으로 로그인해서 활동했던 나의 활동 내역은 전혀 찾아볼 수 없습니다.

 

위에 예를 들었던 이야기를 읽어보시면서 이 정도는 사이트별로 기억을 해줘야하는 것이 아니냐고 반문하시는 분도 있겠지만, 좀 더 편해지자는 문화 때문에 일어난 일이 아닐까 합니다. 예전에는 웬만한 전화번호는 모두 외웠지만, 이제는 부모님 전화번호도 제대로 못외우는, 스마트폰의 편리함이 낳은 다른 면과 비슷한 것이겠지요.

 

그래서 소셜계정 통합에 관한 이슈도 쟁점입니다. 어떤 사용자가 한 사이트에 트위터 계정을 통해 가입했었는데, 또 나중에는 페이스북 계정으로 가입합니다. 2개의 계정으로 운영하던 나의 정보를, 트위터로 로그인하던 페이스북으로 로그인하던 같은 회원으로 인식되게 해달라는 요청인 것입니다.

 

소셜 통합 문제, 사실 이 문제는 꽤 복잡하다고 생각합니다. 통합이라는 말의 의미가 정확히 어디까지 통합해야 진정한 통합인 것인가에 대한 것 말이죠. 다시 위의 예를 좀 더 구체화해보겠습니다. 한 회원이 2개의 계정을 통해 한 사이트에 가입했습니다. 트위터로 로그인한 상태에서 10일간 총 20개의 글을 작성했습니다. 그리고 페이스북으로 로그인해 5일간 총 15개의 글을 작성했습니다. 그런데 이 2개의 계정을 통합한다고 할 때, 즉, 트위터로 로그인하거나, 페이스북으로 로그인했을 때 같은 마이페이지를 보여준다고할 때, 본인이 작성한 글이 총 35개가 있다고 보여주면 될 것입니다. 여기까지 하는 것이 통합이라면 개발자 입장에서 통합 기능을 구현해볼만합니다. 그런데 여기서 조금 더 나아가, 스크랩한 글들 모음, 친구 추가했던 리스트 모음을 통합하자면 좀 더 복잡해집니다. 사이트의 기능이 복잡하면 복잡해질수록 통합은 점점 더 힘들어질 듯 합니다. 쇼핑몰을 예로 들면, 저장해놓은 배송주소를 어디까지 통합할 것인가, 구매목록은 어디까지 통합할 것인가, 그동안 모아놓은 포인트는 어떻게 통합할 것인가.

 

사용자 입장에서는 뭐 그냥 통합하면 되는거 아니냐고 쉽게 답하실 수 있지만, 개발자들에게는 커다란 숙제가 아닐 수 없습니다. 이에 대한 고민은 좀 더 깊이, 진지하게 되어야할 듯 합니다.

 

이상으로 이번에 소셜 로그인 기능을 개발하면서 느꼈던 점을 간략히 요약해보았습니다.

 

씨아이보드는 이번에 소셜 로그인 기능을 배포하게 되었습니다. 그냥 소셜 로그인하는 기능을 만드는 것이야 쉽지만, 소셜계정 통합의 면에서 디비 테이블을 어떻게 구성하는 것이 좋을지 고민을 많이 하였습니다.

 

씨아이보드 솔루션도 다른 그누보드 ( http://www.sir.co.kr ) 나 XE ( http://www.xpressengine.com/ ) 처럼, 회원 아이디, 패스워드, 이메일, 닉네임 또는 이름을 기본적으로 받는 인터페이스입니다. 그런데 소셜 로그인 기능을 구현하려다 보니, 방금 전에 언급했던 필드들을 어떻게 처리해야 좋은 것인가에 대해 고민을 많이 하였습니다. 

 

회원아이디 - 회원 아이디를 빈 값으로 둘 수는 없었습니다. 회원아이디는, 프로필페이지나, 쪽지 발송시에 사용되고 있었기에, 소셜계정에서 넘겨받은 정보를 기반으로 임의의 값을 생성하여 넣었습니다.

 

패스워드 - 아이디/패스워드로 로그인하는 인터페이스를 사용하지 않을 것이기에 패스워드를 기본값으로 입력하지 않았습니다.

 

닉네임 - 닉네임도 회원아이디와 마찬가지로 소셜에서 넘겨받은 데이터를 기반으로 생성하여 넣었습니다. 회원아이디와 닉네임은 모두 넘겨받은 데이터로 입력하되 중복체크를 하여 중복되지 않게 임의의 숫자를 뒤에 추가하여 디비에 넣었습니다.

 

이메일 - 어떤 소셜은 이메일 정보를 넘겨주고, 어떤 소셜은 넘겨주지 않습니다. 이에 일괄적으로 이메일 정보는 빈값으로 두기로 했습니다. 만약에 소셜에서 넘겨준 이메일을 회원 테이블의 이메일란에 넣을 경우는 또 중복확인의 문제가 발생합니다.

 

계정 통합 - 회원정보 수정하는 페이지에서 계정을 통합하는 기능을 일부 구현하였습니다. 일반회원으로 로그인하여 개인정보 수정페이지에서 5종류의 소셜을 연동할 수 있습니다. 연동된 계정으로 로그인시 같은 유저로 활동할 수 있습니다.

 

작은 고민의 결과를 위에서 나열하였는데, 앞으로 더 고민하고 더 좋은 인터페이스로 계속 업그레이드 해가겠습니다.

 

감사합니다.