2

Javascript를 사용하여 Facebook 로그인 기능을 사용하여 웹 응용 프로그램에 사용자를 등록한 다음 사용자 정보를 응용 프로그램의 서버 측으로 전달하려고합니다. 이제이 사용자로 나중에 로그인 할 수 있도록 정보를 저장해야합니다. 하지만 암호없이 끝내야 만합니다. 사용자를 인증하기 위해 암호 대신 응용 프로그램의 db에 저장해야하는 것은 내 보안을 우회하려고하는 사람이 아니라고 주장하는 사람입니다. 첫 번째 생각은 Facebook 사용자 ID를 저장하여 사용자를 인증하는 것이지만 안전하다고는 생각하지 않습니다. 좋은 생각입니까 아니면 나쁜 것입니까? 필요한 것을 수행하는 또 다른 방법이 있습니까?Facebook 로그인을 사용하여 등록 된 사용자를 어떻게 식별해야합니까?

답변

3

developers.facebook.com에서 Facebook의 OAuth 예제를 따르는 것이 좋습니다.

나는 OAuth 작업을 한 지 오래되었지만, 기억하는 바에 따르면 Facebook은 사용자가 지정한 서버에 대한 콜백을 실행합니다. Facebook이이 콜백을 호출하면 액세스 토큰을 제공합니다. 그런 다음이 액세스 토큰을 사용하여 사용자에 대한 정보 (예 : 이메일, 이름, 성)를 가져올 수 있습니다.

이 콜백을 호출 할 때 수행 할 작업을 결정해야합니다. 아마도 사용자의 전자 메일 이름과 이름을 가져 와서 백엔드에 계정이없는 경우 사용자를 자동으로 생성합니다. 일치하는 계정을 찾은 경우 (이메일을 통해) 계정에 로그인하면됩니다 (사용자의 비밀번호를 저장할 필요가 없음). Facebook이 사용자와 유사한 고유 한 액세스 토큰을 제공하고 있기 때문에 서버가이 액세스 토큰을 기반으로 이메일을 가져오고 있기 때문에이 접근법에 대해 실제로 걱정할 사항은 없다고 생각합니다. 누군가가 이것을 해독 할 수있는 유일한 방법은 사용자의 액세스 토큰을 보유하고있는 경우입니다 (SSL 사용을 전제로).

누군가가 Facebook이나 다른 접근 방식을 사용하여 계정을 만들었는지 확인하려면이 정보를 나타내는 "사용자"테이블 아래에 열을 만듭니다.

+0

안녕하세요, Brian이 답장을 보내 주셔서 감사합니다. 귀하가 말한 모든 내용에 동의하지만 여전히 나에게 불분명합니다. Facebook에 로그인 할 때마다 바뀌기 때문에 Facebook 사용자 액세스 토큰을 저장할 수 없습니다. 내가 Facebook으로부터의 나의 요청으로부터 얻는 유일한 상수 매개 변수는 페이스 북 사용자의 사용자 ID이지만, 나는 사용자 ID를 사용하여 나의 사용자를 식별하고 싶지 않을 것이다. (암호 대신 기억하자.) 나는 그렇지 않다. Facebook 사용자 ID가 충분히 안전하여 신뢰할 수있을 것입니다. 왜냐하면 누군가가 사용자 ID를 발견 할 수 있었기 때문에 내 응용 프로그램 사용자가 volunrable 이었기 때문입니다. –

+0

예, 액세스 토큰을 데이터베이스에 저장하지 않으려합니다. 사용자에게 이메일을 고유하게 식별하는 방법이나 Facebook 사용자 ID를 말한 방법이 필요합니다. 사용자 ID를 쉽게 검색 할 수는 없지만 고유 ID가 발견 되더라도 여전히 안전하도록 응용 프로그램을 설계해야합니다. –

+0

질문은 페이스 북이 사용자 ID를 보호하므로 의존 할 수 있습니까? 페이스 북이 사용자 ID를 어떤 식 으로든 공개한다면 나는 망했다. –

0

Javascript SDK를 사용하여 Facebook 로그인을 구현 했으므로 몇 가지 조사를해야했습니다.
그래프 API 2.0, 당신은 더 이상 사용자의 주요 ID를받을 수 없지만, a scoped id which is unique per app : 사람들이 처음의 인스턴스로 를 로그인 할 때

페이스 북 앱 범위의 사용자 ID를 발급하기 시작됩니다 API의 v2.0에 대해 코딩 된 앱입니다. 앱 범위 ID가 인 경우 앱간에 동일한 사용자의 ID가 달라집니다. 당신이 그래프 API를 통해 사용자를 가지고있는 경우 < 2.0 그들은 여전히 ​​주요 ID를 가지고

이가 호환이므로주의 해주십시오.

보안 관점에서 보면 범위가 지정된 ID는 외부인이 액세스 할 수없는 것처럼 보였기 때문에 약간 변경되었습니다. 이것은 누구나 공개적으로 사용할 수있는 기본 Facebook ID와는 대조적입니다.

그렇다고하더라도이 새로운 범위 지정 ID를 비밀번호 대체로 사용하지 않는 것이 좋습니다.

  1. 페이스 북은 진정한 임의 ID인지 여부에 대한 정보를 제공하지 않습니다. 어쩌면 해커가 악용 할 수있는 패턴을 생성하기 위해 어떤 패턴을 사용했을 수도 있습니다.
  2. Facebook은 아무도이 ID가 비밀이라고 말하지 않습니다. 공용 Graph API 호출이 사용자의 범위가 지정된 ID 목록을 반환하는 것이 좋습니다.
  3. ID가 고유하고 비밀 인 경우에도 데이터베이스에 일반 텍스트로 저장하므로 데이터베이스에 액세스 할 수있는 모든 사용자가 사용자의 신원을 도용 할 수 있습니다. 이것을 소금에 절인 암호 해시와 비교하십시오.
+0

ID가 순차적인지, 숨김인지, 공개인지 여부는 중요하지 않습니다. 중요한 것은 당신이 그것을 얻는 방법입니다. 사용자가 자신의 ID를 전송하도록 신뢰한다면, 그렇지 않습니다. 완전히 안전하지 않습니다. 그러나 사용자가 Facebook에서 직접 제공하거나 액세스 토큰을 교환하여 얻은 경우 (해당하는 경우) 해당 ID를 사용하면 사용자를 식별 할 수있는 완전히 유효한 방법입니다. – Nepoxx

관련 문제