2012-05-04 3 views
5

OAuth 2.0 사양은 리소스 소유자 비밀번호 자격 증명 (예 : 사용자 이름 및 비밀번호)을 직접 권한 부여로 사용하여 액세스 권한을 부여하는 Resource Owner Password Credentials Grant Type을 정의합니다 토큰.Facebook 액세스 토큰을 OAuth2.0의 리소스 소유자 자격증 명으로 사용

사용자가 자격 증명을 직접 제공하는 대신 클라이언트에서 'Facebook을 통해 로그인'할 수있게하고 싶습니다. 클라이언트는 사용자의 Facebook 액세스 토큰을 인증 서버에 대한 액세스 토큰으로 교환 할 수 있습니다. 이 체계가 OAuth2의 틀에 들어 맞습니까?

답변

2

클라이언트는 사용자의 Facebook 액세스 토큰을 인증 서버의 액세스 토큰으로 교환 할 수 있습니다.

2 개의 인증 서버 (Facebook과 개인용) 중 두 가지를 염두에두고 있습니까? 그렇다면 - OAuth를 남용하고 대신 승인 코드 부여 체계를 사용해야합니다.

의 OAuth 2.0 사양 (V25)에서 그림 5에

당신은 워크 플로우 정의를 찾을 수 있습니다

  1. 리소스 소유자는 사용자 이름과 암호를 사용하여 클라이언트를 제공합니다.

  2. 클라이언트는 자원 소유자로부터 수신 한 신임을 포함하여 권한 서버의 토큰 엔드 포인트에서 액세스 토큰을 요청합니다. 요청을하면, 클라이언트는 권한 서 v로 인증합니다.

  3. 인증 서버가 클라이언트를 인증하고 자원 소유자 자격 증명의 유효성을 검사하고 유효한 경우 액세스 토큰을 발행합니다. 귀하의 사이트에 사용자를 기록하기 위해

    이 세 가지 일이 필요 :

페이스 북 http://developers.facebook.com/docs/guides/web/에서 인용 한 것입니다. 첫째, Facebook은 사용자를 인증해야합니다. 이렇게하면 사용자는 자신이 말하는 사람이됩니다. 둘째, Facebook은 귀하의 웹 사이트를 인증해야합니다. 이렇게하면 사용자가 자신의 정보를 다른 사람이 아닌 귀하의 사이트에 제공합니다. 마지막으로 사용자는 자신의 정보에 액세스하기 위해 웹 사이트를 명시 적으로 승인해야합니다. 이렇게하면 사용자가 자신의 사이트에 어떤 데이터를 공개하는지 정확히 알 수 있습니다.

두 경우 모두 하나의 인증 서버 (귀하의 경우에는 Facebook)가 있습니다.

+0

예, 실제로이 구성표에는 2 개의 인증 서버가 있습니다. 첫 번째는 API의 일부이고 두 번째는 FB입니다. 그래서 클라이언트가 이미 사용자의 FB 액세스 토큰을 가지고 있다면 토큰을 사용자의 자격 증명으로 사용할 수 있다고 생각했습니다. 로그인/패스 코드를 입력 할 필요가 없습니다. 그런 다음 인증 서버는 토큰이 유효한지 확인하고 새 토큰을 발행 할 수 있습니다 (자체 서버의 경우). 나는 이것이 의미가되기를 바란다 : –

+0

그리고 나는 나의 응답에서 Authorization Code Grant를 사용하는 것이 옳다는 것을 썼다. –

관련 문제