Я хочу использовать Facebook в качестве источника аутентификации для пользователей моего приложения (веб-сайта). Я не хочу, чтобы у моего приложения были какие-либо права, кроме базовых и электронной почты. Таким образом, мое приложение не должно быть в состоянии опубликовать, например, на стене пользователя. Другими словами, я хочу ограничить допустимый набор значений для параметра области и хочу, чтобы это ограничение появлялось на страницах конфигурации приложения (на самом сайте Facebook).
Обычно это было бы легко, просто укажите «email» для параметра области действия URL / вызова OAuth.
Однако в этом случае есть еще один фактор, а именно: хакер может получить доступ к приложению и изменить вызов OAuth, чтобы указать больше разрешений. Тогда ничего не подозревающий пользователь обычно (или, по крайней мере, возможно) предоставит эти разрешения, и хакер сможет получить токен OAuth и выполнить действия от имени этого пользователя.
Мне не интересно обсуждать причины этой проблемы, просто выяснить, есть ли способ указать, что мое приложение может использовать только определенный набор значений для параметра области. В идеале эта спецификация ограничения области должна быть сделана на странице конфигурации приложения на самом Facebook.
Однако меня интересуют альтернативные решения, которые включают использование SAML, OpenID или какого-либо другого механизма проверки подлинности (даже если я не могу получить адрес электронной почты пользователя). Я не заинтересован в использовании RPX.
Обратите внимание: это сложный вопрос, а не простой. Я искал ответ повсюду и только что нашел противоположность этому вопросу.