목표 : 사용자가 Facebook을 사용하여 내가 실행중인 보호 된 웹 서비스에 액세스해야하는 iOS 응용 프로그램으로 인증 할 수 있도록합니다.
가정 : 로그인에 Facebook을 사용하지 않는 사용자를위한 기본 인증 (및 등록) 시스템이 있습니다.
세부:
- 시스템에 별도의 계정 / 자격 증명을 만들지 않고 사용자가 Facebook에 로그인 할 수있는 옵션을 제공한다고 가정합니다.
- 자체 고유 인증 메커니즘 (사용자 이름 및 비밀번호)을 지원하므로 고유 한 사용자 ID가 있으며 초기 신임 정보 유효성 검증 후 후속 상호 작용에 사용되는 인증 토큰을 발행합니다.
Facebook의 개발자 설명서에 Facebook에 대한 모범 사례가 없다는 것에 놀랐습니다. 기존의 모든 문서는 웹 사이트에 FB 인증을 구축한다고 가정하거나 인증이 필요한 서비스가없는 독립형 모바일 앱입니다.
이것이 어떻게 설계 될지에 대한 나의 초기 생각은 있지만 그것이 옳은지에 대한 검증을 원합니다.
- 클라이언트가 Facebook iOS 로그인 팝업
- UI 사용자가 Facebook 자격 증명으로 로그인하고 액세스 토큰을 얻습니다.
- iOS 앱이 서버에 액세스 토큰을 전달합니다
우리 서버는 (a) 토큰의 유효성을 검사하고 (b) 해당 액세스 토큰의 FB 사용자 ID를 얻기 위해 액세스 토큰을 사용하여 FB 그래프 API와 통신합니다.
예 : Google 서버는 https://graph.facebook.com/me/?access_token=XYZ 를 호출 하여 JSON 객체에 프로필 정보를 반환합니다.
서버가 유효하다고 가정하면 Google 서버는 JSON 객체에서 사용자 ID를 추출하여 사용자에게 이미 계정이 있는지 확인합니다. 그렇다면 해당 세션에 사용할 수 있도록 자체 인증 티켓을 고객에게 발급합니다. 사용자가 계정이없는 경우 Facebook 사용자 ID로 새 계정을 만들고 고유 한 UserID를 할당하고 인증 티켓을 발급합니다.
- 그런 다음 클라이언트는 인증이 필요한 후속 상호 작용에서 인증 티켓을 다시 전달합니다.
이것은 나에게 올바른 접근 방법처럼 보이지만 내가 미친 듯이 기본적인 것을 놓치고 잘못된 (복잡한) 길을 가고 있는지 확실하지 않습니다.