2012-04-03 3 views
0

내 응용 프로그램 (웹 사이트) 사용자의 인증 소스로 Facebook을 사용하고 싶습니다. 내 응용 프로그램에 기본 권한과 전자 메일 권한 만 있으면 안됩니다. 따라서 내 응용 프로그램은 예를 들어 사용자의 벽에 게시 할 수 없어야합니다. 즉, scope 매개 변수의 허용 가능한 값 집합을 제한하고 싶습니다.이 제한을 응용 프로그램의 구성 페이지 (Facebook 사이트 자체)에서 발생 시키겠습니다.OAuth 'scope'매개 변수 (허용 범위)에 대한 허용 가능한 권한 설정을 제한하는 방법

일반적으로 OAuth URL/call의 범위 매개 변수에 '이메일'을 지정하면 쉽게 처리 할 수 ​​있습니다.

그러나이 경우에는 또 다른 요소가 있습니다. 해커가 앱에 액세스하여 OAuth 호출을 변경하여 더 많은 권한을 지정할 수 있습니다. 그런 다음 의심하지 않는 사용자가 일반적으로 이러한 권한을 부여하고 해커가 OAuth 토큰을 가져 와서 해당 사용자를 대신하여 작업을 수행 할 수 있습니다.

저는이 문제에 대한 논의에 관심이 없습니다. 단지 내 응용 프로그램이 scope 매개 변수의 특정 값 집합 만 사용할 수 있도록 지정하는 방법이 있습니다. 이상적으로이 스코프 제한 사양은 Facebook 자체의 응용 프로그램 구성 페이지에서 수행해야합니다.

그러나 SAML, OpenID 또는 다른 인증 전용 메커니즘 (사용자 이메일 주소를 얻을 수없는 경우에도)을 사용하는 대안 솔루션에 관심이 있습니다. RPX 사용에 관심이 없습니다.

참고 :이 질문은 간단한 질문이 아닙니다. 나는 답을 찾기까지 광범위하게 수색했으며,이 질문과 반대되는 것을 발견했다.

답변

0

응용 프로그램 구성 수준에서 범위를 제한 할 수 없다고 확신합니다.

가장 간단한 해결 방법은 가입시 사용자의 사용 권한을 쿼리하고 허용 된 사용 권한과 일치하는지 확인하고 (사용 권한 실시간 업데이트) [http://developers.facebook.com]에 가입하는 것입니다./docs/reference/api/realtime /]에 있습니다. 앱에 사용자에게 부여 된 권한 변경 사항에 대한 알림이 전송됩니다.

이렇게하면 응용 프로그램 논리를 통해 서버 측 API 호출을 차단하거나 사용 권한을 상승시키는 사용자 ([https://developers.facebook.com/docs/reference/api/application/#banned])를 차단할 수 있습니다. .

+0

흥미로운 아이디어입니다. 실시간 문서를 보면 사용자가 변경 사항을 요청하지만 사용자가 애플리케이션을 처음 승인 한 것은 아닙니다. –

+0

/me/permissions를 사용하여 처음 확인할 수 있습니다. 따라서 그들이 정확한지 확인하고 실시간으로 올바른 상태를 유지할 수 있습니다. –