Как ограничить допустимый набор разрешений для параметра «Область» OAuth (ограничение области) - PullRequest
0 голосов
/ 03 апреля 2012

Я хочу использовать Facebook в качестве источника аутентификации для пользователей моего приложения (веб-сайта). Я не хочу, чтобы у моего приложения были какие-либо права, кроме базовых и электронной почты. Таким образом, мое приложение не должно быть в состоянии опубликовать, например, на стене пользователя. Другими словами, я хочу ограничить допустимый набор значений для параметра области и хочу, чтобы это ограничение появлялось на страницах конфигурации приложения (на самом сайте Facebook).

Обычно это было бы легко, просто укажите «email» для параметра области действия URL / вызова OAuth.

Однако в этом случае есть еще один фактор, а именно: хакер может получить доступ к приложению и изменить вызов OAuth, чтобы указать больше разрешений. Тогда ничего не подозревающий пользователь обычно (или, по крайней мере, возможно) предоставит эти разрешения, и хакер сможет получить токен OAuth и выполнить действия от имени этого пользователя.

Мне не интересно обсуждать причины этой проблемы, просто выяснить, есть ли способ указать, что мое приложение может использовать только определенный набор значений для параметра области. В идеале эта спецификация ограничения области должна быть сделана на странице конфигурации приложения на самом Facebook.

Однако меня интересуют альтернативные решения, которые включают использование SAML, OpenID или какого-либо другого механизма проверки подлинности (даже если я не могу получить адрес электронной почты пользователя). Я не заинтересован в использовании RPX.

Обратите внимание: это сложный вопрос, а не простой. Я искал ответ повсюду и только что нашел противоположность этому вопросу.

1 Ответ

0 голосов
/ 03 апреля 2012

Я почти уверен, что невозможно ограничить область действия на уровне конфигурации приложения.

Я бы сказал, что самым аккуратным обходным решением было бы запрашивать разрешения пользователя при регистрации, проверять, соответствуют ли они разрешенным разрешениям, и подписываться на (обновления разрешений в реальном времени) [http://developers.facebook.com/docs/reference/api/realtime/]. Ваше приложение будет уведомлено о любых изменения в разрешениях, предоставленных пользователям.

Это должно позволить вам блокировать любые вызовы API на стороне сервера через логику приложения или (запретить) [https://developers.facebook.com/docs/reference/api/application/#banned] пользователя, который увеличивает разрешения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...